微服務架構中進程間通信的深入解析

◆  概述

服務內部通信主要分爲兩類:

通信方式有兩類:

第一類:

第二類:

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} : 獲取指定的用戶信息

◆  服務發現

服務發現有兩種:靜態發現和動態發現。

靜態發現是指知道對方的地址,運行時地址是固定的,直接通過地址就可以發現服務。

動態發現是指服務提供者是動態擴展的(增縮),運行指根據具體策略才能獲取到對應的服務提供者。

動態服務發現:

動態服務發現一般有兩種實現:

◆  異步消息

基於消息通信的應用程序通常使用消息代理(Message Broker),這種代理在各個服務間作爲一種中介存在。

這種模式一般是發送者發送消息到指定的通道(Channel),消費者(要收到消息的對象)從通道中讀取。

一個消息是由頭部(header)和內容(body)組成。頭部是 key-value 集合組成,一般也包括消息的唯一 ID。

消息的類型:

◆ 通道(Channel)

**| **消息是通過通道進行交換的。

通道一般有兩種:

◆  異步消息的實現

  1. 異步請求響應

  1. 發佈訂閱

我們選擇一個消息代理組件(MQ)時需要考慮的因素:

來源:

https://www.toutiao.com/i6954591211072193062/

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/-5meq_QuOMoY18DETM_umw