进程间通信(进程间的通信方式三种)

80酷酷网    80kuku.com

进程间通信(进程间的通信方式三种)微服务架构中进程间通信的深入解析

概述

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

  • 基于同步请求/响应的通信,例如:REST,gRPC等

  • 基于异步消息的通信,例如:AMQP,STOMP等

通信方式有两类:

第一类:

  • 1对1通信

  • 1对多通信

第二类:

  • 同步通信

  • 异步通信

1对1通信实现:

  • 请求/响应通信

  • 异步请求响应

  • 单向通知

1对多通信实现:

  • 发布订阅

  • 发布/异步响应

消息格式

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

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

文本格式:JSON,XML

二进制格式:Avro,Protobuf,Thrift

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

RPC

Remote Procedure Call 像调用本地方法一样调用远程服务

微服务架构中进程间通信的深入解析

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

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

  • 服务端执行完毕后将结果通过代理发送给客户端,客户端收到调用结果。

REST

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

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

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

POST /user : 创建用户

PUT /user : 修改用户信息

GET /users: 获取用户列表

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

服务发现

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

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

动态发现是指服务提供者是动态扩展的(增缩),运行指根据具体策略才能获取到对应的服务提供者。

动态服务发现:

微服务架构中进程间通信的深入解析

动态服务发现一般有两种实现:

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

  • 通过部署平台,比如:Kubernetes

异步消息

基于消息通信的应用程序通常使用消息代理(Message Broker),这种代理在各个服务间作为一种中介存在。

这种模式一般是发送者发送消息到指定的通道(Channel),消费者(要收到消息的对象)从通道中读取。

一个消息是由头部(header)和内容(body)组成。头部是key-value集合组成,一般也包括消息的唯一ID。

消息的类型:

  • Document

  • Command

  • Event

微服务架构中进程间通信的深入解析

通道(Channel)

消息是通过通道进行交换的。

通道一般有两种:

  • 点对点通道

  • 发布订阅通道

异步消息的实现

1.异步请求响应

微服务架构中进程间通信的深入解析

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: