中臺(tái)已死,平臺(tái)長(zhǎng)青
共 11258字,需瀏覽 23分鐘
·
2024-08-03 10:01
??目錄
1 背景
2 客戶第一
3 性能和成本
4 功能設(shè)計(jì)
5 研發(fā)效率
6 運(yùn)營(yíng)效率
7 技術(shù)文檔
8 發(fā)展的思考
01
02
-
如果對(duì)系統(tǒng)實(shí)現(xiàn)不熟悉的外包同學(xué)能解決問題,那么文檔也能解決,如果文檔能解決,那么我們就不需要提供咨詢支持的外包同學(xué)。 -
如果文檔解決不了,那么咨詢外包同學(xué)也很難解決,他會(huì)成為任務(wù)分包的角色,這時(shí)候任務(wù)還是會(huì)落到背后的開發(fā)同學(xué)身上,此時(shí)必然打擾到開發(fā)同學(xué),打亂原定的工作計(jì)劃,且會(huì)讓客戶覺得 helper 并不專業(yè)。 -
服務(wù)告警和運(yùn)維處理涉及系統(tǒng)穩(wěn)定性,對(duì)值班同學(xué)和技術(shù)產(chǎn)品的自動(dòng)運(yùn)維能力要求較高,交給外包有一定風(fēng)險(xiǎn)。
-
每個(gè)人都有機(jī)會(huì)熟悉全系統(tǒng)所有模塊。 -
對(duì)客戶價(jià)值有更直接的認(rèn)識(shí)。 -
促進(jìn)用戶手冊(cè)建設(shè)。 -
更容易對(duì)不合理的設(shè)計(jì)提出挑戰(zhàn)。
03
-
架構(gòu)優(yōu)化,譬如:二級(jí)和三級(jí)扇出架構(gòu)、微服務(wù)合并。 -
新技術(shù)應(yīng)用,譬如:新 rpc 框架、協(xié)程、SIMD 并行指令。 -
空間換時(shí)間,譬如:業(yè)務(wù)緩存、計(jì)算緩存、jemalloc 內(nèi)存池。 -
數(shù)據(jù)結(jié)構(gòu)優(yōu)化,譬如:用塊鏈代替稀疏位圖、貼合 cacheline 的內(nèi)存結(jié)構(gòu)。 -
策略簡(jiǎn)化,譬如:多次查詢改成單次,再通過更好的檢索策略補(bǔ)充效果。 -
實(shí)現(xiàn)細(xì)節(jié),譬如:去掉拷貝、去掉鎖、復(fù)用對(duì)象。
-
設(shè)備選型: -
高內(nèi)存高計(jì)算型的服務(wù),使用 AMD 設(shè)備,并且不開 NUMA。 -
無須實(shí)時(shí)訪問磁盤的服務(wù),選用非 SSD 磁盤。 -
配額最小化:CPU/磁盤/內(nèi)存,全部最小化配置。 -
自動(dòng)化調(diào)度:通過 123 平臺(tái)(注:內(nèi)部容器服務(wù)管理平臺(tái))的調(diào)度配置,配置自動(dòng)縮容閾值。 -
云原生看板建設(shè) CPU 使用率看板,查看 CPU 變化趨勢(shì)。 -
利用率監(jiān)控 CPU 峰值利用率低于 50% 的發(fā)出告警。 -
專人檢查 CPU 使用率、使用量、流量變化,最晚 T+1 和業(yè)務(wù)溝通處理。 -
對(duì) CPU 有毛刺的離線計(jì)算業(yè)務(wù)做針對(duì)性治理,和業(yè)務(wù)團(tuán)隊(duì)溝通將流量打散。
04
-
采用類 json 的 DSL 語(yǔ)法,既滿足通過任何檢索規(guī)則組合實(shí)現(xiàn)復(fù)雜檢索策略的需求,后來也為使用 ES 的業(yè)務(wù)遷移到 XSearch 提供了便利。
-
風(fēng)格一致的代碼、文檔可以提高閱讀效率,對(duì)于技術(shù)產(chǎn)品的功能設(shè)計(jì)也一樣有價(jià)值,產(chǎn)品在不斷的增加功能,一致性的設(shè)計(jì)會(huì)讓一個(gè)技術(shù)產(chǎn)品顯得越來越強(qiáng)(而不是增加多個(gè)需要重新學(xué)習(xí)的技術(shù)產(chǎn)品),在增加向量召回功能的時(shí)候,我們把向量當(dāng)作一種和倒排、正排、枚舉并列的一種索引能力,復(fù)用原來 XSearch 的全套流程,既減少開發(fā)量,使用上也不突兀。
-
通用檢索能力,大多數(shù)的客戶不需要了解分詞、query 理解、檢索語(yǔ)句組裝,所以我們將檢索策略做成可視化配置,只需要在界面上做選擇,就能獲得一個(gè)不錯(cuò)的召回能力。 -
個(gè)性化能力,如果通用檢索無法滿足,需要定制化怎么辦?我們通過 DSL 語(yǔ)法、排序插件、腳本插件提供廣闊的個(gè)性能定制。 -
debug 能力,業(yè)務(wù)在使用檢索引擎時(shí),用于 debug 的時(shí)間往往不比寫一段召回代碼的時(shí)間短,所以 debug 能力的建設(shè)一樣非常重要。
-
想要規(guī)模化的產(chǎn)品,必然是通用的。而業(yè)務(wù)產(chǎn)品又可能提出來定制需求,我們通過配置化、插件系統(tǒng)解決大多數(shù)定制問題,譬如:要搜索標(biāo)題還是搜索標(biāo)簽、要用默認(rèn)排序還是自定義排序等等。但部分問題沒辦法完美解決,會(huì)付出代價(jià),譬如:架構(gòu)設(shè)計(jì)和協(xié)議設(shè)計(jì)。 -
代價(jià)-架構(gòu)設(shè)計(jì):當(dāng)只服務(wù)一個(gè)業(yè)務(wù)的時(shí)候,系統(tǒng)的變數(shù)少,不需要考慮太多插件擴(kuò)展,架構(gòu)簡(jiǎn)單服務(wù)耗時(shí)短、開發(fā)周期短。 -
代價(jià)-協(xié)議設(shè)計(jì):不用考慮多業(yè)務(wù)有不同字段的需求,當(dāng)有新增字段時(shí),直接追加新字段即可。而考慮到多業(yè)務(wù)時(shí),要么是犧牲性能,定義 map 類型來應(yīng)對(duì)不同業(yè)務(wù)的差異化字段,要么是使用 oneof,把不同業(yè)務(wù)的個(gè)性化字段拆分到不同 message 中,不管那種方式,都會(huì)給協(xié)議增加復(fù)雜度,對(duì)性能有影響。
-
單個(gè)業(yè)務(wù)下的技術(shù)產(chǎn)品,選擇一般是單一明確的,追求性能或者追求易用,而平臺(tái)化的技術(shù)產(chǎn)品則需要考慮提供多種選擇。譬如:接口協(xié)議的設(shè)計(jì)上,正排索引值是返回序列化后的字符串,還是返回原始數(shù)字,追求性能的用戶希望返回原始數(shù)字,追求易用性的用戶希望返回字符串直接用來展示。
-
模擬查詢。 -
解釋查詢。 -
文檔查詢。 -
索引信息查看。 -
全鏈路 trace。
05
-
MR 流水線。 -
主干提交流水線。
-
分支和 tag 命名規(guī)范,提升可讀。 -
主干代碼只能通過 MR 合入。 -
MR 必須經(jīng)過有經(jīng)驗(yàn)開發(fā)者、綠帶認(rèn)證者評(píng)審。
-
開發(fā)者必須獲得開發(fā)者資質(zhì),包括:編碼規(guī)范考試、代碼安全考試。 -
增量代碼單測(cè)覆蓋率 > 85%。
-
需求扭轉(zhuǎn)流程管理。 -
基于 VSCode 或者 Vim 的代碼格式化工具。 -
測(cè)試、灰度、全量發(fā)布工具。
-
公司文化,受益于這幾年公司對(duì)工程素養(yǎng)的重視,大量的宣導(dǎo)、強(qiáng)制課程學(xué)習(xí)、內(nèi)部論壇討論,團(tuán)隊(duì)全員受過 CR 的基礎(chǔ)培訓(xùn)和引導(dǎo)。我們也通過小團(tuán)隊(duì)內(nèi)的討論和制度的強(qiáng)制落實(shí),讓每個(gè)人會(huì)意識(shí)到: -
代碼可以寫得更好; -
CR 活動(dòng)需要花費(fèi)不少時(shí)間; -
CR 是完成需求過程中的必要環(huán)節(jié)。 -
團(tuán)隊(duì)制度,設(shè)計(jì)一套代碼評(píng)審流程,并由核心同學(xué)帶頭落實(shí)。 -
團(tuán)隊(duì)成員,借力公司課程、職級(jí)晉升的代碼質(zhì)量要求,讓多數(shù)人有意愿、有能力、有時(shí)間執(zhí)行代碼評(píng)審。 -
評(píng)審工具,通過流水線、工蜂、研效看板,確保代碼評(píng)審過程可高效執(zhí)行。
06
-
一站式運(yùn)營(yíng)系統(tǒng),用戶使用 XSearch 的所有的操作都在運(yùn)營(yíng)系統(tǒng)中完成,包括數(shù)據(jù)接入、檢索策略、debug;管理員操作的審批、部署也都在運(yùn)營(yíng)系統(tǒng)中完成; -
用戶手冊(cè),減少人工咨詢; -
helper 賬號(hào),人工咨詢和業(yè)務(wù)接入審批等; -
值班制度,全職投入,處理告警、用戶咨詢、云原生治理、業(yè)務(wù)審核等工作; -
群溝通渠道,每個(gè)業(yè)務(wù)一個(gè)溝通群;
07
08
評(píng)論
圖片
表情
