電銷抗封號電銷卡辦理流程
銷售打電話專用手機卡
銷售打電話用的手機卡
銷售打電話用的電銷卡
靠譜卡商專業(yè)辦理高頻外呼手機
微服務的目標是將應用程序盡量分解 / 解耦為圍繞業(yè)務功能組織的一系列松散耦合服務。這些分布式的微型單元共同滿足應用程序的目標。
將單個應用程序拆分為多個微服務后,跨越多個服務的事務(讀取和寫入)就變得不可避免了。進而,跨各個微服務邊界的通信——工作流管理——數(shù)據(jù)存儲機制 就成為了挑戰(zhàn)。這一系統(tǒng)應符合被稱為分布式計算謬誤的準則。當跨多個服務(每個都有自己的業(yè)務邏輯和數(shù)據(jù)庫)處理事務時,數(shù)據(jù)庫系統(tǒng)承諾的 ACIDity 是無法保障的。CAP 定理 意味著你需要在一致性(C)和可用性(A)之間做出權衡,因為分區(qū)容錯(P)在分布式系統(tǒng)中是無法指望的。在這篇博客文章中,我們將探討針對這些挑戰(zhàn)和設計模式的解決方案。
協(xié)調服務間通信
針對不同環(huán)境和目標的客戶和服務可以通過不同的機制來通信。通信可以是同步的或異步的,具體取決于協(xié)議。
同步通信——請求響應方法
在同步通信中,需要一個預定義的源服務地址,指明請求要發(fā)送到何處,并且 兩邊的服務(調用方和被調用方)都應處于啟動和運行狀態(tài)。盡管協(xié)議可能是同步的,但 I/O 操作可以是異步的,其中客戶端不必等待響應。這是 I/O 和協(xié)議 之間的區(qū)別。Web API 常見的通用請求 - 響應方法包括 REST、GraphQL 和 gRPC。
異步通信
在異步通信的情況下,調用方不必有被調用方的具體地址。這樣就可以相對容易地一次處理多個消費者(因為服務可能會增加消費者數(shù)量)。此外,如果接收服務關閉,消息就會進入隊列,然后在接收服務打開時繼續(xù)處理。從 松散耦合、多服務通信以及應對部分服務器故障 的角度來看,這尤其重要。正是這些決定性的因素讓 微服務傾向于異步通信。諸如 MQTT、STOMP、AMQP 之類的異步協(xié)議由 Apache Kafka Stream、RabbitMQ 之類的平臺處理。
了解何時何地使用同步模型與異步模型,是設計高效微服務通信機制時的基礎要素。
消息與事件
在異步通信中,常見的機制是消息傳遞和事件流。
消息
消息 是發(fā)送到特定目的地的數(shù)據(jù)項目,它封裝了 意圖 / 動作(需要發(fā)生的事情),并通過消息傳遞之類的渠道分發(fā)。隊列負責存儲消息,直到它們得到處理和刪除。在消息驅動的系統(tǒng)中,可尋址的收件人等待消息到達并做出響應,否則將處于休眠狀態(tài)。
事件
事件封裝了狀態(tài)的變化(發(fā)生了什么),而事件偵聽器會附加到事件源上,以便在事件發(fā)出時調用它們。
域事件:與應用程序生成的業(yè)務域相關的事件(下圖中的 OrderRequested、CreditReserved、InventoryReserved)。這些事件是事件源關注的。