哈喽各位同学们大家好呀,小编今天带着开发者学院中课程“微服务架构常用RPC协议”干货总结来了~一起学习新课程吧!
课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇
课程名称:微服务架构常用RPC协议
课程地址:https://developer.aliyun.com/learning/course/60/detail/1109
图谱名称:Alibaba Java 技术图谱
图谱地址:https://developer.aliyun.com/graph/java
微服务架构常用RPC协议
一、微服务常用的通信模式
1、微服务的消息通信模式
消息交换的模式有很多种,使用较多的是同步消息的交互模式,典型特征是发送完消息后会等待一个结果,
浏览器发送一个网页请求后,会等待网页返回,中间存在请求应答的过程,这就属于同步请求的模式。
异步请求模式的常见场景是消息推送,发送完某个消息后,这个消息并不会立即到达,可能会经过一定延迟才到达接收方。异步模式的优点是并发或吞吐量较高;缺点是无法保证消息的实时性。
目前在分布式架构上,同步与异步相结合的消息交换场景也很常见。
协议上绝大部分都是同步模式,个别支持异步,例如邮件协议或者消息协议。
二、经典的RPC协议
上图是在分布系统中常用的一些RPC协议。RPC本身是远程过程调用,主要解决远程的通信问题,而不仅是封装原始的数据通信协议与网络协议。
在此基础上,需要借助某些框架语言来实现功能的交互。例如,希望客户端通过调用服务器端的某个订单或者加密的功能,实现远程的功能调用。
这是通过网络来暴露自己代码功能较早的一种方式。RPC协议非常多,不仅是REST API,APP协议暴露接口,前端分裂架构基本上也都是API加前端、小程序、APP、PC网页等这种模式,是在移动互联网时代用得较多的架构。
前端分离,后端演化成微服务架构。微服务架构一般和业务模式有关,业务需求是第一位,技术服务于业务。在内部通信领域,并非只有一种协议,可能多种协议并存,如TCP、UDP、HTTP等协议并存。
Rest API基本上走的是APP协议,一般是接收数据格式。在这个领域里面,RPC概念在native本身也支持分布式通信框架。但是相对来说,在大规模分布式集群治理领域,阿里的Dubbo设计非常优秀,不断迭代,表现优异。
数据库JDBC属于分布式通信解决方案之一,但通信协议是GDB框架定义,专有的协议格式,支持引入中间链、消息队列等,使用不同的协议进行通信。
这并非表示跨平台是最优秀的,它的性能越好,安全性越高,可能越封闭。但是它开放性标准化有助于大范围的行业推广,适用性更强。有些公司的协议不开放,这是由于从公司的业务角度来说,微服务属于分布式架构。
分布架构继承了早期的分布式框架特点,在RVICES API这些应用基础上进行了架构的升级改造,在大规模的服务接口集群化治理走向了更高的层次,架构师面临的挑战也更大。
三、微服务常用的通信协议
1、微服务之间的通信协议与框架中间件
目前,微服务以Spring Cloud开发为代表,选取的是 Rest通信接口格式,后续的微服框架可能更多,有些微服务支持更多的协议和数据格式。目前主流的是HTTP,属于同步消息通信模式,H5走websocket。
当下的移动互联网时代大部分追求轻量级接口,目前的框架如Rest API、Java、Go还是node,都非常方便,可以直接在APP协议站基础上进行扩展。
不同语言的REST框架基本由WEB框架改造,再加一层数据序列化反序列化即可满足大部分场景需求。因为对于绝大部分前端APP来说,数据格式基本是主要的那些格式,没有复杂的路由策略。早期已经具备了基础的接口开发框架,但是还不具备整体性复杂的架构层级的微服务架构风格。
消息队列在早期分布式架构中经常使用,比较经典的是RabbitMQ兔子消息队、Kafka、RocketMQ火箭消息队,Kafka的消息并发量和吞吐量能达到百万级别。
对于全新的微服加工来说,可能会存在几种协议,有同步、异步和两种形式并存,也有可能是使用APP协议或其他的TCP或者二进制等相关协议,这几种协议经典且各有所长。
在物联网行业存在特殊情况,可能进行对接时候,设备可能还有自己的数据协议,但是每个分布式框架底层可能支持一种协议或者多种协议。