主頁 >  其他 > 貨拉拉技術副總監陳永庭:基于公共云的技術穩定性保障實踐

貨拉拉技術副總監陳永庭:基于公共云的技術穩定性保障實踐

2021-11-04 13:08:44 其他

引言

2021年10月22日,在云棲大會的《云上運維最佳實踐》分論壇,貨拉拉技術副總監陳永庭發表了主題為“基于云的貨拉拉技術穩定性保障實踐”的演講,為大家分享了貨拉拉在過去一段時間是如何做到技術穩定性保障的,希望給有同型別業務場景的同行提供一種思考方式,

file

圖:貨拉拉技術副總監陳永庭

以下是根據他的演講整理成的文章,主要分為四個部分:

一、貨拉拉業務形態

二、基礎架構治理

三、技術保障能力的建設

四、跨云的思考與實施

一、貨拉拉業務形態

貨拉拉從成立到現在已經有接近十年的時間,從2013年開始我們主要做同城貨運與國際貨運,到現在我們有企業、跨城、搬家、零擔等多條業務線,這些業務線有共性,也有不一樣的地方,在技術系統的容量保障上,與業務特征有很強的關系,平臺提供司機運力的供給,幫助配對用戶貨物的訂單需求,

file

所以,在供需出現不平衡的時候,會對我們的系統帶來一些壓力,譬如:運力不足;用戶反復下單;調度系統努力幫助訂單尋找配對的運力,這期間會產生大量的計算需求,系統的容量峰值會是正常峰值的好幾倍,但我們系統常態下沒有足夠的空閑容量,

file

這是貨拉拉的各個業務的流量形態圖,業務形態是典型的高峰低峰的分布,這是正常的狀態圖,但不正常的情況也有很多,比如有的業務線周一到周五流量是比較小的,周末流量是平時的好幾倍;還有在節假日前夕,出現很多司機運力不足的問題,這個時候,我們的取消單、待配對單等指標就會增長,我們的司機調度系統也會頻繁地告警,

所以在過去1-2年里,我們會重點關注,在當前的業務形態下,技術系統和系統容量如何去設計?我們在日常保障中如何合理的評估、壓測系統的容量?

file

在過去1-2年里,我們的技術團隊規模快速增長,同時我們也遇到了一些問題需要去解決,

首先我們的研發同學不但要快速地交付業務,而且要清還歷史技術的“債務",尤其是前期,"債務"比較多的時候,我們要分辨出優先解決的問題,像核心服務依賴非核心服務的鏈路治理、填補主鏈路上的降級措施能力等,

另外我們非常關注研發效率與技術保障之間的平衡,前期,在很多領域,我們會優先通過技術手段來提升普適性場景的效率,并且不需要業務研發同學投入太多時間(避免影響他們的業務交付效率),如果要做到足夠好的技術穩定性保障,研發同學需要在自己的服務代碼里加上更多額外的保護措施,這個作業量是比較大的,對一些業務需求交付節奏比較快的團隊來說是很難的,舉個例子:我們最早期監控框架SDK在研發接入的時候,不需要研發人員修改代碼,只需要把JAR包集成到服務里,

最后,在技術團隊規模快速增長的程序中,我們的技術標準,落后于我們的訴求,公司內部出現較多非標準化的技術操作,在這個時期,我們會考慮一些優先級比較高的事情先做,比如,我們會在特定的時間里,優先解決監控問題、告警問題、故障預案平臺的問題,然后再去解決其他非標領域的事情,

二、基礎架構治理

貨拉拉的基礎架構是如何治理的呢?如何通過基礎架構的治理來提升基礎的穩定性?

前期我們主要聚焦在兩個方面:一是貨拉拉結合自身情況去做服務化治理,其次,如何讓研發同事在相對可控、有保障的前提下,支撐他們方便快捷的發布?甚至可以在高峰期時間發布,且不會出現無法預料的風險,

下圖是貨拉拉最早期的技術架構版本,它實際上很簡單,支持快速開發,支撐快速交付,由于我們的研發工程師效率非常高,今天很快可以把業務需求的代碼寫完,明天就能測驗上線,這種方式快速支撐了業務的高速發展,但這種“快”也帶來一些隱患,當我們的業務規模、資料規模、服務規模在百萬訂單級別下發生了很大的變化,“快”引發的一些問題變得越來越凸顯,

file

首先業務鏈路服務不可靠;關鍵服務與非關鍵服務之間不清晰,并且相互依賴,這很容易因非關鍵服務導致整個主鏈路發生故障,

其次部分核心服務臃腫龐大,不易維護

第三服務自愈能力比較弱,在瞬間幾倍高峰流量下很容易發生系統癱瘓,

第四我們過去排障效率低,故障應急處理時間長,這是我們最困難,最黑暗的一段時間,

file
所以,我們立馬開始著手服務化治理,讓所有業務服務是處于一種可治理狀態,讓整個業務鏈路是清晰的,這個技術本身不難,業內有諸多成熟的開源微服務治理框架可以直接使用,但對我們來說,難點是我們生產環境有很多老的服務在運行著,有的是JAVA實作的,有的是PHP實作的,我們沒有辦法做到讓研發一次性把老代碼全部鏟掉,按照標準方式重新開發,這個是無法落地的,針對這個問題,我們的方案是采取泛服務化的設計方式來解決,

何為泛服務化?泛服務化就是在保留原有HTTP URL API呼叫原型的情況下,達到服務化治理的目的,研發同學無須對老服務進行大量的代碼改造,只需要輕量的調整HTTP URL call的代碼呼叫方式,動幾行代碼即可,這樣就具備了基本的服務注冊與服務發現與路由的機制,這種設計方式實作了大量老服務無須花太多代價就達到了服務治理的目標,

在這樣輕量改造下,使得我們可以快速地在生產環境進行落地,讓所有的老服務具備了基本的服務化治理的能力,在生產環境的穩定性技術保障程序中我們就有了更多的治理與應急手段,

file

我們業務的主要技術堆疊是Java和PHP,在過渡期我們的系統就會存在多種型別的服務并存,這些型別的服務他們在同一個大的運行環境里,可以方便的相互通訊,隨著老服務被慢慢改造成標準微服務架構,最終形成了全量的標準微服務鏈路,做到了不“一刀切”(全量高成本改造)也能在初期讓服務架構具備治理能力,

file
我們第一代技術堆疊是以PHP技術為主,PHP高效快速的支持了業務的發展,但是在過渡期,我們如何讓PHP服務跟Java服務在大的服務架構里互聯通訊 ?我們中間件團隊用了PHP sidecar的方式,幫助PHP做服務注冊和發現以及服務配置,讓PHP和Java可以在同一個池子里運行,

做完服務治理之后,生產環境的鏈路就變得相對明確清晰,我們的監控工具可以把服務鏈路清晰的畫出來,當出現技術故障或者冒煙時,我們也會有更多手段去做一些降級、限流、熔斷等應急操作,我們可以更快的解決問題,讓故障恢復的時間變的更短,

在我們服務化治理達到預期后,常規的生產故障會在很短的時間內被快速修復掉,從系統的流量角度看,我們初期是一個單IDC、單鏈路的架構,鏈路容錯性比較差,在很長一段時間,我們的生產效率比較低,大版本發布經常持續到凌晨,為了提升發布效率,提升技術穩定性,我們演進架構到單IDC、多鏈路方式(如中間的圖),

file
雖然所有服務依然在一個資料中心內,但可以創建出多條不同邏輯的流量鏈路,鏈路之間相互隔離,我們內部稱呼為泳道,這種設計方式,解決了全鏈路高峰期生產灰度發布的場景問題,

這樣的流量調度架構不但解決了我們生產發布效率與低風險的問題,而且它也是作為我們系統容量發生嚴重故障時的一種應急手段,如果系統容量出現了致命的瓶頸故障并且無法快速恢復,系統容量不足無法扛住全網全業務的流量,我們可以緊急配置,修改流量調度策略,保住比較重要的城市和區域業務,

三、技術保障能力的建設

貨拉拉在完成服務化架構(含泛服務化)的重構與治理之后,技術穩定性保障有了更多的手段與措施,在這個時期,技術團隊也專門成立了全域穩定性團隊,團隊的核心職責是建設與完善貨拉拉技術保障體系平臺,目前的體系概貌如圖所示,

file

整套體系涵蓋了前置建設、故障發現、故障回應、故障止血與故障復盤等領域,并且為每個領域優先打造了比較急需的能力,其中最重要的有兩個方面,

第一,NOC團隊,這個團隊的職責就是做穩定性大盤監控與職守,以及指揮生產故障的應急回應,他們需要做到快速止血、快速修復,我們要求這個團隊在1分鐘之內發現問題,5分鐘之內回應這個問題,NOC是我們技術保障體系的守門人,

第二,組織保障很重要,我們通過設定單獨的組織架構與組織職責,重視故障的復盤與復盤整改的跟進倍訓,定義穩定性程序指標和持續跟進這些指標,

file

大監控平臺是我們技術保障體系最重要的領域,初期階段,我們給予監控平臺最高優先級去建設,內部團隊一直稱呼為AI-Monitor專案,

專案啟動之初,大家一致選擇一條艱難的路,希望開發出的監控平臺既能提供監控告警的常規能力(應用接入采集、資料存盤計算、查詢展示與告警),也能解決一些深層次的問題,譬如智能發現、智能健康掃描、自動分析與定位,所以大家在專案名稱中帶上了AI,

目前為止,監控平臺已經覆寫了所有應用(1000+),覆寫所有的節點(9000+),每天會收到5000+條告警(降噪前),除了監控平臺的功能性覆寫外,我們也會關注監控指標資料的實時性,查詢回應延遲,把這些指標作為監控平臺自身的關鍵技術指標對待,

這里重點提一下監控平臺AI OPS模塊里面的風險預測功能,平臺無時無刻不在對每一個業務應用進行“健康體檢”,捕獲應用運行機器的OS指標(CPU、IO、Mem、Network等),服務自身行程空間的指標資訊(CPU、Thread、Mem、TCP等),應用服務的上下游服務,應用吞吐能力(QPS、Latency),應用依賴的基礎設施和中間件服務(DB、Cache、MQ等),Java應用的JVM資訊,把這些指標資訊匯合在一起,檢查是否有處于不合理范圍區間的指標,一些指標也會進行“榷訓比/周同比”檢查,背后專家團隊也會持續的修訂和定義這些指標的合理區間,如果發現有任何一個指標出現問題,平臺就會發出預警,提醒我們研發同學做進一步的診斷,

這種風險預測能力在貨拉拉內部被廣泛使用,我們統計有超過70%的技術冒煙事件都是可以通過這些常規的預測進行提前感知的,幫助我們把一些可能會引發嚴重技術故障的起因扼殺在最早期,

file

監控平臺另一個比較重要的功能是根因自動分析,這個功能在內部的探索已經初具成效,我們依靠監控平臺的自動分析,做到快速定位原因,平臺的自動分析能力會聚合所有的例外指標,結合內部自動構建的服務鏈路關系,給出初步的分析建議,這大大加速了我們工程師人工排查的效率,我們可以快速定位故障的“根源”,第一時間用最合理的措施進行止損與恢復,最大程度降低了故障導致對業務的影響,

file

全鏈路容量壓測,是貨拉拉技術保障體系中的最核心的戰場,在穩定性保障程序中,必須要知道系統容量可以支撐多大的業務量?核心主鏈路服務的容量短板在哪些地方?貨拉拉在實作全鏈路容量壓測平臺時,也遇到過一些場景的設計與選擇,

一,技術改造的選型,貨拉拉選擇生產真實庫表,

二,資料和流量模型的設計,由于主鏈路業務服務的流量比例不同,我們針對這些服務進行流量請求的額外補償,這樣讓整個鏈路上的所有服務都得到1.5倍、2倍的流量壓力,讓整個系統的容量壓測更全面和精準,

三、容量治理與演練,我們每隔兩周做一次全鏈路容量壓測,跟進解決容量壓測發現的技術設計、性能問題,避免系統技術架構長時間迭代出現腐化,另外,技術保障團隊會定期結合壓測進行生產故障模擬演練,讓保障團隊的研發同學始終保持對生產系統的穩定性敏感度,

file

技術保障體系中的資料平臺建設,是貨拉拉非常重視的一塊領域,我們通過自建的DMS平臺管理和治理資料類基礎服務,平臺的建設程序中會比較關注三個方面的能力,

第一,當業務體量快速發展,資料規模成倍增長,DMS在資料隔離、服務限流和實時擴縮容做了很多自動化建設,

第二,DAL是我們快速引入并推動落地的資料庫訪問中間件,使資料庫具備靈活彈性的分庫分表、讀寫分離架構能力,來快速支撐業務規模的增長,

第三,資源ID化設計,我們在交付資料服務時,是不會將服務的真實物理資訊(鏈接串)暴露給研發的,而且我們的框架和工具是完全集成支持資源ID,研發同學做到開箱即用,不需要去了解資源ID背后各個環境的集群、部署和配置等資訊,技術保障同學也可以通過資源ID快速定位是哪個業務應用在使用服務(譬如:DB、Cache、MQ)時出現了問題,

四、跨云的思考與實施

最后,我們聊聊貨拉拉在多云場景下,我們是如何平衡效率,成本,穩定性設計,主要有三個方面:磨平多云的差異化、云抖動的防范、IT成本的治理措施

file

第一,磨平多云的差異化,因為貨拉拉的業務在多云場景下,云商服務的API會存在一些差異性,所以我們內部做了一個LCloud工具平臺來對接所有的云商,工具會磨平云商的差異,我們內部的研發、運維同學通過LCloud可以獲得一致的操作體驗,

第二,云是一定會抖動的,如果我們跑在云上的服務不具備足夠的彈性,那么云上的“抖動”一定會影響你的業務,一旦出現網路的短暫抖動,就會導致整個服務回應延遲升高導致服務不可用,這個服務的吞吐能力會全部掉底,導致業務鏈路受損,

第三,云服務的IT成本,貨拉拉目前的成本管控措施除了使用K8s基礎設施做資源的彈性調度外,還大量使用了云商的一些特性,譬如:競價實體、預留實體的購買,容器化團隊也在研究如何在低峰時間彈出閑置資源,提供給離線任務場景的使用,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/347277.html

標籤:其他

上一篇:具有編碼能力的可展開結構人造肌肉

下一篇:具有編碼能力的可展開結構人造肌肉

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more