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

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


咨詢
建站咨詢
