想要知道 spring cloud 与 rpc框架 的区别与联系,那我们首先要知道什么是rpc调用 ?
rpc
Remote Procdeure Call ,即远程过程调用,它是一种通过网络计算机程序请求,服务,而不需要了解底层网络实现的技术。
落实到开发:我们调用的接口虽然不在我们本地,但是我们调用起来就和在本地一样。我们常见的Httpclient 就是它的一个具体实现。
RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。
简述实现原理:
实现思路:网络通信(常用框架:netty) + 反射
- 客户端通过网络通信将需要调用的接口信息(接口名,方法名,参数类型,参数)发送给服务端
- 服务端通过网络通信接受到信息之后,通过反射进行方法调用,将结果通过网络通信返回给客户端
常见的典型 rpc 框架有:阿里的 dubbo,还有Thrift、Hessian等等都是采用的rpc架构。
spring cloud
spring cloud 想必大家都很清楚,它是基于 spring boot 的微服务全家桶框架,使用Spring Cloud的开发者可以快速的启动服务或构建应用。
其中主要组件有(第一代):
- 注册中心 —— eureka
- 配置中心 —— config
- 网关 —— zuul
- 服务调用客户端 —— feign
- 熔断器 —— hystrix
- 负载均衡器 —— ribbon
- 集群监控 —— turbine
它的特点也是非常的突出:
- 约定优于配置
- 开箱即用,快速启动
- 适用于各种环境
- 轻量化组件
- 组件的支持很丰富,功能很齐全
- 选型中立
区别与联系
通过以上介绍,我们可以非常清晰的感觉到,spring cloud 中 feign 的远程调用 和rpc调用非常契合,但是,spring cloud 庞大的家族和突出的特点又让 rpc框架 略显羞涩。
所以,我感觉,你可以说 spring cloud 是 rpc 框架,但是不够全面具体 (如下图), 貌似微服务更适合它。
备注
了解什么是rpc:如何给老婆解释什么是RPC
了解spring cloud:官网较好
不愿意去的给出一份官方解释:
Spring Cloud为开发人员提供了一些工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导层选举、分布式会话、群集状态)。分布式系统的协调导致了锅炉板模式,使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和云计算(Cloud Foundry)等托管平台。
简答总结,欢迎大家和我交流讨论!~