HomeAway分享雲端事件溯源經驗
HomeAway的資料架構師Adam Haines 最近 在 2018年資料架構峰會上 發表了關於他的團隊如何利用事件採購Event Sourcing雲設計模式來加速其組織中的大資料計劃的演講。
事件溯源等資料架構模式有助於解決團隊遷移到雲時面臨的新挑戰。這些挑戰包括最終的一致性,遺留服務依賴性,彈性規模和不可靠的網路。事件源透過將資料儲存從領域狀態更改到動作序列,從而改變了資料儲存的正規化。
他們在雲遷移中的主要目標是最大限度地減少雲平臺的技術債務。他們遇到了資料架構方面的挑戰,例如有限的事件重放,可審計性差,資料副本無處不在,可發現性和譜系有限,資料漂移以及一些彈性挑戰。
事件溯源基於不可變的變更日誌,並提供最大的可審計性。它帶來了諸如最終一致性,事件迭代和資料增長等挑戰。
他還討論了與事件溯源相結合的其他設計模式,即命令查詢責任隔離(CQRS),它將寫入和讀取問題分開,並允許應用程式和服務獨立擴充套件。
在HomeAway,事件溯源解決方案包括使事件規範化,捕獲增量變化(更改資料捕獲),“完全一次”訊息語義,保證訂購和解鎖服務。
事件結構
事件的資料結構很重要,因為這是以資料為中心或以應用程式為中心的基礎。只要資料格式是由寫入它的服務決定的,我們就可以從真正的資料民主化(資料民主化允許資料從一些分析師或DBA手中安全地傳遞到公司的群眾手中)中獲得更多。每個事件都應該非常精細並且與已知的現實世界相關聯。例如,“預定”不是一個有形的東西,但有一組屬性可以簡單地定義它:預訂可以有人員,入住日期,退房日期,房產,價格等。如果我們已經完成了我們的工作,那麼寫事件的服務/平臺/功能是無關緊要的,因為預訂領域已經是可與所有其他平臺和服務互操作。這是以資料為中心的架構的本質。
事件溯源好處和挑戰
好處:
- 事件溯源架構的最大優勢之一是資料民主化。將資料置於架構的中心允許服務輕鬆發現和訂閱,這對於開發人員的速度和實現近實時體驗至關重要。
- 事件溯源也為基於模式的程式設計開啟了大門。如果模式和庫已設定到位,那麼目標應該是讓入門級工程師在很少的加速時間或培訓的情況下執行開發生命週期。
- 事件採溯源提供了一個很好的審計跟蹤,因為整個歷史是持久的,這使得審計和視覺化發生的事情非常容易。我認為這是一個非常關鍵的方面,因為服務變得更加非同步,因為客戶需要實時更新或有關其交易狀態的反饋。
挑戰:
- 雖然讀/寫關注分離是有好處,但它也算是一種損害。透過事件溯源模型,軟體工程師現在必須真正考慮冪等操作以及如何處理不一致的結果。
- 隨著資料的增長,儲存空間和恢復當前狀態所需的時間也會增加。我認為有一個策略(恢復和/或快照)圍繞最小化重放的成本和影響是很重要的。
HomwAway實施經驗
HomeAway透過轉換為事件驅動架構,真正提高了架構的靈活性和彈性。這是一條漫長的道路(我們還在繼續),它始於一個訊息傳遞架構; 但是,我們發現資料需要成為我們工作的中心。在編碼方式方面,我們需要更敏捷,更具適應性。第一步是簡化資料的消費和生產。我們的目標是將事件置於我們業務的核心。利用事件和事件溯源為我們提供了更多的洞察力,更大的靈活性以及更好地利用雲的能力,同時幫助我們努力棄用舊資料中心服務。
使用Kafka和Photon兩種技術進行事件溯源。Photon是一個高度分佈的內部寫最佳化事件源平臺。
如何使用Strangler模式進行新舊系統替換?
strangler扼殺者模式不是你徹底改造現有系統,而你是透過將它包裹在一個外觀中來實現的。你將外觀下的元件從舊的換成新的,最終扼殺舊系統並移除外觀,然後只留下新的東西。這個想法是,隨著時間的推移這樣做可能比從頭重寫現有系統的風險更低。
在對strangler扼殺模式進行試驗後,我們意識到事件的價值和力量。這是我們真正開始推動事件採購作為一種手段,使公司更加以資料為中心。
他還談到了CQRS和事件採購模式如何協同工作以使系統更具彈性。
相關文章
- 四年運維生產經驗分享:Nordstrom的事件溯源系列之一運維事件
- 經驗分享:採用事件溯源的誤區(以及我們是如何避免的)事件
- ERP系統雲端現代化經驗線上分享會
- 四年運維生產經驗分享:Nordstrom的事件溯源系列之二-生產者釋出模式運維事件模式
- Spring Cloud在雲端計算SaaS中的實戰經驗分享SpringCloud
- 事件流與事件溯源事件
- 事件協作和事件溯源事件
- PHP 事件溯源PHP事件
- 經驗分享
- 剖玄析微聚合 - 事件溯源事件
- Netflix如何在雲端使用事件溯源實現可靠的物聯網裝置管理?事件
- 事件溯源全指南 - Arkwrite事件
- 事件消費者之 Saga - 事件溯源事件
- 事件消費者之 Reactor - 事件溯源事件React
- 事件消費者之 Projector - 事件溯源事件Project
- 如何在Java後端中實現事件驅動架構:從事件匯流排到事件溯源Java後端事件架構
- Polymer使用經驗分享
- 【高中經驗分享】2021.11.29
- 小程式·雲開發 專案開發經驗分享
- 雲控系統的玩法和實戰經驗分享
- 使用Kafka實現事件溯源Kafka事件
- Rust中的事件溯源 - ariseyhunRust事件
- 分享抖音交流經驗
- 徵求護眼經驗分享
- 遊引力出海經驗分享
- 6條經過驗證的創業經驗分享創業
- DDD經驗:分享工作,分享決策 – Jessitron
- Chronicle事件溯源的最佳實踐事件
- .NET分散式Orleans - 6 - 事件溯源分散式事件
- Python的事件溯源開源庫Python事件
- Spring Boot和EventStoreDB事件溯源案例Spring Boot事件
- Occcurrent:JVM事件溯源工具庫包JVM事件
- 雲平臺分散式儲存池建立實施經驗分享分散式
- TypeScript 重構 Axios 經驗分享TypeScriptiOS
- Native轉型Flutter經驗分享Flutter
- 考研經驗分享(上岸南理工)
- 封裝 avm 元件經驗分享封裝元件
- 精益生產經驗分享