RPC选型

RPC选型

Apache Thrift

国外用的多,源于facebook,后捐献给Apache基金。是Apache的顶级项目 Apache Thrift。使用者包括facebook, Evernote, Uber, Pinterest等大型互联网公司。 这是目前最为成熟的框架,优点在于稳定、高性能。缺点在于它仅提供RPC服务,其他的功能,包括限流、熔断、服务治理等,都需要自己实现,或者使用第三方软件。

重点参考
江南白衣的Thrift总结

Google Protobuf

和Apache Thrift类似,Google Protobuf也包括数据定义和服务定义两部分。问题是,Google Protobuf一直只有数据模型的实现,没有官方的RPC服务的实现。 直到2015年才推出gRPC,作为RPC服务的官方实现。但缺乏重量级的用户。

Avro

对比分析 取Thrift的传输 Protobuf的序列化

Thrift 提供多种高性能的传输协议,但在数据定义上,不如Protobuf强大。

同等格式数据, Protobuf压缩率和序列化/反序列化性能都略高。
Protobuf支持对数据进行自定义标注,并可以通过API来访问这些标注,这使得Protobuf在数据操控上非常灵活。比如可以通过option来定义protobuf定义的属性和数据库列的映射关系,实现数据存取。
数据结构升级是常见的需求,Protobuf在支持数据向下兼容上做的非常不错。只要实现上处理得当,接口在升级时,老版本的用户不会受到影响。
而Protobuf的劣势在于其RPC服务的实现性能不佳(gRPC)。为此,Apache Thrift + Protobuf的RPC实现,成为不少公司的选择。

对比结论

利用Protobuf在灵活数据定义、高性能的序列化/反序列化、兼容性上的优势,以及Thrift在传输上的成熟实现,将两者结合起来使用,是最优的选择。

连接池设计

自己实现可以基于JDBC链接池做改进,比如参考Apache commons DBCP链接池,使用Apache Pools来管理链接。 在接口设计上,连接池需要管理的是RPC 的Transport:

c++实现

thrift c++ demo
thrift demo

thrift demo use

    原文作者:topwqp
    原文地址: https://www.jianshu.com/p/32b2cd64f833
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞