《餓了麼 業務井噴時,訂單系統架構這樣演進》讀後感

2022-05-24 18:57:12 字數 1964 閱讀 6923

先來看張表;

很直觀的可以看出,餓了麼的業務的快速增粘情況,2023年和2023年的時候發生了比較大的飛躍,餓了麼也是在這個時間段訂單量開始猛增。

對於系統的認知;

第一,訂單是整個交易鏈路的核心,圍繞了一些相關服務,比如金額計算服務、催單服務、售中異常服務等,我們希望這些服務之間有明確的區別。

第二,訂單實時處理是整個鏈路的中心,我們將這個過程定義得盡量簡潔。一筆交易中,訂單被推進得越複雜,說明系統設計得越複雜,出問題的概率也會越高。所以我們希望訂單核心流程非常簡單、輕薄,把複雜的東西剝離出來,把簡單和複雜明確成兩個部分。

第三,考慮到交易的時效性和異常場景越來越複雜,將交易分成正向交易流程和逆向交易流程兩個部分。正向交易流程,99%的訂單會根據這個流程走完生命週期;逆向交易流程,比如說退單要求時效性比較低,處理會牽扯多方業務可能很複雜,所以通過乙個逆向的交易流程來解決。

第四,能夠在功能和業務上獨立的部分,盡可能抽象為單獨的模組或服務。簡單來說,比如催單的服務,它其實對交易鏈路無法起到推進作用,它只是乙個動作或者附帶服務,我們把它單獨抽象出來,為後面的發展做出鋪墊。

對於監控和告警的峰值非常明顯,午間和晚間兩個高峰,其他時間流量相對平緩。下面主要講三個部分。

第二,通常我們重視系統指標,而容易忽視業務指標,其實業務指標更能反映出隱晦的問題。

第三,目前我們致力於基於監控和資料學習的過載保護和業務自動降級。雖然現在還沒有完全做好,但是已經能感覺到一些效果。如果商戶長時間不接單,使用者會自動取消訂單,自動取消功能的開關目前是人工控制的,我們更希望是系統來控制。

訂單系統而言主要有以下四個內容。第一是訊息廣播補償,第二是主流程補償,第三是災備,第四是隨機故障測試系統。在部署方面,把提供補償功能的服務和主服務分開部署,依賴的服務也需要使用獨立例項,以保證高可用性。在效果方面,使用者支付成功前的所有資訊都應該盡量入庫,可以對支付、待接單、接單等一系列環節都可以做補償。

餓了麼的系統參考了netflix的猴子家族,研發了自己的kennel系統。猴子家族主要是針對節點的攻擊,我們的kennel主要是對網路、記憶體等做了調整,還結合自己的服務,對應用和介面也做了一些攻擊。攻擊分兩部分。

第一部分是物理層面的,我們可以對指定節點io做攻擊,或者把cpu打到很高;對於服務和介面而言,可以把某個介面固定增加500毫秒或者更要的響應延遲,這樣做的目的是什麼?在整個鏈路中,我們希望架構設計或者節點都是高可用的,高可用就需要被測試,通過大量的測試人為攻擊節點或者服務,來看預先設計好的那些措施或者補償的能力是不是真的有用。

整個kennel的設計是,首先會有乙個控制中心來做總的排程,配置模組可以配置各種計畫,可以控制cpu或者網路丟包等,可以設定在每週六8-10am的某個時間點攻擊系統十五分鐘。它還有一些操作模組,比如執行計畫模組、任務執行模組、節點管理模組、執行記錄模組等。

kennel有四個主要的作用。

首先,幫助我們發現鏈路中隱蔽的缺陷,將小概率事件放大。比如說快取不一致的問題,之前極少出現,一旦出現之後,處理手段比較缺乏,那就可以通過kennel來模擬。網路的抖動是很隨機的,那麼kennel可以在某個時間段專門進行模擬,把小概率事件放大。如果懷疑某個地方出了問題,可以通過它來測試是不是真的能查出問題。

第二,重大功能可以在發布之前通過其進行測試,迫使你更深入地設計和編碼。通過模擬流量或者線上流量回放,來檢驗系統執行是否如你設計那樣工作,比如監控的曲線或者告警以及相關服務之間的依賴等。

第三,我們做了很多失敗的準備和設計,要看到底會不會起作用、起多大作用。可以通過kennel進行校驗,在某個時間通過隨機手段攻擊相關服務,服務方不知道具體的攻擊內容,這時原本設定的監控告警,降級熔斷等措施有沒有及時起作用就是乙個很好的校驗。同時還可以檢驗之前準備的容錯或者補償措施是否能按照預期工作。

第四,需要驗證failover的設計,只有驗證通過才可以依靠。所有的設計都是經歷了一次一次的失敗,一些設計原以為有用,但是真實問題發生時並沒有起到作用。真正有意義的failover設計一定是經過驗證的。

訂餐系統之同步餓了麼商家訂單

之前實時獲取口碑外賣商家訂單,及點點送訂單,再使用的我們的排程系統統一排程各個 的訂單,再結合配送員自主搶單,加上配送員隊長線上排程,最大限度的讓配送員加 順路單 提高效率.這套班子不應該因為口碑沒了,就變成破銅廢鐵。暮然回首,原來餓了麼也有商戶介面,雖然沒有 外賣開放平台那麼強大,提供好幾種語言的...

訂餐系統之同步餓了麼商家訂單

之前實時獲取口碑外賣商家訂單,及點點送訂單,再使用的我們的排程系統統一排程各個 的訂單,再結合配送員自主搶單,加上配送員隊長線上排程,最大限度的讓配送員加 順路單 提高效率.這套班子不應該因為口碑沒了,就變成破銅廢鐵。暮然回首,原來餓了麼也有商戶介面,雖然沒有 外賣開放平台那麼強大,提供好幾種語言的...

餓了麼 餓百 美團 外賣訂單API

美團 查詢訂單列表 美團拉取訂單列表 function sign data secret url,else urls url ltrim s secret 簽名 sig md5 urls temp url ltrim s sig sig return temp url data timestamp ...