方法调用_BeetleX高吞吐远程方法调用模块XRPC

XRPC的目标非常明确,在.net core平台实现一个百万级别的远程方法调用RPC通讯组件。它的设计理念和GRPC一样,基于连接复用的机制实现高吞的性能;XRPC采用了HTTP2复用的思想,在协议设计上也类似文本和二进制相结合;在应用层面并没使用消息而是基于接口代理的方式让使用更简便。

协议序列化

XRPC采用了基于文本+二进制相结合的通讯协议,头以文本的方式表现主要是描述请求的位置和附加信息,这样设计的好处就是在实现网关的时候只需要解释头部就能做很好的负载策略。二进制处理并没有像GPRC一样使 Protobuf,而是使用了在.net core平台下相对更高效的组件MessagePack。

通讯机制

在早期很多RPC是基于独享连和连接池的方式进行构建,这样的好处就是实现起来方便简单,但这种设计就无法把不同请求的请求混合到一个IO上。导致网络IO随并发消息的增长而增长,从而局限了性能的发挥。XRPC的设计是尽量在最少连接情况发挥更高效的网络处理能力,这样就可以把N个请求的数据复用在一个IO上,而从让网络利用率大大提升。

2f6395094e9cd1094ebdef8f7ba8759f.png

但这种设计的缺点就是使用起来非常复杂,不过在.NET提供async/await支持下整体设计和应用就变得相对简单和清晰很多了。现在模块已经完成基础功能版本,以下介绍一下如何使用。

组件使用

组件现在只完成最基础的功能,后面会引用Actor的一些基础元素,让在并发业务处理数据上更高效。可以通过Nuget引用组件

Install-Package BeetleX.XRPC -Version x

定义接口服务

XRPC是通过接口的方式来描述服务,通过接口制定相关服务的逻辑,具体实现如下:

adbc9f0b268304db9380ef54614276c7.png

启动服务

c13f5c3b56a2d0d751ac6c774d1df347.png

通过Register注册相关程序集,组件会把程序集中所有控制器加载到内存中,可以通过日志加载情况:

fb60c8a5baf6c8951b179738f6bb8a6b.png

Client定义

a91b69dc92b23f6936f18c810da93f98.png

定义一个XRPCClient对象来进行远程访问,对象默认最大连接数是2,也可以根据自己实情况进行调整,不建增加这样会导致网络IO也会增加影响整体性能。

1af7864f59a15185b8e2ca5ac6cbefa8.png

通过Create方法可以创建接口代理,这个代理是线程安全的,正常情况只需要创建一个静态成员即可;创建接口后只需要调用相关方法即可完成远程方法的调用。

基础性能

组件设计的性能目标是百万级别RPS的远程方法调用,不过在一台4核物机作为服务测试并没有达到这个目标,不过测试结果还算比较理想,在以上示例代码Login方法,采用500个并发模拟的情况RPS达到将近70万。以下是不同方法在不同并发数下的测试结果。

81a2f2ed3e00e1f97bb69f5a5135c737.png

详细测试代码:https://github.com/IKende/XRPC/tree/master/Samples/Performance


专注dotnet core服务应用技术研发

da34d4775e7e51e7bad5448a34358e6f.png

  • BeetleX高性能通讯组件并提供ssl支持

    https://github.com/IKende/BeetleX

  • FastHttpApi轻量级高性能的webapi组件,支持websocket和sssl,性能远高于asp.net core webapi

    https://github.com/IKende/FastHttpApi

  • Bumblebee高性能Webapi网关,支持插件扩展,动态路由配置和负载策略

    https://github.com/IKende/Bumblebe   

  • BeetleX.Redis高性能async/non-blocking组件,默认支持json和protobuf

    https://github.com/IKende/BeetleX.Redis

  • WebApiBenchmark高性能的Webapi测试用例管理和压测工具,可以轻实现对多个API进地数十万RPS压测

    https://github.com/IKende/WebApiBenchmark

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值