隨著云原生架構(gòu)的普及,微服務(wù)與容器化部署成為現(xiàn)代應(yīng)用開發(fā)的主流范式。在這一背景下,服務(wù)網(wǎng)關(guān)作為流量入口與治理的關(guān)鍵組件,其重要性日益凸顯。網(wǎng)易作為國(guó)內(nèi)領(lǐng)先的互聯(lián)網(wǎng)技術(shù)公司,積極擁抱云原生技術(shù)棧,并基于Envoy代理深度實(shí)踐,構(gòu)建了高性能、高可用的云原生API網(wǎng)關(guān),以此為核心支撐其復(fù)雜的數(shù)據(jù)處理服務(wù)。
一、 技術(shù)選型:為何選擇Envoy?
Envoy是一款由Lyft開源的高性能C++分布式代理,專為云原生應(yīng)用設(shè)計(jì)。網(wǎng)易選擇Envoy作為網(wǎng)關(guān)數(shù)據(jù)平面的核心,主要基于以下幾點(diǎn)考量:
- 高性能與低延遲:Envoy采用非阻塞、事件驅(qū)動(dòng)的架構(gòu),能夠高效處理海量并發(fā)連接與請(qǐng)求,滿足數(shù)據(jù)處理服務(wù)對(duì)吞吐量和響應(yīng)時(shí)間的嚴(yán)苛要求。
- 動(dòng)態(tài)配置與熱更新:通過xDS API(如CDS、EDS、LDS、RDS),Envoy可以實(shí)現(xiàn)配置的動(dòng)態(tài)發(fā)現(xiàn)與熱加載,無需重啟即可實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)、路由規(guī)則、負(fù)載均衡策略的實(shí)時(shí)更新,極大地提升了網(wǎng)關(guān)的運(yùn)維敏捷性和服務(wù)可用性。
- 豐富的可觀測(cè)性:內(nèi)置了詳盡的統(tǒng)計(jì)數(shù)據(jù)、分布式追蹤和日志記錄能力,為網(wǎng)關(guān)及后端數(shù)據(jù)處理服務(wù)的監(jiān)控、診斷與性能優(yōu)化提供了強(qiáng)大支持。
- 強(qiáng)大的可擴(kuò)展性:通過Filter Chain機(jī)制,可以靈活插入各種L4/L7過濾器,輕松實(shí)現(xiàn)認(rèn)證、限流、熔斷、請(qǐng)求/響應(yīng)轉(zhuǎn)換等高級(jí)功能,完美適配數(shù)據(jù)處理流水線中的各種治理需求。
- 活躍的社區(qū)與生態(tài):作為CNCF畢業(yè)項(xiàng)目,Envoy擁有龐大的社區(qū)和豐富的生態(tài)系統(tǒng)(如Istio),技術(shù)成熟度高,且有長(zhǎng)期的發(fā)展保障。
二、 網(wǎng)關(guān)架構(gòu)設(shè)計(jì)與核心功能
網(wǎng)易的云原生網(wǎng)關(guān)采用了經(jīng)典的控制平面與數(shù)據(jù)平面分離架構(gòu)。
- 數(shù)據(jù)平面:以Envoy集群為核心,承擔(dān)所有流入流量(南北向)和部分服務(wù)間流量(東西向)的代理、路由、安全、可觀測(cè)性等職責(zé)。針對(duì)數(shù)據(jù)處理服務(wù)的特點(diǎn),網(wǎng)關(guān)重點(diǎn)強(qiáng)化了以下能力:
- 智能路由與負(fù)載均衡:基于HTTP頭部、路徑、查詢參數(shù)等實(shí)現(xiàn)細(xì)粒度路由,將請(qǐng)求精準(zhǔn)分發(fā)至不同的數(shù)據(jù)處理微服務(wù)(如數(shù)據(jù)清洗、特征計(jì)算、模型推理等)。支持多種負(fù)載均衡算法,保障后端實(shí)例間的流量均衡。
- 協(xié)議轉(zhuǎn)換與編解碼:數(shù)據(jù)處理服務(wù)常涉及多種協(xié)議(如gRPC、HTTP/1.1、HTTP/2)。網(wǎng)關(guān)內(nèi)置或通過定制過濾器實(shí)現(xiàn)了高效的協(xié)議轉(zhuǎn)換與消息編解碼,簡(jiǎn)化了客戶端與異構(gòu)后端服務(wù)的交互。
- 彈性與容錯(cuò):集成斷路器、異常點(diǎn)檢測(cè)、重試、超時(shí)控制等機(jī)制,有效隔離故障服務(wù)實(shí)例,提升數(shù)據(jù)處理鏈路的整體韌性。
- 安全與治理:集成統(tǒng)一的身份認(rèn)證(如JWT驗(yàn)證)、授權(quán)、請(qǐng)求限流(全局限流、基于標(biāo)頭的限流)、防爬蟲等安全策略,為數(shù)據(jù)處理接口提供安全保障。
- 請(qǐng)求/響應(yīng)轉(zhuǎn)換:在請(qǐng)求到達(dá)業(yè)務(wù)邏輯前或響應(yīng)返回客戶端前,進(jìn)行數(shù)據(jù)的聚合、過濾、格式轉(zhuǎn)換(如JSON到Protobuf),減輕后端服務(wù)的處理負(fù)擔(dān)。
- 控制平面:網(wǎng)易自研或集成開源方案,負(fù)責(zé)管理所有Envoy實(shí)例的配置。它聚合了服務(wù)注冊(cè)中心的信息、管理員配置的路由與安全策略,并通過xDS API統(tǒng)一下發(fā)至各個(gè)Envoy。控制平面還提供了豐富的管理界面,用于配置管理、監(jiān)控告警和統(tǒng)計(jì)分析。
三、 在數(shù)據(jù)處理服務(wù)中的實(shí)踐與優(yōu)化
將基于Envoy的網(wǎng)關(guān)應(yīng)用于具體的數(shù)據(jù)處理業(yè)務(wù)場(chǎng)景時(shí),網(wǎng)易團(tuán)隊(duì)進(jìn)行了一系列深度優(yōu)化:
- 性能調(diào)優(yōu):針對(duì)高并發(fā)數(shù)據(jù)攝入場(chǎng)景,精細(xì)調(diào)整了Envoy的工作線程數(shù)、連接池大小、緩沖區(qū)等參數(shù),并利用內(nèi)核bypass等技術(shù)(如DPDK)進(jìn)一步提升網(wǎng)絡(luò)I/O性能。
- 定制化Filter開發(fā):針對(duì)特定的數(shù)據(jù)處理邏輯,開發(fā)了專用的Envoy過濾器。例如,開發(fā)了用于實(shí)時(shí)數(shù)據(jù)校驗(yàn)、輕量級(jí)ETL(提取、轉(zhuǎn)換、加載)、請(qǐng)求審計(jì)等功能的過濾器,將通用處理邏輯下沉至網(wǎng)關(guān)層,實(shí)現(xiàn)了業(yè)務(wù)邏輯與非業(yè)務(wù)邏輯的解耦。
- 多維可觀測(cè)性集成:將網(wǎng)關(guān)的指標(biāo)(如QPS、延遲、錯(cuò)誤率)與Prometheus、Grafana深度集成;將訪問日志與分布式追蹤數(shù)據(jù)(通常使用Jaeger或SkyWalking)對(duì)接,實(shí)現(xiàn)了從網(wǎng)關(guān)入口到后端數(shù)據(jù)處理服務(wù)全鏈路的透明化監(jiān)控與問題定位,尤其在排查數(shù)據(jù)流水線中的性能瓶頸時(shí)效果顯著。
- 藍(lán)綠部署與灰度發(fā)布:利用Envoy強(qiáng)大的流量分割能力,輕松實(shí)現(xiàn)數(shù)據(jù)處理服務(wù)新版本的上線驗(yàn)證。可以通過權(quán)重將部分生產(chǎn)流量路由到新版本實(shí)例,進(jìn)行灰度測(cè)試,待驗(yàn)證無誤后再完成全量切換,極大降低了發(fā)布風(fēng)險(xiǎn)。
- 與Service Mesh融合:在更復(fù)雜的微服務(wù)架構(gòu)中,該網(wǎng)關(guān)作為南北向流量入口,與內(nèi)部基于Istio(數(shù)據(jù)平面同樣為Envoy)的Service Mesh協(xié)同工作,形成了統(tǒng)一的流量治理體系,實(shí)現(xiàn)了內(nèi)外部流量策略的一致性管理。
四、 收益與
通過基于Envoy構(gòu)建云原生網(wǎng)關(guān)并應(yīng)用于數(shù)據(jù)處理服務(wù),網(wǎng)易獲得了顯著的收益:
- 提升開發(fā)效率:后端數(shù)據(jù)處理團(tuán)隊(duì)可以更專注于核心業(yè)務(wù)邏輯,將流量管理、安全、可觀測(cè)性等非功能需求交由網(wǎng)關(guān)統(tǒng)一處理。
- 增強(qiáng)系統(tǒng)穩(wěn)定性與韌性:強(qiáng)大的彈性功能和對(duì)故障的快速隔離能力,保障了數(shù)據(jù)處理服務(wù)SLA。
- 優(yōu)化資源利用率與性能:高效的代理與智能路由降低了后端服務(wù)的負(fù)載,整體系統(tǒng)吞吐量得到提升。
- 強(qiáng)化運(yùn)維能力:動(dòng)態(tài)配置、完善的監(jiān)控與灰度發(fā)布能力,使得運(yùn)維更加自動(dòng)化、可視化與可控。
Envoy憑借其卓越的性能、靈活性與擴(kuò)展性,為構(gòu)建現(xiàn)代云原生網(wǎng)關(guān)提供了堅(jiān)實(shí)的數(shù)據(jù)平面基礎(chǔ)。網(wǎng)易的實(shí)踐表明,將其與數(shù)據(jù)處理服務(wù)深度結(jié)合,能夠有效應(yīng)對(duì)高并發(fā)、低延遲、高可用的業(yè)務(wù)挑戰(zhàn),是驅(qū)動(dòng)數(shù)據(jù)驅(qū)動(dòng)型業(yè)務(wù)穩(wěn)健前行的重要技術(shù)基石。隨著WebAssembly等新技術(shù)在Envoy中的深入應(yīng)用,網(wǎng)關(guān)的擴(kuò)展性與安全性將得到進(jìn)一步增強(qiáng),為云原生數(shù)據(jù)處理架構(gòu)開辟更多可能。