主流RPC框架

介绍目前在互联网公司比较流行的开源的RPC框架。

RPC框架比较

  语言 协议 ​服务治理 ​社区 机构
Hessian 多语言 hessian 不活跃 Caucho
Thrift 多语言 thrift 活跃 Apache
Finagle Java/Scala 多协议 支持 活跃 Twitter
TChannel 多语言 thrift 支持 活跃 Uber
Dubbo Java 支持拓展 支持 停滞 阿里

详细介绍

Hassian

Hassian被广泛用做二进制编码协议,但本身也是一个Web Service框架对RPC调用提供支持,功能简单,使用起来也方便。

有些像《RPC》介绍的SimpleRPCFramework,只是把编码协议从Java Serialization替换为hassian。

Thrift

Thrift是一个跨语言的RPC框架,自带的代码生成引擎大幅提高了开发效率,从而使它如此流行。

最初由Facebook团队设计开发,现在已贡献给Apache。

Thrift基于接口描述语言定义的Model(契约),Thrift Compiler进行解析并自动生成目标语言Client和Server端的代码框架,直接基于此框架开发服务或者与现有系统集成都可以较方便实现。

基于Thrift开发远程服务调用,后续Model的改动会导致上下游产生较大升级成本,因此服务双方应先仔细定义Model。

公司内部所有Model应由专门的系统进行统一版本管理、编译、发布。

Finagle

Finagle是一个专门为Java/Scala设计的、成熟的RPC框架。

简单、高效、支持基本服务治理功能,所有服务治理功能均在Client端集成:服务发现、负载均衡、容错、日志收集等。

使用Scala开发,国内没有听说过有团队使用此框架。

TChannel

TChannel是一个支持多语言的RPC框架,主要编码协议为thrift,同时又参考Finagle基于Dapper设计自己的集群监控实现。

服务治理与Finagle不同,由类似系统总线的独立的路由系统进行服务治理,本身这种系统结构存在单点故障风险,已经被多数公司放弃。但优点显而易见,功能集中在一个系统中,对于系统维护和升级要方便得多,极大降低降低各语言终端的开发成本和框架升级引入的潜在风险。

Dubbo

Dubbo是阿里巴巴开源的专门为Java设计的、成熟的RPC框架。

支持基本的服务治理,所有服务治理功能均在Client端集成:服务发现、负载均衡、容错、监控等。

采用微内核+插件体系,所有组件都可以遵循一定的规则进行替换,拥有较强的拓展性。

主流的搭配:

zookeeper作服务中心

thrift/dubbo作为编码协议

netty作为底层通信模块

Dubbo定义了自己的spring schema,与spring项目进行集成相当方便。

如果是Java系统推荐使用Dubbo,如果是多语言系统可以为Dubbo添加thrift原生协议支持(Dubbo本身不支持原生的thrift协议),通过thrift代码生成引擎支持多语言调用。

FW:主流RPC框架的更多相关文章

  1. 主流RPC框架详解,以及与SOA、REST的区别

    什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使 ...

  2. 主流的RPC框架有哪些

    RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展.Java中的RPC框架比较多,各有特色,广泛使用的有RMI.Hessian.Dubbo等.RPC还 ...

  3. rpc框架之 thrift 学习 1 - 安装 及 hello world

    thrift是一个facebook开源的高效RPC框架,其主要特点是跨语言及二进制高效传输(当然,除了二进制,也支持json等常用序列化机制),官网地址:http://thrift.apache.or ...

  4. 简易RPC框架-客户端限流配置

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  5. 序列化战争:主流序列化框架Benchmark

    序列化战争:主流序列化框架Benchmark GitHub上有这样一个关于序列化的Benchmark,被好多文章引用.但这个项目考虑到完整性,代码有些复杂.为了个人学习,自己实现了个简单的Benchm ...

  6. 服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型

    转自: http://blog.csdn.net/liubenlong007/article/details/54692241 概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺 ...

  7. RPC 框架 应用

    RPC RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮 ...

  8. RPC框架基础概念理解以及使用初体验

    RPC:Remote Procedure Call(远程服务调用) RPC是做什么的 通过RPC框架机器A某个进程可以通过网络调用机器B上的进程方法,就像在本地上调用一样. RPC可以基于HTTP或者 ...

  9. dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型

    概述 前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架.下面就简单介绍一下RPC框架技术选型的过 ...

随机推荐

  1. 0063 MyBatis入门示例

    MyBatis是一个"半自动化"的ORM框架,ORM即Object/Relation Mapping,对象关系映射,是面向对象编程语言跟关系型数据库的桥梁,将编程语言对Java实体 ...

  2. FreeRTOS——任务调度—抢占式,时间片和合作式

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章教程为大家将介绍 FreeRTOS 操作系统支持的任务调度方式:抢占式,时间片和合作式,这部分算是 Fr ...

  3. 一款基于jQuery的图片下滑切换焦点图插件

    之前为大家分享了好多款jquery插件,今天我们要分享的一款jQuery插件也比较实用,是一款jQuery焦点图插件.焦点图相当普通,一共可以循环播放4张图片,并且每一张图片在切换的时候都是向下滑动的 ...

  4. UML类图<转>

    UML类图     解释UML类图: 1.       首先看“动物”矩形框,它代表一个类.该类图分为三层,第一层显示类的名称,如果是抽象类就要用斜体显示.第二层是类的特性,通常就是字段和属性.第三层 ...

  5. PHP——分页显示的完善(加查询,用类简化sql语句)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 让 MySQL 支持 emoji 存储

    要让 MySQL 开启 utf8mb4 支持,需要一些额外的设置. 1. 检查 MySQL Server 版本 utf8mb4 支持需要 MySQL Server v5.5.3+ 2. 设置表的 CH ...

  7. Android Studio多渠道打包的使用

    项目地址 https://github.com/mcxiaoke/gradle-packer-plugin 项目介绍 gradle-packer-plugin 是Android多渠道打包工具Gradl ...

  8. MyBatis常用对象SqlSessionFactory和SqlSession介绍和运用

    学习框架一个比较好的路径阅读源码.本文介绍的SqlSessionFactory和SqlSession.可以通过了解SqlSessionFactory接口和SqlSession接口以及两个的实现类入手, ...

  9. 小结:STL

    概要: c++的stl是个神奇的东西,需要好好学习. 技巧及注意: lower_bound是第一个大于等于要查找值 upper_bound是第一个大于要查找的值 stl中的容器中的比较几乎全都用< ...

  10. [转]Loadrunner随机生成15位数字串

    Loadrunner随机生成15位数字串 PS:http://www.51testing.com/html/43/6343-19789.html 今天看到一个网友的问题,是想生成一个15位的数字串来进 ...