随笔分类 -  Beetle

高性能的Tcp通讯组件
摘要:限流和缓存是网关中两个非常重要的功能,前者是保障服务更可靠地运行,后者则可以大大提高应用的吞吐能力。Beetlex.Bumblebee微服务网关提供了两个扩展插件来实现这两个功能,分别是BeetleX.Bumblebee.ConcurrentLimits和BeetleX.Bumblebee.Cach 阅读全文
posted @ 2019-10-14 10:59 beetlex 阅读(1062) 评论(4) 推荐(3) 编辑
摘要:对于微服务网关来说,统一请求验证是一个比较重要和常用的功能,通过网关验证后台服务就无须关注请求验证;对于多语言平台的服务而言制定验证方式和变更验证配置都是一件比较繁琐和工作量大的事情。Bumblebee提供JWT验证插件,只需要简单配置即可让网关实现请求统一验证。 引用插件 Bumblebee中使用 阅读全文
posted @ 2019-10-09 08:21 beetlex 阅读(1205) 评论(0) 推荐(3) 编辑
摘要:Bumblebee是款基于.net core开发开源的http服务网关,经过最近版本的完善在功能足以满足作为微服务网关的需要。在微服务网关功能中它提供了应用服务负载,故障迁移,安全控制,监控跟踪和日志处理等;不仅如此它强大的插件扩展功能,可以针对实业务情况进行不同的相关插件应用开发满足实际情况的需要 阅读全文
posted @ 2019-10-06 16:39 beetlex 阅读(2441) 评论(15) 推荐(9) 编辑
摘要:在编写服务应用框架的时候一般都需要进行性能测试,但自己测试毕竟资源受限所以很难做更高性能上的测试。其实GitHub上有一个项目可以让开发人员提交自己的框架服务代码然后进行一个标准测试;现在已经有上百个框架提交了相关测试代码,包括netty(java),aspcore(.netcore)和swoole 阅读全文
posted @ 2019-08-08 11:13 beetlex 阅读(1628) 评论(0) 推荐(1) 编辑
摘要:Actor是一种高并发处理模型,每个Actor都有着自己的状态有序消息处理机制,所以在业务处理的情况并不需要制定锁的机制,从而达到更高效的处理能性。XRPC是一个基于远程接口调用的RPC组件,它可以简单地实现高性能的远程接口调用;XRPC在创建远程接口时是支持针对接口创建对应的Actor实例。当创建 阅读全文
posted @ 2019-05-29 09:26 beetlex 阅读(1847) 评论(5) 推荐(8) 编辑
摘要:XRPC的目标非常明确,就是给.net core平台实现一个百万级别的远程方法调用RPC通讯组件。它的设计理念和GRPC一样,基于连接复用的机制实现高吞的性能;XRPC采用了HTTP2复用的思想,在协议设计上也类似文本和二进制相结合;在应用层面并没使用消息而是基于接口代理的方式让使用更简便。 协议序 阅读全文
posted @ 2019-05-19 08:09 beetlex 阅读(1923) 评论(3) 推荐(5) 编辑
摘要:随着物联网的普及,服务应用将面对大量物联设备处理;早期.NET在通讯上的处理能力一直给人的印像并不怎样,但net core经历过大量的优化后在各个模块的处理性能都有着比较出色的提升,针对网络方向的处理模块也有着显著的提升。以下主要测试.net core在不同连接数据并发下的资源吏用情况,用于评估在不 阅读全文
posted @ 2019-05-10 19:52 beetlex 阅读(2260) 评论(0) 推荐(5) 编辑
摘要:BeetleX.Redis是基于async/non-blocking模式实现的高性能redis组件库,组件支持redis基础指令集,并封装更简便的List,Hashset和Subscribe操作。除了在基础操作功能上,组件还提供多服务备份方式和多连接池机制,从而让组件提供高可用和高性能的访问方案;在 阅读全文
posted @ 2019-04-01 22:09 beetlex 阅读(1278) 评论(1) 推荐(0) 编辑
摘要:Bumblebee是.netcore下开源基于BeetleX.FastHttpApi扩展的HTTP微服务网关组件,它的主要作用是针对WebAPI集群服务作一个集中的转发和管理;作为应用网关它提供了应用服务负载,故障迁移,安全控制,监控跟踪和日志处理等。它最大的一个特点是基于C#开发,你可以针对自己业 阅读全文
posted @ 2019-02-22 10:47 beetlex 阅读(1836) 评论(1) 推荐(3) 编辑
摘要:之前的文章已经介绍过如何使用HttpClusterApi进行去中心化的HTTP集群服务访问,这一章主要详细讲述如何使用HttpClusterApi,主要包括如果定义节点,创建服务接口和如果使用接口描述不同情况下的WebApi服务。最后简单地通过HttpClusterApi来调用百度的一些云服务接口。 阅读全文
posted @ 2018-12-25 09:39 beetlex 阅读(636) 评论(0) 推荐(1) 编辑
摘要:传统的HTTP接口调用是一件比较繁琐的事情,特别是在Post数据的时候;不仅要拼访问的URL还是把数据序列化成流的方式给Request进行提交,获取Respons后还要对流进行解码。在实际应用虽然可以对HttpClient进行一个简单的封装,一旦到了上层大量的API调用还是不方便和不好维护。但如果在 阅读全文
posted @ 2018-11-19 15:04 beetlex 阅读(5485) 评论(10) 推荐(7) 编辑
摘要:之前讲述过多路复用实现单服百万级别RPS吞吐,但在文中有一点是没有说的就是消息IO合并,如果缺少了消息IO合并即使怎样多路复用也很难达到百万级别的请求响毕竟所有应用层面的网络IO读写都是非常损耗性能的(需要硬件配置很高的服务器)。这一章主要讲述的是IO合并的应用,并通过这个特性实现普通单服务千万级别 阅读全文
posted @ 2018-10-29 10:54 beetlex 阅读(5864) 评论(20) 推荐(26) 编辑
摘要:BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便、性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的TCP通讯服务程序,在安全通讯方面只需要简单地设置一下SSL信息即可实现可靠安全的SSL服务。 项目地 阅读全文
posted @ 2018-09-10 10:28 beetlex 阅读(7455) 评论(13) 推荐(12) 编辑
摘要:由于client资源限制,只进行了300物体互动广播测试;物体活动频率是每秒20次,服务器每秒转发的消息量大概180W条。转发消息结构: class Po : IMessage { public int ID; public short X; public short Y; public short Type; public void Load(BufferStream reader) { ID = reader.ReadInt(); X = reader... 阅读全文
posted @ 2013-07-21 20:35 beetlex 阅读(1239) 评论(4) 推荐(0) 编辑
摘要:在Beetle.Express1.2中加了UDP支持,而整体的设计结构也做了调整.只需要通过简单的配置就能实现高吐的TCP&UDP应用.由于组件引用UDP服务同样也支持会话状态所以对于服务是TCP或UDP对使用者来说完全是透明的.使用者只需要关心以下几个接口即可:IServer(服务描述接口),IChannel(通道会话),IData(发送数据描述),IReceiveData(数据接收描述)和IServerHandler(服务处理接口).而使用在使用组件的时候只需要实现IServerHandler.IServerHandler该接口主要用于描述相关服务的工作,包括连接接入,连接释放,数 阅读全文
posted @ 2013-04-19 13:04 beetlex 阅读(3980) 评论(3) 推荐(1) 编辑
摘要:一般在写一些网络服务应用的时候都比较关注服务在网络同时读写的能力,为了方便对这方面应用的测试所以写了这样一个测试的工具。工具的主要作用可以通过不同的连接数来对一个服务应用进行一个读写压力请求,并实时查看当前IO的读写次数和每次请求的延时情况等。为大家介绍的这个工具是第二版,相对于第一版主要引入了beetle 2.7提供更强的测试效能,在界面上也做了调整使其查看结果直观。工具应用界面功能简介工具是测试服务端的网络读写能力,主要原理先向服务端发送一个请求,服务端根据请求进行一个应答;工具在得到应答后会再次进入下一次请求,通过这样一个循还来得到一个服务端的请求应答数量;用户可以根据自己的需要设置对应 阅读全文
posted @ 2013-01-08 12:47 beetlex 阅读(15527) 评论(8) 推荐(2) 编辑
摘要:由于WebSocket允许保持长连接,因此当建立连接后服务器可以主动地向Client发送相关信息.下面通过服务端获取当前CPU的使用情况主动发送给网页,让网页实时显示CPU使用情况的曲线图.该事例的主要功能是包括服务端获取CPU使和情况和HTML5使用canvas进行曲线图绘制.应用效果实现效果主要是模仿windows的任务管理器,显示每个核的工作情况.C#获取CPU使用情况可能通过PerformanceCounter来获取具本CPU线程的使用情况,不过在构建PerformanceCounter前先获取到CPU对应的线程数量.获取这个数量可以通过Environment.ProcessorCou 阅读全文
posted @ 2012-12-25 22:17 beetlex 阅读(7177) 评论(8) 推荐(4) 编辑
摘要:在传统的HTTP应用上传文件想要同时上传多个文件并查看上传进度是一件很麻烦的事情,当然现在也有一些基于SWF的文件上传组件提供这种的便利性.到了HTML5下对文件的读取和上传的控制方面就非常灵活,HTML5提供一系列的AIP进行文件读取,包括计取文件某一块的内容也非常方便,结合Websocket进行文件的传输就变得更加方便和灵活.下面通过使用HTML5结合websocet简单地实现多文件同时上传应用.实现功能大概预览一下需要做的功能:主要功能是用户可以直接把文件夹的文件直接拖放到网页中,并进行上传,在上传的过程中显示上传进度信息.FileInfo类封装为了方便读取文件信息,在原有File的基础 阅读全文
posted @ 2012-12-17 22:53 beetlex 阅读(17758) 评论(4) 推荐(3) 编辑
摘要:在传统的网页实现聊天室的方法是通过每隔一段时间请求服务器获取相关聊天信息来实现,然而html5带来的websocket功能改变这了这种方式.由于websocket在连接服务器后允许保持连接来进行数据交互,因此服务器可以主动地向客户端发送相应的数据.对于html5的处理只需要在连接创建完成后在websocket的receive事件中处理接收的数据即可.下面通过实现一个聊天室来体验一下服务器可以主动地向客户端发的功能.功能一个简单的聊天室主要有以下几个功能:1)注册注册要处理几个事情,分别是注册完成后获取当前服务器所有用户列表,服务把当前注册成功的用户发送给其他在线的用户.2)发信息服务器把当前接 阅读全文
posted @ 2012-12-09 23:39 beetlex 阅读(50956) 评论(26) 推荐(7) 编辑
摘要:在之前的文章讲述了使用Websocket调用远程方式的功能,在这基础我们可以简单地使用WebSocket进行数据处理方面的应用;只需要在方法执行相关的数据库操作返回即可,结合jeasyui库所提供丰富的控件进行数据应用处理变得非常简单的事情.下面使用jeasyui和WebSocket实现一个查询Northwind数据订单的应用案例.首先分析一下以下一个订单查询案例所需要的逻辑功能.从以上的案例图中可以得到包括的功能如下:1)雇员查询2)客户查询3)订单分页查询4)订单明细查询C#代码针对以上功能可以实现简单的逻辑查询,代码如下:public class Handler { ... 阅读全文
posted @ 2012-12-05 23:18 beetlex 阅读(4882) 评论(2) 推荐(1) 编辑