文|施雪亮
云原生技術(shù)是一種應(yīng)用架構(gòu)設(shè)計的理念,基于這樣的設(shè)計理念,應(yīng)用的全生命周期都是“生在云上,長在云上”,充分利用云計算的彈性擴展、敏捷化、高效交付能力,將應(yīng)用的全生命周期根植于云計算環(huán)境技術(shù)體系。
云原生應(yīng)用具有極致的彈性拓展、服務(wù)自治、故障自愈、大規(guī)??蓮?fù)制、異構(gòu)資源標(biāo)準(zhǔn)化、迭代速度快等特點。不同于普通虛擬機分鐘級的彈性服務(wù)響應(yīng)能力,以容器技術(shù)為基礎(chǔ)的云原生技術(shù)架構(gòu)可以實現(xiàn)自動化的彈性伸/縮,可以達(dá)到秒級甚至毫秒級的彈性響應(yīng)?;谠圃夹g(shù)棧構(gòu)建的平臺具有高度自動化的調(diào)度分發(fā)能力,可實現(xiàn)故障的自動摘除與重構(gòu),具有較強的故障自愈能力和應(yīng)急處置能力。云原生應(yīng)用無需關(guān)注底層資源,具有跨區(qū)域、跨平臺、跨服務(wù)商的規(guī)模性部署能力。云原生應(yīng)用在供應(yīng)層完成了異構(gòu)資源的標(biāo)準(zhǔn)化,利用容器技術(shù)解決了異構(gòu)環(huán)境的部署一致性問題。云原生應(yīng)用基于微服務(wù)的敏捷開發(fā)能力,大幅提升了交付速度,降低業(yè)務(wù)試錯成本,高效響應(yīng)客戶需求。
云原生技術(shù)的架構(gòu)理念,讓云原生應(yīng)用具有專注業(yè)務(wù)本身、高效率軟件交付、高業(yè)務(wù)穩(wěn)定性、應(yīng)用全域一致性、成本優(yōu)化的優(yōu)勢。云原生應(yīng)用依賴于云的分布式資源、分布式調(diào)度安排、數(shù)據(jù)庫服務(wù)構(gòu)建的IT架構(gòu),讓應(yīng)用的開發(fā)更加專注于業(yè)務(wù)本身。云原生技術(shù)革新了應(yīng)用開發(fā)模式,提升了軟件交付效率,通過DevOps、低代碼、CICD、智能化運維實現(xiàn)敏捷開發(fā)和快速交付,縮短新服務(wù)上線周期。云原生應(yīng)用采用微服務(wù)、服務(wù)網(wǎng)格、容器等技術(shù),通過負(fù)載均衡、流量加密、熔斷限流、故障注入、灰度發(fā)布等能力提高了業(yè)務(wù)穩(wěn)定性。分布式的云資源管理模式下,可以獲得一致性的云基礎(chǔ)設(shè)施能力,云原生應(yīng)用不必關(guān)注底層資源。云原生的理念下,計算資源實現(xiàn)自動伸縮,一站式完成資源與集群彈性擴縮配置,實施展示全鏈路資源追蹤,智能運維,實現(xiàn)了應(yīng)用成本的優(yōu)化。
物聯(lián)網(wǎng)應(yīng)用是匯聚物聯(lián)網(wǎng)網(wǎng)絡(luò)采集的數(shù)據(jù)、提供面向客戶服務(wù)、設(shè)備管理、數(shù)據(jù)管理、業(yè)務(wù)管理的應(yīng)用能力,向上支持多個行業(yè)業(yè)務(wù)的應(yīng)用。
物聯(lián)網(wǎng)應(yīng)用具有業(yè)務(wù)模塊化、業(yè)務(wù)迭代快、彈性伸縮、能力開放的特點。根據(jù)物聯(lián)網(wǎng)業(yè)務(wù)的特點,結(jié)合物聯(lián)網(wǎng)服務(wù)各個行業(yè)以及多個行業(yè)應(yīng)用融合的情況,物聯(lián)網(wǎng)應(yīng)用全生命周期中,碎片化應(yīng)用開發(fā)管理和應(yīng)用交付效率的需求,要求其具有統(tǒng)一的集約資源管理、標(biāo)準(zhǔn)接入、快速迭代、業(yè)務(wù)廣覆蓋的能力。物聯(lián)網(wǎng)應(yīng)用的開發(fā)逐漸朝著工具革新、資源管理革新、開發(fā)效率提升方向發(fā)展,這些變化要求快速開發(fā)交付、快速迭代、統(tǒng)一資源管理,突破數(shù)據(jù)中心束縛,突破應(yīng)用部署地域的限制?;谠圃夹g(shù)的應(yīng)用開發(fā)從形式、內(nèi)容及管理上非常貼合物聯(lián)網(wǎng)應(yīng)用新發(fā)展的要求。
基于云原生技術(shù)中微服務(wù)應(yīng)用架構(gòu),傳統(tǒng)物聯(lián)網(wǎng)單體分層的應(yīng)用架構(gòu)將變革為多個微服務(wù)并行聯(lián)合工作的微服務(wù)架構(gòu)。微服務(wù)架構(gòu)將物聯(lián)網(wǎng)應(yīng)用的每個功能分為一個微服務(wù),每個服務(wù)都具有自己的邏輯,具有自己的數(shù)據(jù)庫,傳統(tǒng)物聯(lián)網(wǎng)應(yīng)用的關(guān)系型數(shù)據(jù)庫也將分為多個微服務(wù)的獨立數(shù)據(jù)庫,多個微服務(wù)之間通過API方式交互并聯(lián)合工作。
基于云原生技術(shù)中的物聯(lián)網(wǎng)應(yīng)用承載資源由傳統(tǒng)的云資源切換為容器,不同于虛擬機通過Hypervisor虛擬出需要的硬件(CPU、內(nèi)存、IO設(shè)備等)并在這些硬件設(shè)備上安裝操作系統(tǒng),容器通過container Daemon共享宿主機內(nèi)核,使用namespace做資源隔離,cgroup做資源限制,容器進程的限制都是基于宿主機操作系統(tǒng)本身能力進行的,不受云底層資源的限制,因此容器可以解決物聯(lián)網(wǎng)應(yīng)用部署環(huán)境不一致的問題,實現(xiàn)一次打包應(yīng)用隨處便攜部署?;趉ubernetes(K8S)“事實標(biāo)準(zhǔn)”容器提供了的一系列工具,如容器調(diào)度、存儲編排、自動部署和回滾修復(fù)、自動裝箱計算、密鑰與配置管理,實現(xiàn)負(fù)載均衡、存儲自動掛載、自定義容器資源管理、服務(wù)管理。基于K8S容器服務(wù),物聯(lián)網(wǎng)應(yīng)用將實現(xiàn)快速構(gòu)建集群、自動負(fù)載均衡、跨集群的調(diào)度、自動的彈性擴縮。
基于云原生技術(shù)的服務(wù)網(wǎng)格(service mesh)將解決物聯(lián)網(wǎng)應(yīng)用的服務(wù)治理問題。服務(wù)網(wǎng)格邏輯上分為數(shù)據(jù)平面和控制平面,數(shù)據(jù)平面由一組和業(yè)務(wù)成對出現(xiàn)的Sidercar代理(Envoy)構(gòu)成,接管應(yīng)用服務(wù)的進出流量,并控制服務(wù)和控制面組件的所有網(wǎng)絡(luò)通訊;控制平面由組件(polit、Citadel、Gally) 整合構(gòu)成一個單進程,極大降低了部署的難度。K8S的微服務(wù)治理,提供安全的、快速的、可靠的組件間通訊,提供輕量級高性能的網(wǎng)絡(luò)代理。使用service mesh可以有效治理K8S中運行的應(yīng)用服務(wù),實現(xiàn)服務(wù)的限流、熔斷、灰度發(fā)布、故障注入等治理內(nèi)容。物聯(lián)網(wǎng)應(yīng)用使用云原生服務(wù)網(wǎng)格技術(shù)及功能組件,可以高效、快速的完成應(yīng)用服務(wù)的發(fā)布、部署、業(yè)務(wù)限流、業(yè)務(wù)熔斷,實現(xiàn)服務(wù)的統(tǒng)一治理。
面向物聯(lián)網(wǎng)應(yīng)用的DevOps場景,云原生的技術(shù)理念在應(yīng)用開發(fā)實際中高效整合云基礎(chǔ)計算、存儲、網(wǎng)絡(luò)、安全、備份、監(jiān)控及PaaS層的產(chǎn)品服務(wù)能力,提供新的應(yīng)用研發(fā)工具,充分利用云的彈性和資源服務(wù)化的優(yōu)勢,構(gòu)建高效、穩(wěn)定可靠、資源集約的物聯(lián)網(wǎng)應(yīng)用。DevOps模式驅(qū)動物聯(lián)網(wǎng)應(yīng)用開發(fā)和運維相向而行,將開發(fā)、測試、部署整合到開發(fā)流程中各個工作環(huán)節(jié),任何工作環(huán)節(jié)的代碼的提交都將觸發(fā)自動測試,每個環(huán)節(jié)的測試優(yōu)化后產(chǎn)品質(zhì)量和可靠性得以提升。物聯(lián)網(wǎng)應(yīng)用采用DevOps模式后,各工作環(huán)節(jié)自動執(zhí)行測試、部署、分發(fā)、編排、維護任務(wù),打破開發(fā)和運維之間的隔離,自動執(zhí)行應(yīng)用軟件的交付和基礎(chǔ)架構(gòu)更改流程,縮短研發(fā)周期,增加部署頻率,具備自動維護能力,使研發(fā)和運維一體化。
云原生技術(shù)中的聲明式API將使物聯(lián)網(wǎng)應(yīng)用更加健壯。K8S中所有的API都是采用聲明式的API,所有的應(yīng)用部署都是基于YAML文件的,通過代碼來管理基礎(chǔ)設(shè)施和部署環(huán)境,系統(tǒng)可以檢測到運行環(huán)境和聲明描述的差異,不斷修正,讓物聯(lián)網(wǎng)應(yīng)用具備了自動容錯修正的能力。
基于云原生技術(shù)的物聯(lián)網(wǎng)應(yīng)用革新,是一站式的容器化交付標(biāo)準(zhǔn)流程,覆蓋應(yīng)用的規(guī)劃、需求、設(shè)計、開發(fā)、測試、交付、運維完整生命周期,全容器化的架構(gòu)設(shè)計,使得物聯(lián)網(wǎng)應(yīng)用調(diào)度更加靈活,執(zhí)行效率更高?;谠圃夹g(shù)的物聯(lián)網(wǎng)應(yīng)用的發(fā)展將更加集約化,實現(xiàn)根據(jù)業(yè)務(wù)流量的業(yè)務(wù)自動擴/縮容,避免業(yè)務(wù)沖擊帶來的應(yīng)用不穩(wěn)定的問題,降低因資源閑置而導(dǎo)致的成本開銷。隨著云原始技術(shù)的演進和云上微服務(wù)的不斷成熟,物聯(lián)網(wǎng)應(yīng)用將會更加集約化,以更高穩(wěn)定性服務(wù)客戶,為應(yīng)用開發(fā)企業(yè)縮短降低成本、提高應(yīng)用服務(wù)能力,推動企業(yè)的數(shù)字化、智能化轉(zhuǎn)型,為物聯(lián)網(wǎng)業(yè)務(wù)拓展帶來更大的便利。