服務治理的一些思考

隨著線上業(yè)務越來越復雜, 服務越來越多, 系統(tǒng)結構也越來越復雜, 如下幾個問題浮出水面:

  • 知識管理混亂
    • 系統(tǒng)結構太復雜, 僅僅有幾個資深開發(fā)才了解, 唯一的'架構圖'是N個月前資深同事分享的時候畫的, 早已過時
    • 新人學習成本太高, 看過時的架構圖/讀源代碼
    • 老員工離職, 如何快速接盤? 這個話題可以寫一本書. 但核心問題是知識管理.
  • 單一服務報警, on-call 工程師無法準確評估是否下游服務會受影響, 或者是哪些上游服務有問題
    • 例如, 某服務 rps 急劇下降, 但on-call 工程師甚至都搞不清楚都有哪些系統(tǒng)在調用該接口, 更別提判斷是哪個系統(tǒng)的問題. 只有在'線上救火群'里大吼, 叫各個服務的工程師起床檢查是否是自己系統(tǒng)的問題, 這簡直就是全民 on-call 的節(jié)奏
  • 系統(tǒng)架構改造/review 無參考
    • 系統(tǒng)改造第一件事: 叫各個系統(tǒng)開發(fā), 一起在黑板前畫系統(tǒng)結構. 人要叫齊, 要不有遺漏中途改方案好痛苦
    • 大型推廣活動上線前, 做系統(tǒng)容量評估/規(guī)劃, 無統(tǒng)一參考.
  • 系統(tǒng)架構更改, 如何廣而告之
    • 也屬于知識管理范疇, 但覺得應該單獨拎出來

明確了問題, 看看我們有哪些方案可選


方案一: 引入類似 Dapper 的 trace 系統(tǒng)

核心思路就是每次 request 帶著一個唯一 ID, 每個系統(tǒng)收到后寫日志, 后續(xù)分析系統(tǒng)依賴. 開源實現由很多, 例如 CAT, pinpoint等. 引入這些系統(tǒng)對 troubleshooting 也有很大幫助.
但也有幾個問題無法解決:

  • 多語言. 沒有看到一個 framework 能夠涵蓋各種語言. 我廠使用的語言有: Java, Ruby, Go, C++
  • 無法解決知識管理問題. 僅僅是線上系統(tǒng)拓撲
  • 僅僅標記依賴資源類型, 沒有具體資源
    • 比如, 標識哪個 MySQL 數據庫, 哪個 Kafka Topic.

方案二: 使用 Agent 分析協(xié)議, 識別系統(tǒng)拓撲和資源

既然 Dapper 類似的系統(tǒng)無法解決問題, 直接開啟'上帝視角'通過抓包分析協(xié)議不就行了?
然而, 現實是骨感的:

  • 實現難度大, 各個系統(tǒng)的協(xié)議都要重新實現一番
  • 加密協(xié)議如何解?

ROI 太低. 放棄. 不過前幾天去灣區(qū)參加 Spark Summit 2016, 在展臺發(fā)現一家創(chuàng)業(yè)公司 OpsClarity 正式用分析協(xié)議的方式實現了服務拓撲管理. 當然, 他們的產品沒有這么簡單. 跟他們聊天發(fā)現, 資源識別的粒度他們也沒有做到很精細, 比如僅僅識別了 Kafka, 但具體是哪個 topic 卻沒有實現.

OpsClarity 宣傳圖
OpsClarity 宣傳圖


方案三: 結構化文本 + 版本管理 + code review + 可視化

既然協(xié)議分析 ROI 太低. 是不是可以參考 CloudFormation, 實現一個結構化文本方式描述服務的系統(tǒng)? 比如配置文件:

{
  "name": "系統(tǒng)名稱, 唯一",
  "desc": "系統(tǒng)簡介",
  "links": [
    {
      "monitor": "監(jiān)控系統(tǒng)鏈接"
    },
    {
      "wiki": "wiki 系統(tǒng)鏈接"
    }
  ],
  "resources": [
# 這里是系統(tǒng)暴露的資源, 例如 MySQL DB, Kafka topic, AWS S3 bucket 等
  ],
  "depends-on": [
# 這里該服務所依賴的服務. 例如: RDS 數據庫.
    {"name": "aws-rds.rds-name.db-name"},
    {"name": "其他系統(tǒng)"}
  ]
}

具體實現思路如下:

  1. 通過結構化文本(或者 python 文件, 類似 airflow 實現方式), 描述服務的依賴, 鏈接等
  2. 結構化文本放在 git 中做版本控制, 改動后通過 code review 流程, 讓其他開發(fā)review.
  3. 通過文件夾形式, 組織服務描述文本
  4. 通過客戶端工具, 校驗配置文件是否合法
  • 依賴是否正確
  • 鏈接知否正確
  1. 通過 web ui, 展示渲染后的服務拓撲圖
  • 通過搜索等功能, 提高易用性
  1. 通過 API 方式, 整合報警, 讓 on-call 工程師清晰知道直接系統(tǒng)依賴
  2. 通過 Cubism 重構監(jiān)控系統(tǒng), 整合系統(tǒng)拓撲, 定位系統(tǒng)問題

總結

這個系統(tǒng)我已經思考了一段時間, 中途去 Spark Summit 2016 偶遇 OpsClarity, 進一步整理了思路. 找時間把 demo 實現出來, 用一用, 再看大家反饋吧.

-- EOF --

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末扬霜,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌盼玄,老刑警劉巖屁倔,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異宪郊,居然都是意外死亡昼激,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門霞揉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旬薯,“玉大人,你說我怎么就攤上這事适秩“硇颍” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵秽荞,是天一觀的道長骤公。 經常有香客問我,道長扬跋,這世上最難降的妖魔是什么阶捆? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮钦听,結果婚禮上洒试,老公的妹妹穿的比我還像新娘。我一直安慰自己朴上,他們只是感情好垒棋,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痪宰,像睡著了一般叼架。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衣撬,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天乖订,我揣著相機與錄音,去河邊找鬼具练。 笑死乍构,一個胖子當著我的面吹牛,可吹牛的內容都是我干的扛点。 我是一名探鬼主播哥遮,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼占键!你這毒婦竟也來了昔善?” 一聲冷哼從身側響起元潘,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤畔乙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后翩概,有當地人在樹林里發(fā)現了一具尸體牲距,經...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡返咱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了牍鞠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咖摹。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖难述,靈堂內的尸體忽然破棺而出萤晴,到底是詐尸還是另有隱情,我是刑警寧澤胁后,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布店读,位于F島的核電站,受9級特大地震影響攀芯,放射性物質發(fā)生泄漏屯断。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一侣诺、第九天 我趴在偏房一處隱蔽的房頂上張望殖演。 院中可真熱鬧,春花似錦年鸳、人聲如沸趴久。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朋鞍。三九已至,卻和暖如春妥箕,著一層夾襖步出監(jiān)牢的瞬間滥酥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工畦幢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坎吻,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓宇葱,卻偏偏與公主長得像瘦真,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子黍瞧,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容