精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

在微服務中保證服務的一致性

責任編輯:editor005

作者: Jan Stenberg

2016-03-23 11:56:41

摘自:INFOQ

在近期舉辦的QCon London大會上,Ben Stopford在他的演講中極力主張擁抱去集中化的思想、構建基于服務的系統,并通過流處理工具解決分布式狀態所引起的問題。

在近期舉辦的QCon London大會上,Ben Stopford在他的演講中極力主張擁抱去集中化的思想、構建基于服務的系統,并通過流處理工具解決分布式狀態所引起的問題。

Stopford目前任職于Confluent,參與Kafka的開發工作。對他來說,構建基于服務的系統的理由有很多,包括松耦合、邊界上下文、易于擴展等等,這些特性讓我們能夠構建出可以隨著時間的推移而不斷改進的系統。但是,通過這種方式,我們實質上是在創建分布式的系統,而分布式系統自有其本身的復雜性,并且在延遲與故障等方面還存在著種種問題。

Stopford描述了分布式系統的兩種基本模式:

以請求-響應的方式對服務進行解耦,通常使用REST的服務實現。它很適合于UI以及提問的場景。 事件驅動,這種模式的特征是異步的,或是“fire and forget”的消息傳遞。它非常適合于設計跨服務的復雜依賴。

這兩種模式可以結合使用,例如使用請求-響應模式實現一個REST接口,隨后以事件的方式進行后臺處理。

Stopford隨后對異步與基于事件的通信,例如隊列的使用展開了討論。他認為這種模型非常簡單,只要做到一次只取出一條消息,就能夠保證消息的次序。即使將這一方式進行一定程度的擴展,仍然可以保證它的次序,但Stopford指出,在某些情況下,我們或許會失去可用性或是次序的保證。他還指出了該方式的另一個缺點,即消息的存在是短期的,因此服務一旦出現故障,就無法回到之前的時間點再次讀取這些消息了。

Stopford認為,更好的方法是使用某種分布式日志支持服務的開發,并以Kafka為例。Kafka是基于日志的概念而設計的,而日志是一種只增的數據結構。因此讀寫操作都非常高效,對于讀操作來說,只需定位到某個位置,并進行順序讀取。而對寫操作來說,所做的只是簡單的添加而已。

分布式的日志系統還能夠為微服務帶來以下好處:

始終在線,這依賴于某種容錯的代理,例如Kafka。 負載均衡,每個服務實例都將從一個代理中讀取數據。 容錯性,這是因為服務可能會產生故障轉移,但消息的次序仍然保持不變。 倒帶和回放,當系統發現了某個錯誤并修復之后,服務可以找回原始的消息,并進行回放。

但這種方式仍然有一個未解決的問題,即保持服務的一致性。因為在系統發生故障等一些情況下,很難避免出現一些重復的消息(“即至少一次”的提交機制)。因此,服務在處理他們收到的消息時必須保證冪等性(idempotent)。從邏輯上說,這相當于創建了一種“正好一次”的提交機制。Stopford表示,這一功能在Kafka中尚未實現(但相關功能已經在開發中了)。

Martin Kleppmann在本次大會的另一場演講中也提到了服務一致性的問題。

QCon的參會者已經可以欣賞Stopford的演講了,而InfoQ的讀者很快也能夠欣賞到演講的內容。Stopford同時也發布了這次演講的幻燈片。

查看英文原文:Microservices for a Streaming World

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 辽中县| 土默特左旗| 正镶白旗| 辽宁省| 甘谷县| 新安县| 微山县| 长宁县| 儋州市| 射洪县| 长岛县| 唐山市| 张家川| 修武县| 平山县| 廉江市| 新巴尔虎左旗| 武陟县| 延庆县| 安丘市| 绵竹市| 凉山| 祁阳县| 成安县| 屏东市| 伽师县| 和田县| 荆门市| 双鸭山市| 固镇县| 南康市| 桐乡市| 阿勒泰市| 山丹县| 阳信县| 区。| 峨边| 吴江市| 太仆寺旗| 遂昌县| 赫章县|