初识RPC
- RPC
- 远程方法调用(Remote Procedure Call)
- 大多用在服务治理领域
- 基本都是分布式环境中的注册中心来负责新服务的注册、服务续约、服务下线、服务销毁
- 国内 Dubbo 是应用最广的 RPC 框架
- 国外 gRPC
- RPC协议
- 无论哪种RPC方案,都要自定义一套RPC协议规范。
- 方法寻址
- eureka 没有方法寻址这一说,无论是 feign 还是 RestTemplate 都要给定服务名+url路径。
- RPC就和本地方法一样,不用给出服务名和路径,因此需要借助反射等技术获取当前服务的特征量,运用到自己的方法逻辑上,找到正确的服务提供方。
- 对象序列化/反序列化
RPC vs REST HTTP
- 接口风格
- RPC(动词命名)
- queryProduct
- 面向执行过程
- REST(名词)
- {GET}/product?id=3
- 面向所操作的资源
- RPC(动词命名)
服务治理 RPC vs HTTP
RPC | HTTP | |
---|---|---|
应用层协议 | RPC协议,底层基于TCP | 超文本传输协议,底层基于TCP |
编程友好程度 | 配置简单高效,接口拿来就用 | 配置繁琐,资源定位,GET/POST… |
传输效率 | 应用gzip等压缩技术 | HTTP携带的信息臃肿,报文中有效信息占比小 |
框架实现难度 | 难难难,但和我们没关系 | 简单 |
那么问题来了
问:RPC那么好,为啥还用Spring Cloud和Eureka ?
答:RPC再好也就是个服务治理框架,能有Spring Cloud全家桶牛吗 ?