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