thrift
rpc(远程调用)服务:调用远端的服务的就像直接在本地调用.本质上来说是一种c/s服务.
Java的RMI是一种rpc服务,但它只限于Java与Java语言之间的调用.thrift提供了跨语言的服务调用.
rpc服务的组成部件
rpc服务本质上是一种c/s架构服务.所以在编写一个rpc组件时,需要编写client端,server端,还要编写传输的协议.rpc框架主要是实现这三种部件的编码.省去我们在去
编写这些RPC组件通用逻辑的地方.我们只需要编写我们的服务即可.
rpc服务的优点
是否需要引入rpc服务
创业公司初期通常不会引用rpc服务,当业务随着公司的发展,业务会不断的进行优化拆分,这时引用rpc服务,主要是用于解决服务之间的依赖关系和服务治理.
在初期,可能只有一个小团队,大家维护着一个项目.随着发展,团队随着业务进行拆分,这时大家可能根据业务创建多个项目,但各业务之间很少会独立存在,出现相互依赖的情况,
当出现这种情况,我们可以先简单的deploy一个直接查询db的jar供别人服务或者他组业务直接connection别人的db操作.这时出现了服务依赖的关系,这种架构发展下去会使服务
的可靠性\稳定性都会降低,服务升级也需要依赖的业务一起升级.这时就是引入rpc服务的合适时机.
rpc服务的特点
调用方式方便,像本地化调用一样
通过选择合适的传输协议,服务之间的调用效率将会提高
rpc服务一般都会有一个服务注册中心模块(比如国内的dubbo),通过该模块,可以实现服务的负载和故障迁移
thrift的优点
提供了多种数据序列化方式,常用的binary\json数据序列化格式
代码自动生成:可以根据thrift文件定义协议,然后自动生成客户端代码
跨语言调用,如果公司是php和Java混合存在,可以考虑
dubbo与thrift
dubbo是一种具体的rpc框架实现,由阿里开源.thrift只是rpc框架的底层部件,上文已说主要实现底层的数据序列化,网络传输,客户端和服务端大部分的编码.
dubbo是在thrift的上层.dubbo支持多种协议的实现,比如rmi\thrift.
avro
avro是一个与thrift类似的组件,是hadoof的一个子工程,有兴趣的话也可以研究下两者之间额差异
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。