9月26日,在杭州云棲大會上各位專家分享了關(guān)于互聯(lián)網(wǎng)中間件的一些內(nèi)容。
互聯(lián)網(wǎng)中間件的演進(jìn)
首先是阿里云智能中間件首席架構(gòu)師李小平帶來的關(guān)于互聯(lián)網(wǎng)中間件演進(jìn)的分享。
互聯(lián)網(wǎng)中間件的發(fā)展得益于中國互聯(lián)網(wǎng)用戶的規(guī)模,規(guī)模變化使得同時服務(wù)幾億用戶成為挑戰(zhàn)。而飛速發(fā)展的業(yè)務(wù)需要飛速發(fā)展的技術(shù)來支持,技術(shù)一旦上升一個數(shù)量級,復(fù)雜度往往更大。
阿里本身中間件經(jīng)過一段時間的沉淀發(fā)展,提出了Aliware互聯(lián)網(wǎng)Paas產(chǎn)品+中臺的思想,在各行業(yè)快速復(fù)制。幫助客戶進(jìn)行業(yè)務(wù)創(chuàng)新。阿里目前基于互聯(lián)網(wǎng)中間件的業(yè)務(wù)架構(gòu)總體如下:

這種基于互聯(lián)網(wǎng)的中間件給我們帶來了什么呢?
- 業(yè)務(wù)規(guī)模: TRS和容量上支持海量業(yè)務(wù)規(guī)模
- 穩(wěn)定性提升:通過限流降級、灰度變更、高度冗余來保障穩(wěn)定性
- 彈性伸縮:支持分鐘級應(yīng)用實(shí)例創(chuàng)建和快速部署
但同時也面臨著新的挑戰(zhàn):

從互聯(lián)網(wǎng)中間件再往下該怎樣發(fā)展呢,我們選擇擁抱云原生。云原生技術(shù)的關(guān)鍵點(diǎn)包括:
- 基于容器技術(shù)和k8s:應(yīng)用發(fā)布和集群管理更容易
- Service mesh技術(shù):多語言的微服務(wù)架構(gòu)
- Serverless技術(shù):Faas+Baas模式
云原生將極大的改變云的使用方式,相比以往的技術(shù)來說,擁有以下優(yōu)點(diǎn):
- 高性能、高可用:中間件能力向底層融合
- 簡化的編程范式:Serverless編程模型
- 可觀測性、安全性:運(yùn)維方式的影響
主要的價值體現(xiàn)在:
- 開發(fā)方式的改變:DevOps、GitOps、應(yīng)用元數(shù)據(jù)定義;不同的業(yè)務(wù)場景選用最合適的語言和技術(shù)框架;面向服務(wù)編程,而非面向計算機(jī)編程。
- 部署模式的改變:公有云、私有云、混合云相同的部署模式;消除開發(fā)、測試、準(zhǔn)生產(chǎn)、生產(chǎn)環(huán)境的差異;多種策略進(jìn)行灰度,減少線上風(fēng)險。
- 運(yùn)行效率的提升:自動的資源分配、隔離、編排、調(diào)度;彈性伸縮和故障切換,甚至故障自愈能力;基礎(chǔ)設(shè)施的運(yùn)維與應(yīng)用運(yùn)維分離。
阿里關(guān)于云原生中間件的參考架構(gòu)如下:

阿里Serverless架構(gòu)演進(jìn)
接著許曉斌分享了阿里在線應(yīng)用的Serverless架構(gòu)演進(jìn)過程。
首先描述了阿里在線應(yīng)用的業(yè)務(wù)特定:
- 在線業(yè)務(wù)對響應(yīng)時間更敏感,一次用戶的請求產(chǎn)生幾十甚至上百次分布式調(diào)用,而最終的響應(yīng)時間直接影響轉(zhuǎn)化率。
- 應(yīng)用啟動時間可能很長,幾百s甚至上千s。
- 在阿里JAVA語言是絕對的主流。
在業(yè)界,Serverless技術(shù)分層分為3層:
- Runtime & Framework層:包括GraalVM、Spring Cloud Function
- DevOps層:主要是Knative
- Resource層:主要是Firecracker
行業(yè)發(fā)展的特定包括:
- 以Faas為Serverless的主流形式,雖然限制非常多
- Java并不是業(yè)界Serverless的一等公民,畢竟啟動速度太慢,而GraalVM正致力于降低Java應(yīng)用冷啟動速度。
- 提倡開源,包括Knative在內(nèi)的Serverless開源組件都在社區(qū)內(nèi)流行。
- 傳統(tǒng)容器技術(shù)不足以滿足安全需求,所以輕量級安全沙箱技術(shù)得以迅速發(fā)展。
通過實(shí)際業(yè)務(wù)情況和業(yè)界的對比可以發(fā)現(xiàn),關(guān)鍵難點(diǎn)在于如何保證在需要的時候在極短的時間(毫秒級)分配好資源、啟動應(yīng)用、保證服務(wù)可用。而實(shí)現(xiàn)該目標(biāo)后,才得以讓多個應(yīng)用錯峰使用同一臺機(jī)器,這也正是Serverless模式比Book模式的優(yōu)勢點(diǎn)。

我們主要使用多級彈性能力和快照技術(shù)來完成該目標(biāo)。

快照技術(shù)則需要在1:1和1:N之間進(jìn)行取舍

阿里整體的Serverless架構(gòu)如下:

互聯(lián)網(wǎng)中間件助力企業(yè)上云
接下來主要是企業(yè)關(guān)于上云的經(jīng)驗(yàn)分享,其中比較重點(diǎn)地推薦了阿里云微服務(wù)應(yīng)用托管平臺EDAS。
阿里云目前提供的企業(yè)級互聯(lián)網(wǎng)架構(gòu)包括:

EDAS作為微服務(wù)托管平臺也是比較核心的產(chǎn)品,融合了配置管理、限流降級、負(fù)載均衡、流量控制、服務(wù)注冊與發(fā)現(xiàn)以及服務(wù)安全等功能。與開源應(yīng)用相比,主要優(yōu)勢在于融合集成了諸多能力,包括0成本接入全鏈路跟蹤、支持限流降級動態(tài)配置、支持配置管理并可實(shí)時推送等。而使用開源軟件,意味著你需要自己搭配使用Dubbo、SkyWalking、Sentinel、Narcos等組件,沒有開箱即用來得方便。

EDAS除了常規(guī)功能外,比較有特點(diǎn)的功能包括

接下來稍微講了一下全鏈路灰度的功能在企業(yè)中的應(yīng)用,包括實(shí)現(xiàn)全鏈路壓測的部分功能(流量打標(biāo)透傳)以及全鏈路灰度集成環(huán)境(主要是抽象了一個類似泳道的概念,應(yīng)用灰度通過打標(biāo)自動實(shí)現(xiàn)而無需單獨(dú)配置)。


阿里云全面支持SkyWalking
SkyWalking是一款開源的APM框架,是Apache頂級項目。阿里云目前通過OpenTracing協(xié)議兼容,支持了SkyWalking探針接入,主要優(yōu)點(diǎn)是無需關(guān)心背后的ES運(yùn)維以及一些功能上的增強(qiáng)。
功能增強(qiáng)主要包括了監(jiān)控、診斷、分析、報警四個部分。




感想
互聯(lián)網(wǎng)中間件應(yīng)該是轉(zhuǎn)型到云原生中間件了,擁抱k8s、serviceMesh以及serverless,關(guān)于這三點(diǎn)對我目前的認(rèn)知水平來說是有些挑戰(zhàn)的。大會上這三點(diǎn)只提到了serverless,這確實(shí)是比較新的技術(shù),在復(fù)用開源組件外,對于JAVA應(yīng)用來說核心的改進(jìn)點(diǎn)在于應(yīng)用的極速啟動。
阿里的云平臺產(chǎn)品基本都是集成了很多組件能力了,EDAS看起來就至少包括了分布式服務(wù)框架、負(fù)載均衡組件、配置中心、分布式鏈路追蹤、應(yīng)用容器技術(shù)以及穩(wěn)定性相關(guān)的彈性伸縮、限流降級、統(tǒng)一開關(guān)等功能或組件。著重提到的鏈路壓測以及集成灰度,一般功能完善的服務(wù)框架也都可以支持,或者改造起來并不困難。
至于Skywalking,使用JAVA探針模式真的很方便擴(kuò)展和集成,很有先見之明。阿里云的功能增強(qiáng)方面主要包括tag聚合分析以及上下游拓?fù)涔δ?,基本上也主要是服?wù)端產(chǎn)品層面的功能完善。