作者:tcystars_628 | 来源:互联网 | 2023-09-16 19:55
接上篇,上篇中对微服务间的通信方式进行了讲解,我们知道微服务间的通信方式主要是基于RPC协议。今天分享现如今主流的RPC框架RPC框架如上文我瞎举的示例(直到效果就好…),RPC框
接上篇,上篇中对微服务间的通信方式进行了讲解,我们知道微服务间的通信方式主要是基于 RPC 协议。今天分享现如今主流的 RPC 框架
RPC 框架
如上文我瞎举的示例(直到效果就好…),RPC 框架就类似于干了那些诸如派单、物流等等一系列事情的平台。而服务调用方只需要订阅另一个服务提供方的服务,RPC 框架就会把结果扔给服务调用方(粗糙地类似于用户点餐平台的流程)。
1.1 alibaba dubbo(Dubbox)
dubbo 是 alibaba 前几年开源的 RPC 框架,后来停止维护。Dubbox 是当当在 alibaba 停止维护后基于 Dubbo 而维护的 RPC 框架项目。现在,alibaba 又开始了对 dubbo 的维护,而且项目已经捐献给了 apache 基金会,期待 ali 为开源项目提供更多的支持以及维护。
1 dubbo 架构图
Dubbo 架构图
从架构图上我们可以看到 0、1、2 这三步是服务启动时的初始化工作,其中 1 就类似于某咖啡店跟某点餐平台注册账号一样,2 就类似于需要点餐的用户也在点餐平台上来注册账号。
3 则表示如果服务提供者的地址发生了变化,就通知给服务调用者。这类似于咖啡店的的电话变了,平台会通知到用户。
4 服务调用者从注册中心拿到服务提供者的地址并调用服务。这其中包括负载均衡。
5 服务消费者与提供者和注册中心之间都使用的是长连接,在调用过程中,会在内存中对调用次数进行统计,然后定时反馈给监控中心对调用进行监控。
注:
- 图中实线表示的是同步调用,而虚线则表示的是异步调用。
- 消费者与提供者之间使用的是非阻塞IO(NIO)
2 dubbo github 地址
https://github.com/apache/incubator-dubbo
3 dubbox 官方中文文档地址
http://dubbo.apache.org/books/dubbo-user-book/
1.2 sina motan
motan 是新浪开源的服务治理框架,据说使用简单,我没使用过…
1 github 地址
https://github.com/weibocom/motan
2 中文文档地址
https://github.com/weibocom/motan/wiki/zh_overview
3 motan 架构
motan 架构
1.3 apache thrift
thrift 是 facebook 开发,后来开源并捐献给了 apache 社区,且 thrift 是一个跨语言的 RPC 框架,且支持市面上的主要的编程语言。
1 thrift 官方
http://thrift.apache.org/
2 文档
http://thrift.apache.org/tutorial/
1.4 google grpc
grpc 是 Google 开源 RPC 框架,高性能、开源、将移动和 HTTP/2 放在首位的通用的 RPC 框架,基于 HTTP/2, netty4.1, proto3, 拥有非常丰富而实用的特性,堪称 RPC 框架的典范。
但 grpc 它本身它不是分布式的
1 grpc github 地址
https://github.com/grpc/grpc
2 文档地址
https://github.com/grpc/grpc/tree/master/doc
1.5 spring cloud
Spring Cloud 完全基于 Spring Boot,服务调用方式是基于 REST API。整合了各种成熟的产品和架构,并且基于 spring boot 也使得整体的开发、配置、部署都异常的方便。
1 官方地址
http://projects.spring.io/spring-cloud/
2 文档地址
https://spring.io/docs
接下来,会进一步对上方各框架进行一些横向对比。并且,会基于 spring cloud 来进行示例开发。敬请期待