新聞中心
從容器平臺到微服務(wù)架構(gòu),當(dāng)當(dāng)網(wǎng)的云原生之路
作者:佚名 2021-09-27 16:58:51
云計算
云原生 從當(dāng)當(dāng)網(wǎng)的Knative應(yīng)用案例可見,Knative對于serverless平臺的標(biāo)準(zhǔn)化意義重大。Knative的發(fā)展前景廣闊,有望成為未來的主流無服務(wù)架構(gòu)平臺。同時,Knative還在逐步走向成熟的階段,大規(guī)模應(yīng)用還需要進(jìn)一步完善。

當(dāng)當(dāng)網(wǎng)是全球知名的綜合性網(wǎng)上購物商城,涵蓋圖書、電子書、聽書、服裝、百貨等品類。在數(shù)字化已經(jīng)成為社會經(jīng)濟(jì)發(fā)展趨勢的背景下,電商行業(yè)也在數(shù)字化的驅(qū)動下加速更新?lián)Q代,銷售內(nèi)容、社交模式、消費(fèi)體驗全面升級,同時也要支撐應(yīng)對突發(fā)流量、新業(yè)務(wù)快速上線等需求,一套高可靠性、高可擴(kuò)展性、性能強(qiáng)大的IT架構(gòu)就成為了必需。
日前,記者采訪了當(dāng)當(dāng)網(wǎng)云原生實(shí)驗室負(fù)責(zé)人李志偉,對當(dāng)當(dāng)網(wǎng)近年來的數(shù)字化轉(zhuǎn)型之路做了梳理。
[[426177]]
當(dāng)當(dāng)網(wǎng)云原生實(shí)驗室負(fù)責(zé)人李志偉
一步跨入Kubernetes,開啟云原生之路
前些年,當(dāng)當(dāng)網(wǎng)的大多數(shù)業(yè)務(wù)都運(yùn)行在物理機(jī)上,運(yùn)維自動化水平不高,系統(tǒng)架構(gòu)多種多樣,錯綜復(fù)雜,計算資源的利用率不足 20%。當(dāng)有突發(fā)流量的時候,水平擴(kuò)展和遷移非常困難。同時,因為歷史原因,當(dāng)當(dāng)網(wǎng)的老舊服務(wù)很多,需要有一個新的平臺平滑遷移過去。
根據(jù)當(dāng)時的情況,當(dāng)當(dāng)網(wǎng)認(rèn)為首先應(yīng)該構(gòu)建自己的私有云平臺,然后一步一步的進(jìn)行轉(zhuǎn)型。但是在接觸到了Kubernetes 平臺之后,當(dāng)當(dāng)網(wǎng)認(rèn)為可以直接進(jìn)入到容器云平臺。
Kubernetes是微服務(wù)架構(gòu)最佳的運(yùn)行平臺之一,如果把當(dāng)當(dāng)網(wǎng)現(xiàn)有的業(yè)務(wù)按照微服務(wù)架構(gòu)思想全部改造,大約需要幾年的時間。當(dāng)當(dāng)網(wǎng)最終決定基于現(xiàn)有的應(yīng)用基礎(chǔ)做平滑遷移,在半年左右的時間把所有業(yè)務(wù)都遷移過來,第一步就是用 Kubernetes實(shí)現(xiàn)一個高可用的、高度自動化的運(yùn)維平臺,一個高效的服務(wù)編排平臺。
事實(shí)證明,Kubernetes真正改造了當(dāng)當(dāng)網(wǎng)的研發(fā)流程,真正實(shí)現(xiàn)了一次構(gòu)建就可以運(yùn)行在多個運(yùn)行環(huán)境中。Kubernetes 遵循 Borg 的架構(gòu)思想,規(guī)范了現(xiàn)有的系統(tǒng)架構(gòu)設(shè)計,實(shí)現(xiàn)自動化運(yùn)維。并且,使用 Kubernetes 可以不被云廠商鎖定,在不同的服務(wù)商之間快速遷移。
Kubernetes雖然有諸多優(yōu)勢,但是開發(fā)者使用它的門檻很高,起初,當(dāng)當(dāng)網(wǎng)使用Jenkins,Helm, Chart來簡化CI/CD流程,但配置及運(yùn)維管理依然復(fù)雜。開發(fā)人員不僅要關(guān)注容器構(gòu)建、縮擴(kuò)容,還要關(guān)注流量控制的實(shí)現(xiàn)細(xì)節(jié),急需一種簡單有效的服務(wù)編排標(biāo)準(zhǔn)來解決開發(fā)與運(yùn)維管理復(fù)雜度問題。此外,Kubernetes本身并沒有解決低頻使用的服務(wù)資源占用問題,依然有大量服務(wù)、作業(yè)即使很少被使用,但依然占據(jù)著CPU和內(nèi)存資源,導(dǎo)致計算資源的使用率較低。
Knative,把Serverless變得簡單易用
在云原生時代,Kubernetes和Istio的引入給微服務(wù)的開發(fā)和部署提供了完整的解決方案,同時也帶來了更高的維護(hù)復(fù)雜度,Knative作為新一代無服務(wù)架構(gòu)平臺提供了一套簡潔的方案來解決微服務(wù)的管理問題。
Serverless(無服務(wù)器架構(gòu))指的是由開發(fā)者實(shí)現(xiàn)的業(yè)務(wù)邏輯運(yùn)行在無狀態(tài)的計算容器中,它由事件觸發(fā),完全被第三方管理,其業(yè)務(wù)層面的狀態(tài)則被存儲在數(shù)據(jù)庫和其他存儲資源。Serverless不代表不需要服務(wù)器,而是開發(fā)者不用過多考慮服務(wù)器的問題,計算資源作為服務(wù)而不是服務(wù)器的概念出現(xiàn)。Serverless是一種構(gòu)建和管理基于微服務(wù)架構(gòu)的完整流程,允許開發(fā)者在服務(wù)級別而不是服務(wù)器級別來管理應(yīng)用部署,這大大降低了軟件開發(fā)的復(fù)雜度,使得開發(fā)者可以快速迭代,更快速地開發(fā)軟件。
雖然Serverless擁有無需管理基礎(chǔ)設(shè)施、按用付費(fèi)、事件驅(qū)動、自動化構(gòu)建部署等優(yōu)勢。但是當(dāng)前各廠商的Serverless標(biāo)準(zhǔn)不統(tǒng)一,軟件不能跨廠商遷移,客觀上存在廠商鎖定問題,這是制約Serverless發(fā)展的最主要因素。正因為如此,谷歌發(fā)起了Knative項目。Knative 是谷歌發(fā)起的基于kubernetes平臺的Serverless 開源項目, 將Serveless的服務(wù)管理,事件驅(qū)動,構(gòu)建部署進(jìn)行了標(biāo)準(zhǔn)化。它不僅可以以托管服務(wù)形式運(yùn)行在公有云中,也可以部署在企業(yè)內(nèi)部的數(shù)據(jù)中心,很好地解決了多云部署以及供應(yīng)商鎖定問題。
Kubernetes作為基礎(chǔ)設(shè)施,解決了應(yīng)用編排和運(yùn)行環(huán)境問題。Isito作為通信基礎(chǔ)設(shè)施層,可以保證服務(wù)的運(yùn)行可檢測、可配置、可追蹤。Knative使用應(yīng)用模板和統(tǒng)一的運(yùn)行環(huán)境來標(biāo)準(zhǔn)化服務(wù)的構(gòu)建、部署和管理。
Knative 將kubernetes和istio的復(fù)雜度進(jìn)行抽象和隔離,解決了繁瑣的構(gòu)建,部署,服務(wù)治理步驟,并且基于開放標(biāo)準(zhǔn)使得服務(wù)變得可移植。
Knative作為開源僅兩年多的項目,各項特性還在快速發(fā)展演進(jìn)過程中,出于穩(wěn)妥考慮,當(dāng)當(dāng)網(wǎng)選擇了相對成熟的Serving組件,應(yīng)用到業(yè)務(wù)形態(tài)相對獨(dú)立的單品API服務(wù)進(jìn)行了實(shí)踐。
單品API服務(wù)是當(dāng)當(dāng)網(wǎng)基礎(chǔ)平臺中核心的基礎(chǔ)服務(wù)之一,由一系列與商品相關(guān)的API服務(wù)構(gòu)成,單品API為所有相關(guān)上游服務(wù)提供高效可靠的底層服務(wù)支持。
當(dāng)當(dāng)網(wǎng)搭建了一套完整的運(yùn)行環(huán)境:首先編寫用戶容器對應(yīng)的dockerfile,然后編寫對應(yīng)的Tekton task及taskrun文件,構(gòu)建代碼打包運(yùn)行時容器推送到私有鏡像倉庫,編寫Knative的service.yaml 配置文件并完成部署。
在運(yùn)維工具方面,Knative直接使用了Kubernetes平臺上的解決方案,避免了重復(fù)建設(shè)。
從測試結(jié)果來看,對比Kubernetes原生的部署方案,Knative的引入帶來了27ms的延遲和10%的TPS損失。
Knative Serving支持縮容到零,極大提高了低頻應(yīng)用的資源占用,為了解決冷啟動的問題,當(dāng)當(dāng)網(wǎng)采用保留服務(wù)最小副本數(shù)的方法,在資源占用和服務(wù)響應(yīng)延遲之間進(jìn)行平衡。對于可預(yù)見的高并發(fā)場景可以為服務(wù)預(yù)設(shè)預(yù)期最小所需副本數(shù),這樣避免了突發(fā)高并發(fā)請求導(dǎo)致大量請求積壓;為服務(wù)預(yù)設(shè)最大所需副本數(shù)可以避免資源過度分配;為服務(wù)的每個POD設(shè)置最大并發(fā)請求數(shù)上限保障每個服務(wù)的可用性。
從當(dāng)當(dāng)網(wǎng)的Knative應(yīng)用案例可見,Knative對于Serverless平臺的標(biāo)準(zhǔn)化意義重大。Knative的發(fā)展前景廣闊,有望成為未來的主流無服務(wù)架構(gòu)平臺。同時,Knative還在逐步走向成熟的階段,大規(guī)模應(yīng)用還需要進(jìn)一步完善。
受訪人:李志偉,當(dāng)當(dāng)網(wǎng)云原生實(shí)驗室負(fù)責(zé)人,《Knative實(shí)戰(zhàn)》作者。2016年加入當(dāng)當(dāng)網(wǎng),期間擔(dān)任數(shù)字業(yè)務(wù)產(chǎn)品線技術(shù)總監(jiān),架構(gòu)部、云原生實(shí)驗室負(fù)責(zé)人。一直致力于推廣和實(shí)施云原生技術(shù)在當(dāng)當(dāng)平臺的應(yīng)用。2018年實(shí)現(xiàn)了當(dāng)當(dāng)云閱讀產(chǎn)品線的全面容器化,完成了Kubernetes的平臺的整體方案設(shè)計和實(shí)施工作。
新聞標(biāo)題:從容器平臺到微服務(wù)架構(gòu),當(dāng)當(dāng)網(wǎng)的云原生之路
URL網(wǎng)址:http://m.5511xx.com/article/dhhecsp.html


咨詢
建站咨詢
