一、整体介绍
作为一个RPC,srpc的定位很明确,是做多个层级的纵向拆解和横向接耦。层次包括:
用户代码 (client的发送函数/server的函数实现)
IDL序列化 (protobuf/thrift serialization)
数据组织 (protobuf/thrift/json)
压缩 (none/gzip/zlib/snappy/lz4)
协议 (Sogou-std/Baidu-std/Thrift-framed)
通信 (TCP/HTTP)
以上各层级可以相互拼装,利用函数重载、派生子类实现父类接口和模版特化等多种多态方式,来
实现内部使用同一套代码的高度复用,以后如果想架构升级,无论是中间再加一层、还是某层内横
向添加一种内容都非常方便,整体设计个人认为比较精巧。
且得益于workflow的性能,srpc本身的性能也很优异。srpc系统除了Sogou-std协议以外,同时实
现了Baidu-std协议和Thrift-framed协议,同协议下与brpc系统和apache thrift系统进行了性能对
比,吞吐性能领先,长尾性能与brpc各有优势但都比thrift强。
srpc目前在搜狗搜索和搜狐集团一些兄弟团队中已经稳定使用一段时间,并以其简单的接口让小伙
伴们可以快速开发,且协助业务性能带来好几倍的提升。
在往下看之前,我会列一些现有的文档,具体教程也都可以在github的项目首页看到。我这篇blog
主要是对srpc架构设计思路的阐述。
srpc基本的用法:README.md
srpc的教程介绍:rpc.md
再附上架构演进期间的一篇个人小总结:离散内存与zero_copy的一些思考
二、 接口描述、协议和通信层次介绍
一般来说用户使用任何一种RPC,需要关心的是:method,request,response,我会结合这三项
来讲述如何和各层级打交道。
刚才整体介绍里看到的层级很多,但是作为srpc的开发,需要知道的层级是以下三种:
评论0
最新资源