用戶案例 | 騰訊醫(yī)療資訊平臺(tái)云原生容器化之路

來(lái)源: 騰訊云原生
作者:yuhuliu
時(shí)間:2021-11-04
16619
為了高效滿足用戶多樣化的需求,騰訊醫(yī)療技術(shù)團(tuán)隊(duì)通過(guò)TKE上云,使用Coding DevOps平臺(tái),以及云上可觀測(cè)技術(shù),來(lái)提升研發(fā)效率、降低運(yùn)營(yíng)運(yùn)維成本。本文介紹我們?cè)谏显七^(guò)程中一些實(shí)踐和經(jīng)驗(yàn),以及一些思考和選擇。

摘要

醫(yī)療資訊業(yè)務(wù)在高速發(fā)展過(guò)程中,形成了覆蓋不同場(chǎng)景、不同用戶、不同渠道的幾十個(gè)業(yè)務(wù),以及上千個(gè)服務(wù)。為了高效滿足用戶多樣化的需求,騰訊醫(yī)療技術(shù)團(tuán)隊(duì)通過(guò)TKE上云,使用Coding DevOps平臺(tái),以及云上可觀測(cè)技術(shù),來(lái)提升研發(fā)效率、降低運(yùn)營(yíng)運(yùn)維成本。本文介紹我們?cè)谏显七^(guò)程中一些實(shí)踐和經(jīng)驗(yàn),以及一些思考和選擇。

業(yè)務(wù)背景

stage1:騰訊醫(yī)療資訊平臺(tái)主要包括了醫(yī)典、醫(yī)生、醫(yī)藥等核心業(yè)務(wù),其中醫(yī)典主要提供醫(yī)療相關(guān)內(nèi)容獲取、醫(yī)療知識(shí)科普傳遞;醫(yī)生滿足醫(yī)生和患者的互聯(lián);醫(yī)藥服務(wù)了廣大藥企。在業(yè)務(wù)發(fā)展過(guò)程中我們?cè)瓉?lái)基于taf平臺(tái)構(gòu)建了大量后臺(tái)服務(wù),完成了初期業(yè)務(wù)的快速搭建。

由于業(yè)務(wù)數(shù)量較多,大量業(yè)務(wù)有多地域的述求,最終我們?cè)趖af平臺(tái)部署多個(gè)業(yè)務(wù)集群。這個(gè)時(shí)候發(fā)布、運(yùn)維、問(wèn)題排查純靠人工階段,效率較低。

業(yè)務(wù)上云

stage2:隨著業(yè)務(wù)規(guī)模的急速擴(kuò)張,傳統(tǒng)的開發(fā)、運(yùn)維方式在敏捷、資源、效率方面對(duì)業(yè)務(wù)迭代形成較大的制約。隨著公司自研上云項(xiàng)目推進(jìn),擁抱云原生化,基于K8s來(lái)滿足業(yè)務(wù)對(duì)不同資源多樣化需求和彈性調(diào)度,基于現(xiàn)有成熟devops平臺(tái)來(lái)進(jìn)行敏捷迭代,越來(lái)越成為業(yè)務(wù)正確的選擇。醫(yī)療后臺(tái)團(tuán)隊(duì)開始了整體服務(wù)上云的遷移。

上云之前,還有幾個(gè)問(wèn)題需要考慮

1.服務(wù)眾多,代碼如何管理

2.上云后怎么快速進(jìn)行問(wèn)題定位、排查

3.監(jiān)控告警平臺(tái)如何選擇

4.基礎(chǔ)鏡像怎么選擇

關(guān)于服務(wù)代碼管理

使用git做代碼版本控制,按業(yè)務(wù)建立項(xiàng)目組,每個(gè)服務(wù)使用單獨(dú)的代碼倉(cāng)庫(kù),倉(cāng)庫(kù)名使用同一命名規(guī)范。

關(guān)于問(wèn)題排查

調(diào)研云上有成熟的elk服務(wù),業(yè)務(wù)只需要把日志放到同一目錄,通過(guò)filebeat采集后,通過(guò)ETL邏輯可以把日志方便導(dǎo)入Elasticsearch。這樣的做法還有個(gè)優(yōu)點(diǎn)就是可以同時(shí)支持前后端服務(wù)日志的采集,技術(shù)較為成熟,復(fù)用了組件能力,通過(guò)在請(qǐng)求中埋點(diǎn)加入traceid,方便在全鏈路定位問(wèn)題。

640.webp.jpg

關(guān)于監(jiān)控告警平臺(tái)

CSIG提供了基于日志監(jiān)控的CMS平臺(tái),將業(yè)務(wù)日志導(dǎo)入到CMS后,可以基于上報(bào)的日志配置監(jiān)控和告警,監(jiān)控維度、指標(biāo)業(yè)務(wù)可以自己定義。我們采用了主調(diào)、被調(diào)、接口名等維度,調(diào)用量、耗時(shí)、失敗率等指標(biāo),滿足業(yè)務(wù)監(jiān)控告警訴求?;谌罩镜谋O(jiān)控可以復(fù)用同一條數(shù)據(jù)采集鏈路,系統(tǒng)架構(gòu)統(tǒng)一簡(jiǎn)潔。

640.webp (1).jpg

關(guān)于基礎(chǔ)鏡像

為了方便業(yè)務(wù)初期快速上云,以及統(tǒng)一服務(wù)啟動(dòng)、數(shù)據(jù)采集上報(bào),有必要對(duì)業(yè)務(wù)的基礎(chǔ)鏡像進(jìn)行處理,預(yù)先建立對(duì)應(yīng)目錄,提供腳本和工具,方便業(yè)務(wù)快速接入。這里我們提供了不同語(yǔ)言、版本的基礎(chǔ)鏡像,封裝了supervisord和filebeat,通過(guò)supervisord來(lái)拉起filebeat和業(yè)務(wù)服務(wù)。

640.webp (2).jpg

Devops

stage3:在上云過(guò)程中,也通過(guò)和質(zhì)量同學(xué)逐步完善,將開發(fā)過(guò)程中原有人工操作的步驟pipeline化,來(lái)提高迭代效率,規(guī)范開發(fā)流程;通過(guò)單測(cè)和自動(dòng)化撥測(cè),提升服務(wù)穩(wěn)定性。采用統(tǒng)一的流水線后,開發(fā)、部署效率從原來(lái)的小時(shí)級(jí)別降低到分鐘級(jí)別。

這里主要使用了coding平臺(tái),為了區(qū)分不同環(huán)境,建立了開發(fā)、測(cè)試、預(yù)發(fā)布、測(cè)試四套不同流水線模板,還引入了合流機(jī)制來(lái)加入人工code review階段。

在合流階段:通過(guò)MR HOOK,自動(dòng)輪詢code review結(jié)果,確保代碼在review通過(guò)后才能進(jìn)行下一步(不同團(tuán)隊(duì)可能要求不一樣)。

640.webp (3).jpg

在CI階段:通過(guò)代碼質(zhì)量分析,來(lái)提升代碼規(guī)范性,通過(guò)單元測(cè)試,來(lái)保證服務(wù)質(zhì)量。

640.webp (4).jpg

在CD階段:通過(guò)引入人工審批和自動(dòng)化撥測(cè),提高服務(wù)穩(wěn)定性。

640.webp (5).jpg

資源利用率提升

stage4:在業(yè)務(wù)整體上云后,由于不少業(yè)務(wù)有多地域部署(廣州、南京、天津、香港)的述求,加上每個(gè)服務(wù)需要四套(開發(fā)、測(cè)試、預(yù)發(fā)布、正式)不同的環(huán)境,上云后我們初步整理,一共有3000+不同workload。由于不同業(yè)務(wù)訪問(wèn)量具有很大不確定性,初期基本上按照理想狀態(tài)來(lái)配置資源,存在不少的浪費(fèi)。

640.webp (6).jpg

為了提高資源整體利用率,我們進(jìn)行了一系列優(yōu)化,大致遵循如下規(guī)范:

640.webp (7).jpg

這里由于HPA會(huì)導(dǎo)致業(yè)務(wù)容器動(dòng)態(tài)擴(kuò)縮,在停止過(guò)程中如果原有流量還在訪問(wèn),或者啟動(dòng)還未完成就導(dǎo)入流量,會(huì)導(dǎo)致業(yè)務(wù)的失敗,因此需要預(yù)先開啟TKE上preStop以及就緒檢測(cè)等配置。

1.優(yōu)雅停止,進(jìn)程停止前等北極星、cl5路由緩存過(guò)期;入口:tke->工作負(fù)載->具體業(yè)務(wù)->更新工作負(fù)載如果使用的服務(wù)發(fā)現(xiàn)是CL5,推薦preStop70s,北極星配置10s足夠了。

2.就緒、存活檢測(cè),進(jìn)程啟動(dòng)完成后再調(diào)配流量;入口:tke->工作負(fù)載->具體業(yè)務(wù)->更新工作負(fù)載,根據(jù)不同業(yè)務(wù)配置不同探測(cè)方式和時(shí)間間隔。

通過(guò)上面一系列調(diào)整優(yōu)化,我們的資源利用率大幅提升,通過(guò)TKE上彈性升縮,在保證業(yè)務(wù)正常訪問(wèn)同時(shí),局部高峰訪問(wèn)資源不足的問(wèn)題基本解決,避免了資源浪費(fèi),也提升了服務(wù)穩(wěn)定性;但多環(huán)境問(wèn)題還是會(huì)導(dǎo)致存在一定損耗。

可觀測(cè)性技術(shù)

stage4:初期使用基于日志的方式來(lái)做(log/metric/tracing),滿足了業(yè)務(wù)快速上云、問(wèn)題排查效率提升的初步述求,但隨著業(yè)務(wù)規(guī)模增長(zhǎng),愈加龐大的日志流占用了越來(lái)越多的資源,日志堆積在高峰期成為常態(tài),CMS告警可能和實(shí)際發(fā)生時(shí)已經(jīng)間隔了半個(gè)小時(shí),ELK的維護(hù)成本也急劇上升。

云原生的可觀測(cè)技術(shù)已經(jīng)成為必要,這里我們引入了Coding應(yīng)用管理所推薦的可觀測(cè)技術(shù)方案,通過(guò)統(tǒng)一的coding-sidecar對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行采集:

640.webp (8).jpg

·監(jiān)控:云監(jiān)控中臺(tái)

·日志:CLS

·Tracing:APM

640.webp (9).jpg

通過(guò)接入這些平臺(tái)的能力,我們的問(wèn)題發(fā)現(xiàn)、定位、排查效率有了極大的提高,業(yè)務(wù)的運(yùn)營(yíng)維護(hù)成本較大降低。通過(guò)監(jiān)控、和tracing,也發(fā)現(xiàn)了不少系統(tǒng)潛在的問(wèn)題,提高了服務(wù)質(zhì)量。

結(jié)尾

最后,要感謝上云過(guò)程中全體開發(fā)同學(xué)的辛勤付出,以及各位研發(fā)leader的大力支持。

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于騰訊云原生,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
騰訊云數(shù)據(jù)庫(kù)PostgreSQL全面支持PG 17
即日起,騰訊云PostgreSQL全面支持PostgreSQL 17.0。所有用戶可使用大版本升級(jí)能力升級(jí)至最新的PostgreSQL 17.0進(jìn)行體驗(yàn),也可以在產(chǎn)品購(gòu)買頁(yè)直接購(gòu)買。
騰訊云
云服務(wù)
2024-12-152024-12-15
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
高可用這個(gè)問(wèn)題,加機(jī)器就能解決?
互聯(lián)網(wǎng)服務(wù)的可用性問(wèn)題是困擾企業(yè)IT人員的達(dá)摩克利斯之劍:防于未然,體現(xiàn)不出價(jià)值。已然發(fā)生,又面臨P0危機(jī)。就更別提穩(wěn)定性建設(shè)背后顯性的IT預(yù)算問(wèn)題與隱性的人員成本問(wèn)題。
騰訊云
云服務(wù)
2024-11-252024-11-25
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
TDSQL TDStore引擎版替換HBase:在歷史庫(kù)場(chǎng)景中的成本與性能優(yōu)勢(shì)
HBase憑借其高可用性、高擴(kuò)展性和強(qiáng)一致性,以及在廉價(jià)PC服務(wù)器上的低部署成本,廣泛應(yīng)用于大規(guī)模數(shù)據(jù)分析。
騰訊云
云服務(wù)
2024-11-042024-11-04
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
復(fù)雜查詢性能弱,只讀分析引擎來(lái)幫忙
隨著當(dāng)今業(yè)務(wù)的高速發(fā)展,復(fù)雜多表關(guān)聯(lián)的場(chǎng)景越來(lái)越普遍。但基于行式存儲(chǔ)的數(shù)據(jù)庫(kù)在進(jìn)行復(fù)雜查詢時(shí)性能相對(duì)較弱。
騰訊云
云服務(wù)
2024-11-022024-11-02
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家