代码仓库 https://github.com/robinfoxnan/uv-rpc
1) 为啥不用google rpc呢?
依赖的第三方代码太多了,而且很难找全,尤其是有些服务在内网不能联网,安装部署也是个问题;
2)为啥不用baidu rpc呢?
brpc号称非常的块,在联网机器上下载库也很方便,但是不是跨平台的;
3)为啥用libuv呢?
libuv也算是酒精考验的库,是nodejs的依赖库,跨平台;linux使用了epoll,windows使用了IOCP。库还封装了各种基础操作:文件异步操作,定时器,队列,锁……
我的需求是为CPU密集型分布式计算做一个RPC,要求跨平台,要求1毫秒一下的往返时延,于是我封装了一下libuv,结构大概是这样的:
其中定义了一个通用的包结构:
其中的数据部分,根据自己的需要使用字符串,json或者protobuf都可以。
自己只需要对数据部分做自己的编解码就可以了;具体可以参考示例。
性能:
1)客户与服务端在笔记本上(windows10),能单连接跑2万次/秒。
2)6个连接,能跑8万次/秒;
未完待续……