日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

云原生时代,应用架构将如何演进?

發(fā)布時(shí)間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云原生时代,应用架构将如何演进? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 |?許曉斌? 阿里云高級(jí)技術(shù)專(zhuān)家

導(dǎo)讀:如何借助云原生技術(shù)來(lái)提升交付速度?云原生時(shí)代背景下,研發(fā)的關(guān)注點(diǎn)又會(huì)有哪些轉(zhuǎn)變?阿里云高級(jí)技術(shù)專(zhuān)家許曉斌通過(guò)本文分享從 IaaS 上云時(shí)代到 PaaS 上云時(shí)代的應(yīng)用架構(gòu)演進(jìn)方向,以及云原生技術(shù)與應(yīng)用架構(gòu)演進(jìn)的關(guān)系。

云原生已經(jīng)進(jìn)入了 PaaS 上云為主的階段

阿里巴巴已經(jīng)經(jīng)歷了 IaaS 上云的階段,邁進(jìn)到了 PaaS 上云的時(shí)代。在去年的“雙11”,阿里巴巴就已經(jīng)實(shí)現(xiàn)了電商核心系統(tǒng)的全面上云,這里的上云主要是在 IaaS 層。所謂 IaaS 主要就是對(duì)計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)的虛擬化,經(jīng)過(guò)了這個(gè)階段,阿里巴巴就進(jìn)入了 PaaS 上云的階段。在 PaaS 上云這個(gè)階段就需要使用更多的云產(chǎn)品,包括中間件、存儲(chǔ)、緩存甚至是應(yīng)用托管平臺(tái)等。

IaaS 階段和 PaaS 階段其實(shí)存在很大的差別。在 IaaS 階段,對(duì)于應(yīng)用研發(fā)來(lái)說(shuō),所關(guān)心的往往就是基礎(chǔ)設(shè)施和資源,通俗來(lái)講就是虛擬機(jī)或者容器等,這些對(duì)應(yīng)用架構(gòu)幾乎沒(méi)有任何侵入。但是在 PaaS 上云階段,當(dāng)你使用云產(chǎn)品,比如云 Redis、云 RDS、云 OSS、云 RabbitMQ 等的時(shí)候,都會(huì)對(duì)于應(yīng)用架構(gòu)產(chǎn)生比較強(qiáng)的侵入。那么,這樣的侵入會(huì)對(duì)應(yīng)用架構(gòu)產(chǎn)生什么樣的影響,是所有研發(fā)架構(gòu)師所需要思考的一個(gè)問(wèn)題。

云原生技術(shù)

如果大家嘗試去搜索云原生技術(shù),就會(huì)看到 Google Cloud 的定義、CNCF 的定義以及其他很多的云廠商以及開(kāi)源軟件的定義,而這些定義看法都各有不同。簡(jiǎn)單歸納可以分為如下圖所示的幾類(lèi),縱向來(lái)看,分為應(yīng)用架構(gòu)、生命周期管理、流量管理,以及基礎(chǔ)設(shè)施及依賴(lài)四個(gè)維度;橫向來(lái)看,又分為微服務(wù)、12 Factor Apps、容器、BaaS、GitOps/IaC 以及 Service Mesh 幾個(gè)維度。

今天,大家都會(huì)談到基于微服務(wù)架構(gòu)做云原生,而不是基于巨石應(yīng)用架構(gòu)或者簡(jiǎn)單的 CS 架構(gòu)。Quarkus 提出了 12 Factor Apps,意思就是說(shuō)如果在今天想要讓?xiě)?yīng)用跑在 Quarkus 等這些應(yīng)用托管平臺(tái)上,對(duì)于應(yīng)用具有一定的要求,大概是 12 條原則,比如配置和代碼分離等,當(dāng)然后續(xù)還有很多的擴(kuò)展。這些原則中的很多條目的意思都是說(shuō)只要你符合這些原則,那么應(yīng)用托管平臺(tái)就能夠?yàn)槟闾峁└嗟哪芰?#xff0c;比如免運(yùn)維等。容器的核心是使用一種標(biāo)準(zhǔn)的交互方式讓平臺(tái)能夠管理應(yīng)用的生命周期,包括發(fā)布、擴(kuò)容以及自愈等。

BaaS——Backend as a Service,能夠盡量使用現(xiàn)有的服務(wù)來(lái)構(gòu)建應(yīng)用程序。Service Mesh 的本質(zhì)是管理流量,今天的應(yīng)用程序都在接收流量,提供服務(wù)時(shí)流量又需要出去,在這個(gè)過(guò)程中如何管理服務(wù)發(fā)現(xiàn)、流量路由規(guī)則等都需要 Service Mesh 技術(shù)。最后需要重點(diǎn)介紹的就是 GitOps 和 IaC(Infrastructure as Code),這些技術(shù)如今在行業(yè)里面得到了越來(lái)越多的關(guān)注,盡管還沒(méi)有事實(shí)上的標(biāo)準(zhǔn),但是很多云計(jì)算公司正在不斷努力。其含義是說(shuō)今天在使用基礎(chǔ)設(shè)施的時(shí)候,可以用代碼去聲明這些基礎(chǔ)設(shè)施的需求。總而言之,上述這些內(nèi)容都是圍繞應(yīng)用架構(gòu)、生命周期管理、流量管理,以及基礎(chǔ)設(shè)施及依賴(lài)這四個(gè)維度的。

業(yè)務(wù)關(guān)心的是交付速度

對(duì)于業(yè)務(wù)而言,最關(guān)心的往往是交付速度。如果你和業(yè)務(wù)總監(jiān)或者 CTO 去聊,他們就會(huì)問(wèn)你,擁有這么多的技術(shù)對(duì)于業(yè)務(wù)有什么好處?可能會(huì)談到成本的優(yōu)勢(shì)、管理的優(yōu)勢(shì),但是對(duì)于幾乎所有業(yè)務(wù)而言,最核心的是研發(fā)效率的提升。所以我們應(yīng)該思考云原生技術(shù)如何才能幫助實(shí)現(xiàn)更快的交付。

借助云原生技術(shù)來(lái)提升交付服務(wù)的速度可以大致分為三個(gè)步驟。

1. 標(biāo)準(zhǔn)化平臺(tái)/服務(wù)和應(yīng)用的協(xié)議

將平臺(tái)/服務(wù)和應(yīng)用之間的協(xié)議進(jìn)行標(biāo)準(zhǔn)化。如果 IaaS 層用云的話協(xié)議就是機(jī)器,就是虛擬機(jī)、容器等,對(duì)于業(yè)務(wù)應(yīng)用而言,看到的就是一個(gè)操作系統(tǒng),這樣應(yīng)用就可以使用操作系統(tǒng)上的各種資源,這樣做的好處在于不需要關(guān)心物理機(jī)以及機(jī)器的故障等問(wèn)題。

2. 與業(yè)務(wù)無(wú)關(guān)能力進(jìn)一步解耦至平臺(tái)

對(duì)于業(yè)務(wù)應(yīng)用而言,看到的就不是一個(gè)操作系統(tǒng)了,會(huì)給到一個(gè)更加上層的協(xié)議,讓平臺(tái)幫助應(yīng)用實(shí)現(xiàn)自動(dòng)伸縮以及自愈等,還可以幫助應(yīng)用實(shí)現(xiàn)自動(dòng)騰挪,當(dāng)?shù)讓踊A(chǔ)設(shè)施發(fā)生故障的時(shí)候,可以將應(yīng)用從一臺(tái)機(jī)器遷移到另外一臺(tái)機(jī)器,也就是生命周期管理。基于上述協(xié)議,平臺(tái)的很多能力就能夠下沉,比如原本需要手工管理的事情只需要通過(guò)代碼聲明就可以很好地實(shí)現(xiàn)了,有了這些協(xié)議之后,業(yè)務(wù)應(yīng)用就能夠?qū)⑾嚓P(guān)的生命周期管理托管給平臺(tái)。

3. 應(yīng)用架構(gòu)升級(jí)

除了上述兩點(diǎn)之外,第三步就是讓?xiě)?yīng)用架構(gòu)需要通過(guò)升級(jí)來(lái)適應(yīng),這樣才能讓相關(guān)能力下沉到云平臺(tái)。

IaaS?上云階段到云原生上云階段的轉(zhuǎn)變

進(jìn)一步細(xì)化就會(huì)發(fā)現(xiàn),在原來(lái)的 IaaS 上云階段,除了需要關(guān)心業(yè)務(wù)邏輯之外,還需要關(guān)心業(yè)務(wù)應(yīng)用的生命周期管理、流量管理,還需要自己進(jìn)行搭建和配置中間件,比如在云環(huán)境中搭建 Redis、kafka 等,也就是說(shuō)花費(fèi)了大量時(shí)間在應(yīng)用依賴(lài)管理的事情上,無(wú)法讓云平臺(tái)進(jìn)行管理。今天,在 PaaS 上云或者云原生上云的階段,想要做到的就是盡量使用云平臺(tái)提供的能力,將更多的精力集中在業(yè)務(wù)本身,而將業(yè)務(wù)無(wú)關(guān)的通用技術(shù)能力都交給云來(lái)管理。

核心問(wèn)題:

  • 業(yè)務(wù)無(wú)關(guān)能力如何解耦至平臺(tái)?
  • 平臺(tái)和業(yè)務(wù)(應(yīng)用)之間的協(xié)議如何定義?
  • 應(yīng)用架構(gòu)需要如何適應(yīng)?

以前在 IaaS 上云階段,應(yīng)用和操作系統(tǒng)進(jìn)行交互存在標(biāo)準(zhǔn)的協(xié)議,而今天在 PaaS 上云階段,這樣的協(xié)議應(yīng)該是什么,需要被重新定義。此外,基于這樣的協(xié)議如何實(shí)現(xiàn)能力下沉,也是很多包括阿里云在內(nèi)的很多云廠商所做的事情,比如阿里云基于 RocketMQ 做了 RocketMQ Service,基于容器的一些協(xié)議提供容器服務(wù)等等。當(dāng)然,現(xiàn)在只是一個(gè)開(kāi)始,未來(lái)這部分內(nèi)容將會(huì)更加豐富和完整。

例子 1:Service Mesh 把服務(wù)發(fā)現(xiàn)和流量從業(yè)務(wù)剝離

與此同時(shí),應(yīng)用架構(gòu)也需要去適應(yīng)。這里以 Service Mesh 為例,之前在應(yīng)用內(nèi)部的流量是 SDK 的形式,那么在演進(jìn)的過(guò)程中如何將服務(wù)發(fā)現(xiàn)和流量等從業(yè)務(wù) SDK 中剝離出來(lái)放到 Sidecar 里面去,進(jìn)而交給云平臺(tái)處理,這就是應(yīng)用架構(gòu)演進(jìn)的一個(gè)例子。

  • 服務(wù)注冊(cè) & 發(fā)現(xiàn)
  • 流量路由
  • 流量回放
  • 發(fā)布過(guò)程中流量控制

例子 2:輕量化容器把日志采集從業(yè)務(wù)中剝離

以前在做日志采集的時(shí)候,需要在各個(gè)虛擬機(jī)中開(kāi)啟一個(gè)日志采集進(jìn)程,并將采集到的日志傳輸?shù)饺罩静杉脚_(tái),并通過(guò)可視化界面進(jìn)行分析。而今天,在云原生時(shí)代,更好的做法是讓容器服務(wù)從 stdout 來(lái)抓取日志,也可以通過(guò)配置的方式去特定日志目錄獲取日志數(shù)據(jù)。但是采集這個(gè)事情需要搬到 Sidecar 里面去實(shí)現(xiàn) Agent 的升級(jí)。所以輕量化容器把日志采集從業(yè)務(wù)中剝離也是一個(gè)架構(gòu)演進(jìn)的例子。

  • 資源隔離
  • 獨(dú)立升級(jí)

例子 3:業(yè)務(wù)提供探針,讓平臺(tái)實(shí)現(xiàn)生命周期管理

生命周期管理對(duì)于應(yīng)用架構(gòu)的要求就是原來(lái)的應(yīng)用程序啟動(dòng)之后是健康的還是不健康的,都是應(yīng)用程序的運(yùn)維或者研發(fā)需要負(fù)責(zé)和關(guān)心的。而在云原生時(shí)代,希望將這種協(xié)議固定住,通過(guò)業(yè)務(wù)提供探針,來(lái)判斷應(yīng)用程序是健康的還是不健康的,這就需要在應(yīng)用內(nèi)部通過(guò) HTTP 協(xié)議或者 Shell 來(lái)提供健康信息,這樣才能夠應(yīng)用生命周期管理落到平臺(tái)中去。

  • 自動(dòng)彈性
  • 自動(dòng)騰挪
  • 自動(dòng)重啟(自愈)

協(xié)議(Contract)=API+Configuration

統(tǒng)籌來(lái)看,協(xié)議就是 API+配置。對(duì)于 API 而言,如果大家使用緩存,那么基本會(huì)將開(kāi)源的協(xié)議當(dāng)做 API,這樣的協(xié)議通常會(huì)比閉源的協(xié)議更加友好。對(duì)于 RPC 協(xié)議,開(kāi)源的 GRPC 和 DUBBO 會(huì)優(yōu)于私有的 HSF。此外還有對(duì)于基礎(chǔ)設(shè)施的協(xié)議,比如 Terraform、Pulumi 這些其實(shí)是在定義一種開(kāi)源的配置語(yǔ)言,這些配置語(yǔ)言能夠幫助聲明所需要的基礎(chǔ)設(shè)施,比如容器、磁盤(pán)、網(wǎng)絡(luò)、存儲(chǔ)等,雖然現(xiàn)在的配置語(yǔ)言種類(lèi)比較多,但是未來(lái)最終會(huì)形成 1 到 2 種語(yǔ)言,就像是 Java 的 SDK 一樣,未來(lái)使用云資源必然會(huì)呈現(xiàn)出一套 SDK 來(lái),這個(gè) SDK 必然是根據(jù)一套配置代碼化語(yǔ)言來(lái)構(gòu)建的。進(jìn)一步的,GitOps 等將發(fā)布流程、發(fā)布策略也定義成了一套語(yǔ)言,而這在未來(lái)將會(huì)應(yīng)用程序與云之間的標(biāo)準(zhǔn)協(xié)議。

  • Docker (& OCI) 是標(biāo)準(zhǔn)的軟件交付 API;
  • 作為 RPC 協(xié)議,開(kāi)源的 GRPC/DUBBO 優(yōu)于私有的 HSF;
  • 作為緩存協(xié)議,開(kāi)源的 Redis 優(yōu)于私有的 Tair;
  • 微軟的 Dapr 嘗試基于 sidecar 架構(gòu)將 API 標(biāo)準(zhǔn)化到 HTTP/GRPC 層,以去 SDK,并支持多語(yǔ)言;
  • Terraform,Pulumi 等 IaC 產(chǎn)品,通過(guò)配置語(yǔ)言聲明基礎(chǔ)設(shè)施;
  • GitOps 進(jìn)一步的使用代碼聲明環(huán)境、發(fā)布流程、發(fā)布策略?xún)?nèi)容。

研發(fā)關(guān)注點(diǎn)的轉(zhuǎn)變

原來(lái)的時(shí)候,應(yīng)用程序所需要關(guān)心的東西太多,比如各種 SDK、各種運(yùn)維事件,但是這些東西實(shí)際上都可以被抽象成一種模型,并且使用一種新的語(yǔ)言來(lái)定義,這也是整個(gè)云產(chǎn)業(yè)所關(guān)心的事情。

之所以一直強(qiáng)調(diào)新語(yǔ)言和新協(xié)議,是因?yàn)槎x了新的語(yǔ)言或者協(xié)議之后,應(yīng)用程序所需要關(guān)心的就是這些了。對(duì)于開(kāi)發(fā)者而言,最關(guān)心的就是代碼,那么如果能夠用代碼來(lái)描述應(yīng)用對(duì)于基礎(chǔ)設(shè)施、運(yùn)維、托管的需求,那么就會(huì)對(duì)應(yīng)用程序非常友好。應(yīng)用程序只需要能夠?qū)舆@個(gè)協(xié)議,那么就能夠在專(zhuān)有云、公有云、阿里云上同時(shí)運(yùn)行。

總結(jié)

未來(lái),云上的資源會(huì)越來(lái)越豐富,在基礎(chǔ)設(shè)施之上,云平臺(tái)提供了更多的 PaaS 能力,就像是操作系統(tǒng)在提供了進(jìn)程這些能力之上,還有很多的 SDK。但是,這些能力目前在使用上還非常低效和不標(biāo)準(zhǔn),使用過(guò)程也比較麻煩。今天我們?cè)谝灶?lèi)似匯編的形式使用云,云原生則在重新定義應(yīng)用程序與云平臺(tái)之間的契約,并圍繞這個(gè)契約來(lái)構(gòu)建更高級(jí)的編程語(yǔ)言和工具。這就是云原生時(shí)代背景下,應(yīng)用架構(gòu)演進(jìn)非常重要的一個(gè)方向。

點(diǎn)擊即可查看云原生架構(gòu)白皮書(shū):https://developer.aliyun.com/topic/cn-architecture-paper

“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開(kāi)發(fā)者的公眾號(hào)?!?/p>

總結(jié)

以上是生活随笔為你收集整理的云原生时代,应用架构将如何演进?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。