rpc(远程调用)服务:调用远端的服务的就像直接在本地调用.本质上来说是一种c/s服务.
Java的RMI是一种rpc服务,但它只限于Java与Java语言之间的调用.thrift提供了跨语言的服务调用.
rpc服务本质上是一种c/s架构服务.所以在编写一个rpc组件时,需要编写client端,server端,还要编写传输的协议.rpc框架主要是实现这三种部件的编码.省去我们在去 编写这些RPC组件通用逻辑的地方.我们只需要编写我们的服务即可.
创业公司初期通常不会引用rpc服务,当业务随着公司的发展,业务会不断的进行优化拆分,这时引用rpc服务,主要是用于解决服务之间的依赖关系和服务治理.
在初期,可能只有一个小团队,大家维护着一个项目.随着发展,团队随着业务进行拆分,这时大家可能根据业务创建多个项目,但各业务之间很少会独立存在,出现相互依赖的情况, 当出现这种情况,我们可以先简单的deploy一个直接查询db的jar供别人服务或者他组业务直接connection别人的db操作.这时出现了服务依赖的关系,这种架构发展下去会使服务 的可靠性\稳定性都会降低,服务升级也需要依赖的业务一起升级.这时就是引入rpc服务的合适时机.
- 调用方式方便,像本地化调用一样
- 通过选择合适的传输协议,服务之间的调用效率将会提高
- rpc服务一般都会有一个服务注册中心模块(比如国内的dubbo),通过该模块,可以实现服务的负载和故障迁移
- 提供了多种数据序列化方式,常用的binary\json数据序列化格式
- 代码自动生成:可以根据thrift文件定义协议,然后自动生成客户端代码
- 跨语言调用,如果公司是php和Java混合存在,可以考虑
http://my.oschina.net/penngo/blog/489311
- 理解RPC
- thrift设计原理、跨语言原理
- thrift协议结构,与http协议的不同点
- thrift序列化和反序列化
- io处理、客户端、服务端的线程模型