杜 洋,朱 明,丁 霞,張 宇,錢(qián)長(zhǎng)杰
(天翼物聯(lián)科技有限公司,江蘇 南京 210006)
據(jù)權(quán)威機(jī)構(gòu)預(yù)測(cè),2025年全球物聯(lián)網(wǎng)連接數(shù)將接近200億,需要具備海量物聯(lián)網(wǎng)終端匯聚與管理能力的新型物聯(lián)網(wǎng)平臺(tái)支撐產(chǎn)業(yè)發(fā)展,阿里巴巴、百度等互聯(lián)網(wǎng)頭部企業(yè),中國(guó)電信、中國(guó)移動(dòng)等通信運(yùn)營(yíng)商以及多家垂直行業(yè)創(chuàng)新型企業(yè)均已推出相關(guān)產(chǎn)品。云原生在2013年首次被提出[1],一般指利用微服務(wù)、容器、DevOps、服務(wù)網(wǎng)格等云計(jì)算技術(shù),實(shí)現(xiàn)云上業(yè)務(wù)的彈性伸縮和敏捷交付,市場(chǎng)上主流的物聯(lián)網(wǎng)平臺(tái)均不同程度地應(yīng)用了云原生技術(shù)。中國(guó)電信是國(guó)內(nèi)領(lǐng)先的云網(wǎng)服務(wù)商,為向物聯(lián)網(wǎng)客戶提供平臺(tái)化支撐服務(wù),中國(guó)電信基于云原生的思維、架構(gòu)和技術(shù)開(kāi)發(fā)了物聯(lián)網(wǎng)使能平臺(tái),本文闡述了中國(guó)電信物聯(lián)網(wǎng)使能平臺(tái)的云原生架構(gòu)的演進(jìn)過(guò)程,說(shuō)明了一種基于云原生技術(shù)的物聯(lián)網(wǎng)使能平臺(tái)架構(gòu)優(yōu)化的方法與路徑。
云原生計(jì)算基金會(huì)(CNCF)將云原生定義為容器、微服務(wù)、服務(wù)網(wǎng)格、DevOps、無(wú)服務(wù)架構(gòu)、不可變基礎(chǔ)設(shè)施與聲明式API等技術(shù)的集合[2]。其中,容器是實(shí)現(xiàn)云原生應(yīng)用的基礎(chǔ),微服務(wù)容器化則是實(shí)現(xiàn)云原生應(yīng)用的關(guān)鍵步驟。
表1 云原生物聯(lián)網(wǎng)平臺(tái)與傳統(tǒng)物聯(lián)網(wǎng)平臺(tái)對(duì)比[3]
(1)容器及容器編排。容器技術(shù)將計(jì)算資源分割為多個(gè)彼此隔離的空間(容器)承載業(yè)務(wù),容器基于容器引擎運(yùn)行,與底層計(jì)算資源解耦,移植性強(qiáng),資源利用率高,有利于提高運(yùn)維、迭代效率。通常需要多個(gè)容器協(xié)同工作,因此需管理容器(容器編排),而常用的容器編排調(diào)度器是Kubernetes(簡(jiǎn)稱“K8S”)。
(2)微服務(wù)架構(gòu)。它是基于容器技術(shù),將整體業(yè)務(wù)劃分為高內(nèi)聚低耦合的模塊,組件化實(shí)現(xiàn)并服務(wù)化運(yùn)行,每個(gè)服務(wù)可以使用不同的技術(shù)實(shí)現(xiàn)并獨(dú)立部署[4],多個(gè)服務(wù)可協(xié)同實(shí)現(xiàn)業(yè)務(wù)功能。
(3)服務(wù)網(wǎng)格(Service Mesh)。它是服務(wù)間通信的基礎(chǔ)能力層,超時(shí)、重試、監(jiān)控、追蹤等非核心業(yè)務(wù)的服務(wù)治理功能能夠下沉到服務(wù)網(wǎng)格,實(shí)現(xiàn)核心業(yè)務(wù)的輕量化運(yùn)行。
(4)DevOps。即開(kāi)發(fā)運(yùn)營(yíng)一體化,其核心內(nèi)涵在于開(kāi)發(fā)、運(yùn)營(yíng)、運(yùn)維和質(zhì)量保障之間有機(jī)協(xié)同,從而提高軟件生命周期管理的敏捷性。
(5)無(wú)服務(wù)架構(gòu)(Serverless)。其實(shí)現(xiàn)基于云服務(wù)商或平臺(tái)服務(wù)商推出的一種服務(wù)模式,即向業(yè)務(wù)應(yīng)用開(kāi)發(fā)提供可按需調(diào)用的服務(wù)接口及服務(wù)配置工具,有效降低業(yè)務(wù)應(yīng)用后端開(kāi)發(fā)工作量。
(6)不可變基礎(chǔ)設(shè)施。是指運(yùn)行服務(wù)的服務(wù)器在完成部署后,就不再更改,如需更新、修復(fù)或修改等操作,則會(huì)構(gòu)建、驗(yàn)證新服務(wù)器版本來(lái)替代舊版本,以避免改變服務(wù)基礎(chǔ)帶來(lái)隱患。
(7)聲明式API??赏ㄟ^(guò)聲明式API調(diào)用K8S的能力,即通過(guò)YAML文件向K8S聲明期望狀態(tài),由K8S自動(dòng)調(diào)整,無(wú)須通過(guò)提交多個(gè)指令來(lái)實(shí)現(xiàn)。
中國(guó)電信物聯(lián)網(wǎng)使能平臺(tái)(以下簡(jiǎn)稱“平臺(tái)”)為物聯(lián)網(wǎng)應(yīng)用的開(kāi)發(fā)、測(cè)試、運(yùn)行提供平臺(tái)化支撐,能夠有效降低應(yīng)用開(kāi)發(fā)難度,縮短應(yīng)用開(kāi)發(fā)周期。平臺(tái)具備的主要功能如下:
(1)設(shè)備接入。物聯(lián)網(wǎng)設(shè)備可通過(guò)CDMA、NBIoT、LTE等不同網(wǎng)絡(luò)和MQTT、LWM2M、TCP等常見(jiàn)物聯(lián)網(wǎng)協(xié)議接入平臺(tái),并采用TLS/DTLS、SimID等多種安全措施保證終端安全。
(2)設(shè)備管理??蓪?duì)接入平臺(tái)的終端進(jìn)行管理,如傳感類(lèi)終端、采集類(lèi)終端、智能控制類(lèi)終端等,管理功能包括終端的信息管理、終端狀態(tài)上報(bào)和收集、終端遠(yuǎn)程控制、命令消息下發(fā)等。
(3)設(shè)備數(shù)字化建模。平臺(tái)提供設(shè)備數(shù)字化建模工具,可將設(shè)備終端抽象為屬性和服務(wù)(動(dòng)作),在平臺(tái)中生成“物模型”。“物模型”可作為數(shù)據(jù)標(biāo)準(zhǔn),一方面可用于解耦物聯(lián)網(wǎng)終端與應(yīng)用,幫助開(kāi)發(fā)者實(shí)現(xiàn)終端與平臺(tái)的快速適配及應(yīng)用高效迭代,另一方面也可作為跨應(yīng)用的數(shù)據(jù)交互的標(biāo)準(zhǔn),減少平臺(tái)上物聯(lián)網(wǎng)應(yīng)用間的信息壁壘。
(4)規(guī)則引擎服務(wù)。平臺(tái)可配置規(guī)則,對(duì)設(shè)備上報(bào)的數(shù)據(jù)進(jìn)行加工、清洗和轉(zhuǎn)發(fā),還可按規(guī)則觸發(fā)多設(shè)備的協(xié)同反應(yīng),實(shí)現(xiàn)設(shè)備聯(lián)動(dòng)、智能控制、設(shè)備告警等功能。
(5)數(shù)據(jù)管理服務(wù)。平臺(tái)提供安全可靠的數(shù)據(jù)匯聚、存儲(chǔ)、管理、分析、挖掘和展現(xiàn)能力。
(6)應(yīng)用開(kāi)發(fā)服務(wù)。應(yīng)用可通過(guò)平臺(tái)API、SDK、消息訂閱及推送等方式調(diào)用物聯(lián)網(wǎng)終端的數(shù)據(jù)和指令來(lái)開(kāi)發(fā)功能。平臺(tái)還可為輕量級(jí)應(yīng)用提供容器化托管服務(wù),包括應(yīng)用構(gòu)建、部署、運(yùn)行監(jiān)控、版本管理、域名綁定等功能。
(7)多種服務(wù)模式。平臺(tái)可根據(jù)用戶的業(yè)務(wù)需求,基于互聯(lián)網(wǎng)/專(zhuān)網(wǎng)、公有云/私有化/混合云等不同的IaaS環(huán)境,提供相應(yīng)的服務(wù)模式,包括基于互聯(lián)網(wǎng)的集約模式,面向中國(guó)電信各省市公司的分布式部署模式以及面向客戶的私有化部署模式。
平臺(tái)結(jié)合中國(guó)電信天翼云能力設(shè)計(jì)架構(gòu),所有功能模塊均基于天翼云進(jìn)行部署,并基于天翼云能力開(kāi)發(fā)各功能模塊,關(guān)鍵組件包括Pulsar、Flink、TeleDB、UDAL、Hadoop棧集群管理系統(tǒng)、CCSE等,其中,TeleDB為中國(guó)電信自主研發(fā)的分布式數(shù)據(jù)庫(kù)[5],CCSE為中國(guó)電信基于K8S自主研發(fā)的集群管理平臺(tái),具備服務(wù)注冊(cè)、監(jiān)控、自愈和告警綜合能力,可統(tǒng)一管理平臺(tái)服務(wù)。平臺(tái)關(guān)鍵模塊均進(jìn)行了微服務(wù)化設(shè)計(jì)與實(shí)現(xiàn),具備微服務(wù)架構(gòu)基礎(chǔ)。
圖1 平臺(tái)原始架構(gòu)示意圖
3.2.1 存在問(wèn)題
隨著中國(guó)電信物聯(lián)網(wǎng)使能平臺(tái)的用戶量、承載終端量及支撐各類(lèi)項(xiàng)目數(shù)量的不斷增長(zhǎng),出現(xiàn)平臺(tái)運(yùn)維困難、定制化部署效率低、難以動(dòng)態(tài)管理資源等各種問(wèn)題,導(dǎo)致這些問(wèn)題的原因如下:
(1)微服務(wù)技術(shù)標(biāo)準(zhǔn)不統(tǒng)一:平臺(tái)各模塊采用的微服務(wù)技術(shù)標(biāo)準(zhǔn)不統(tǒng)一,平臺(tái)迭代和運(yùn)維部署的復(fù)雜度高。
(2)缺乏統(tǒng)一的配置管理:應(yīng)用配置由各服務(wù)單獨(dú)管理,交付部署時(shí)需修改每個(gè)服務(wù)的配置,部署效率低。
(3)開(kāi)源中間件未容器化也影響到部署效率與資源利用率。因此,文中采用了開(kāi)發(fā)云原生容器引擎,對(duì)平臺(tái)進(jìn)行升級(jí)的解決方案,以降低資源消耗,提高開(kāi)發(fā)、運(yùn)維、部署效率。
3.2.2 技術(shù)路徑
3.2.2.1 云原生容器引擎
基于中國(guó)電信CCSE等云原生能力基礎(chǔ),開(kāi)發(fā)云原生容器引擎(以下簡(jiǎn)稱“引擎”),作為平臺(tái)的云原生底座,升級(jí)平臺(tái)架構(gòu)及功能,實(shí)現(xiàn)彈性伸縮、網(wǎng)絡(luò)隔離、有狀態(tài)應(yīng)用容器化等能力。
圖2 云原生容器引擎示意圖
引擎還可提供高性能可伸縮的一站式容器應(yīng)用管理服務(wù),簡(jiǎn)化集群的搭建和擴(kuò)縮容等運(yùn)維工作,為容器化應(yīng)用提供監(jiān)控、日志、服務(wù)網(wǎng)格、模板、水平擴(kuò)展、持久化存儲(chǔ)等基礎(chǔ)能力,可幫助平臺(tái)用戶快速構(gòu)建和運(yùn)行彈性伸縮的應(yīng)用,實(shí)現(xiàn)業(yè)務(wù)快速交付與持續(xù)迭代。
3.2.2.2 架構(gòu)改造
(1)使能服務(wù)容器化改造:基于引擎的工作負(fù)載管理能力部署使能服務(wù),同時(shí)支持有狀態(tài)和無(wú)狀態(tài)應(yīng)用的部署。
(2)服務(wù)注冊(cè)發(fā)現(xiàn)、服務(wù)暴露:基于引擎的服務(wù)配置功能,實(shí)現(xiàn)微服務(wù)的注冊(cè)和發(fā)現(xiàn),基于引擎的路由配置功能,實(shí)現(xiàn)服務(wù)暴露,支持從外部訪問(wèn)容器集群內(nèi)的應(yīng)用。
(3)配置管理:基于引擎的配置管理功能,統(tǒng)一管理各部署環(huán)境的應(yīng)用配置,實(shí)現(xiàn)業(yè)務(wù)與配置、發(fā)布環(huán)境解耦,同一個(gè)業(yè)務(wù)鏡像可直接發(fā)布到各環(huán)境。降低應(yīng)用部署復(fù)雜度,提高部署效率。
(4)中間件容器化:基于引擎的工作負(fù)載、服務(wù)路由、配置管理、存儲(chǔ)管理能力,對(duì)平臺(tái)使用到的開(kāi)源中間件進(jìn)行容器化改造和部署。
(5)服務(wù)治理:基于引擎服務(wù)網(wǎng)格能力,實(shí)現(xiàn)應(yīng)用灰度發(fā)布,支持對(duì)服務(wù)流量進(jìn)行管理,支持服務(wù)限流熔斷等策略配置。
圖3 平臺(tái)架構(gòu)升級(jí)方式示意圖
(1)功能測(cè)試:共設(shè)計(jì)功能測(cè)試用例487個(gè),執(zhí)行487個(gè)(其中手動(dòng)180個(gè),自動(dòng)化307個(gè)),經(jīng)過(guò)復(fù)測(cè),487個(gè)測(cè)試用例全部通過(guò)。
(2)性能測(cè)試及壓力測(cè)試:性能測(cè)試驗(yàn)證的指標(biāo)與生產(chǎn)驗(yàn)證指標(biāo)保持一致,可根據(jù)業(yè)務(wù)量線性擴(kuò)容,滿足業(yè)務(wù)需求,單節(jié)點(diǎn)設(shè)備最大在線量、數(shù)據(jù)上報(bào)吞吐量、指令下發(fā)性能指標(biāo)均達(dá)到預(yù)期目標(biāo)。
表2 單節(jié)點(diǎn)實(shí)例壓測(cè)結(jié)果
平臺(tái)架構(gòu)升級(jí)后,實(shí)現(xiàn)了物聯(lián)網(wǎng)使能服務(wù)能力模塊與底層云IaaS解耦,一方面平臺(tái)可移植性大幅提高,另一方面引擎可按性能、時(shí)間、周期進(jìn)行容器的編排和調(diào)度,實(shí)現(xiàn)彈性伸縮,還可自動(dòng)監(jiān)控容器,檢測(cè)實(shí)例運(yùn)行狀況,及時(shí)啟用新實(shí)例替換不健康實(shí)例,保證業(yè)務(wù)健康可用,有效提高了平臺(tái)可用性。升級(jí)后的主要成效如圖4所示:
圖4 基于云原生容器引擎的平臺(tái)架構(gòu)示意圖
(1)資源管理。實(shí)現(xiàn)多租戶、多集群統(tǒng)一管理,支持細(xì)粒度的權(quán)限管控。實(shí)現(xiàn)K8S對(duì)底層的物理資源做集中管理與統(tǒng)一調(diào)度。支持導(dǎo)入現(xiàn)有K8S集群,可在多云、云主機(jī)、物理機(jī)等多種IaaS環(huán)境進(jìn)行部署。
(2)運(yùn)維交付。平臺(tái)實(shí)現(xiàn)了故障自愈、彈性伸縮、全鏈路監(jiān)控等功能,各微服務(wù)經(jīng)過(guò)優(yōu)化設(shè)計(jì)和統(tǒng)一管理,平臺(tái)DevOps能力大幅增強(qiáng),資源利用率和可用性大幅提升,部署效率提升30%以上。
(3)應(yīng)用托管。平臺(tái)可提供一站式容器服務(wù),幫助用戶快速開(kāi)發(fā)、構(gòu)建、部署和運(yùn)維應(yīng)用,并能為應(yīng)用提供監(jiān)控、負(fù)載均衡、持久化存儲(chǔ)、鏡像服務(wù)、組件容器化部署及服務(wù)網(wǎng)格插件等多種能力。
通過(guò)研發(fā)云原生容器引擎對(duì)平臺(tái)進(jìn)行云原生化改造,有效提高了平臺(tái)的迭代、運(yùn)維效率及資源管理水平,同時(shí)也增強(qiáng)了平臺(tái)對(duì)于物聯(lián)網(wǎng)應(yīng)用的云原生支持能力,能夠大幅提升物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)、迭代、運(yùn)維、交付的效率。