Skip to content

Latest commit

 

History

History
53 lines (29 loc) · 2.19 KB

README.md

File metadata and controls

53 lines (29 loc) · 2.19 KB

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服务的特点

  1. 调用方式方便,像本地化调用一样
  2. 通过选择合适的传输协议,服务之间的调用效率将会提高
  3. rpc服务一般都会有一个服务注册中心模块(比如国内的dubbo),通过该模块,可以实现服务的负载和故障迁移

thrift的优点

  1. 提供了多种数据序列化方式,常用的binary\json数据序列化格式
  2. 代码自动生成:可以根据thrift文件定义协议,然后自动生成客户端代码
  3. 跨语言调用,如果公司是php和Java混合存在,可以考虑

参照

http://my.oschina.net/penngo/blog/489311

http://thrift.apache.org

关键点

  1. 理解RPC
  2. thrift设计原理、跨语言原理
  3. thrift协议结构,与http协议的不同点
  4. thrift序列化和反序列化
  5. io处理、客户端、服务端的线程模型