RPC选型

作者: 大龄程序员在帝都 | 来源:发表于2017-07-20 13:12 被阅读113次

    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

    相关文章

      网友评论

          本文标题:RPC选型

          本文链接:https://www.haomeiwen.com/subject/gfidkxtx.html