目前有很多RPC框架,比如阿里的dubbo,那么到底RPC框架有什么优势,什么场景下使用呢。
dubbo 基于 tcp 协议;
一个完整的RPC架构里面包含了四个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub可以理解为存根。
RPC的接口定义接口很像Android 跨进程IPC调用的AIDL (Android接口定义语言)。
一、RPC相较于Http接口的优势:
两者最大的差别在传输协议上,
1) 数据包
HTTP带请求头,相比之下,大大精简了传输内容。
这也就是为什么后端进程间通常会采用 自定义tcp协议 的 rpc 来进行通信的原因。
HTTP1.1是字符协议。
2) 效率
像dubbo框架采用TCP协议,二进制传输,Google的grpc 这种 rpc 库使用的 是http2.0协议 (二进制分帧)。
据说相较于HTTP1.1协议传输,在大规模访问情况下,效率差十几倍。
3)SOA面向服务治理
流行的RPC架构封装了 “服务发现”,"负载均衡",“熔断降级” 一类面向服务的高级特性。单纯使用http调用则缺少了这些特性。
二、使用场景:
1)内部子系统较多。
众多的内部子系统是驱动采用RPC架构的原因之一,订单系统,支付系统,商品系统,用户系统............, 每个可独立单独布署。
RPC主要使用在大型企业内部子系统之间的调用。因为大型企业里面系统繁多,业务线复杂,而且效率优势非常重要的一块,这个时候RPC的优势就比较明显了。
基于HTTP协议的接口,包括Webservice等主要作为对外接口服务。
2)接口访问量巨大。
RPC基于长连接。
要求满足支持 "负载均衡",“熔断降级” 一类面向服务的高级特性。
3)接口非常多;
“服务发现”。