文章目录

  • 摘要
  • 消息格式
  • 位置遥控(remote position control)
  • 休息
  • 服务发现
  • 异步消息
  • 频道(频道)
  • 异步消息的实现

进程间通信(进程间有三种通信模式)

摘要

服务内部沟通主要分为两类:

基于同步请求/响应的通信,如REST、gRPC等。

基于异步消息的通信,如AMQP、STOMP等。

有两种类型的通信方法:

第一类:

一对一的交流

一对多通信

第二类:

同步通信

异步通信

一对一通信实施:

请求/响应通信

异步请求响应

单向通知

1多通信的实现:

发布订阅

发布/异步响应

消息格式

进程间通信对的本质是消息对交互。

有两种类型的消息格式:文本消息和二进制消息。

文本格式:JSON,XML

二进制格式:Avro、Protobuf、Thrift

跨编程语言的消息格式传输对于使用非常重要,所以Java序列化并不是一个好的选择。

位置遥控(remote position control)

远程过程调用调用远程服务,就像调用本地方法一样。

在客户端的业务逻辑中,调用远程提供者的代理接口。

提供商代理通过网络传输将数据发送到接口服务器,服务器接收消息进行业务逻辑处理。

执行后,服务器通过代理将结果发送给客户端,客户端接收调用结果。

休息

REST是一个规范,而不是一个协议。REST通常使用HTTP协议。

REST中的一个关键概念是资源,它通常代表一个业务实体,比如用户、订单或对象集合。

调用REST HTTP接口有一定的规范,比如:

发布/用户:创建用户

上传/用户:修改用户信息

GET /users:获取用户列表。

GET /user/{userId}:获取指定的用户信息。

服务发现

服务发现有两种:静态发现和动态发现。

静态发现是指知道对方的地址,运行时地址是固定的,可以通过地址直接发现服务。

动态发现是指服务提供者的动态扩张(收缩),而运营是指根据特定的策略获取相应的服务提供者。

动态服务发现:

动态服务发现通常有两种实现方式:

服务注册:需要一个注册中心。服务提供者在启动时向注册中心注册,服务消费者从注册中心获取服务列表。

通过部署平台,如Kubernetes

异步消息

基于消息通信的应用程序通常使用Message Broker,它作为服务之间的中介而存在。

在这种模式下,发送方将消息发送到指定的通道,而使用者(接收消息的对象)从通道中读取消息。

消息由标题和正文组成。由头键值集组成,通常包括消息的唯一ID。

消息类型:

文件

命令

事件

频道(频道)

消息通过信道交换。

一般来说,有两种渠道:

点对点信道

订阅频道

异步消息的实现

1.异步请求响应

发表评论

后才能评论