五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

天穹-gateway網(wǎng)關(guān)系列1:Tesla網(wǎng)關(guān)整體介紹

2023-02-15 12:48 作者:天穹云原生  | 我要投稿

開源地址


https://github.com/XiaoMi/mone/tree/master/gateway-all 歡迎對(duì)云原生技術(shù)/研發(fā)效能感興趣的小伙伴加入(Fork、Star)我們。

一.背景

在微服務(wù)時(shí)代,服務(wù)拆分粒度越來越細(xì),每個(gè)微服務(wù)各自負(fù)責(zé)自己的核心功能并對(duì)外提供一系列的api接口。但隨著業(yè)務(wù)的拓展,接口越來越多,也就誕生了一些問題??梢栽谝粋€(gè)地方去統(tǒng)一的管理這些接口嗎?在涉及到鑒權(quán)這個(gè)普遍的問題時(shí),難道需要每個(gè)微服務(wù)都實(shí)現(xiàn)一次嗎?每個(gè)微服務(wù)都有自己的協(xié)議和代碼書寫風(fēng)格,比如駝峰和下劃線,能統(tǒng)一嗎?

這種情況下,我們就需要api gateway來解決這些問題。

二.什么是gateway網(wǎng)關(guān)

API網(wǎng)關(guān)是一種服務(wù),是系統(tǒng)的統(tǒng)一入口。我們可以將各個(gè)微服務(wù)公共非業(yè)務(wù)功能放在API Gateway中實(shí)現(xiàn),如身份驗(yàn)證、監(jiān)控、負(fù)載均衡、緩存等,以盡可能減少各服務(wù)的職責(zé)。API 網(wǎng)關(guān)將各系統(tǒng)對(duì)外暴露的服務(wù)聚合起來,所有要調(diào)用這些服務(wù)的系統(tǒng)都需要通過 API 網(wǎng)關(guān)進(jìn)行訪問,基于這種方式網(wǎng)關(guān)可以對(duì) API 進(jìn)行統(tǒng)一管控。

三. Tesla網(wǎng)關(guān)

Tesla是由小米效能團(tuán)隊(duì)開源的基于JDK19的一款高性能、易擴(kuò)展的優(yōu)秀的API網(wǎng)關(guān)平臺(tái),是小米效能團(tuán)隊(duì)結(jié)合小米多年大促經(jīng)驗(yàn)沉淀而成,目前已經(jīng)經(jīng)歷過十余次小米大促的考驗(yàn),并在其中承擔(dān)了流量治理的核心角色,是小米業(yè)務(wù)鏈中不可或缺的一環(huán)。

說到基于Java的API網(wǎng)關(guān),可能很多人第一反應(yīng)就是SpringCloud Gateway或者Zuul,但是Tesla網(wǎng)關(guān)無論在易用性、擴(kuò)展性和性能方面都有非常明顯的優(yōu)勢(shì):

  • 易用性:Tesla擁有可視化操作界面,同時(shí)支持配置實(shí)時(shí)更新,實(shí)時(shí)生效,極大簡(jiǎn)化學(xué)習(xí)使用成本,優(yōu)化操作體驗(yàn)。

  • 多協(xié)議:支持HTTP、Dubbo、gRPC等協(xié)議轉(zhuǎn)發(fā)

  • 擴(kuò)展性:Tesla通過對(duì)自定義Filter支持,尤其是Sidecar模式的動(dòng)態(tài)Filter支持,給Tesla提供了強(qiáng)大的擴(kuò)展性支持,可以滿足大多數(shù)業(yè)務(wù)和項(xiàng)目的需求。

  • 高性能:Tesla網(wǎng)關(guān)自身是基于Netty進(jìn)行開發(fā),在性能上已經(jīng)擁有非常亮眼的表現(xiàn)。同時(shí)全面支持JDK19 的 Virtual Thread,使Tesla網(wǎng)關(guān)的性能和資源分配上都得到了較大的提升。


1、技術(shù)架構(gòu)

Tesla 網(wǎng)關(guān)主要由兩個(gè)部分組成:控制臺(tái) + 網(wǎng)關(guān)。其中控制臺(tái)主要是維護(hù)API數(shù)據(jù)和Filter數(shù)據(jù),同時(shí)還可以對(duì)不同網(wǎng)關(guān)集群的域名進(jìn)行管理。Tesla網(wǎng)關(guān)集權(quán)是該產(chǎn)品的核心組成部分,負(fù)責(zé)整個(gè)流量治理、安全防護(hù)、Filter執(zhí)行、協(xié)議轉(zhuǎn)換和流量轉(zhuǎn)發(fā)等內(nèi)容。

2、核心能力

2.1、動(dòng)態(tài)發(fā)現(xiàn),負(fù)載均衡

當(dāng)下微服務(wù)和容器化的流行,使得業(yè)務(wù)服務(wù)的節(jié)點(diǎn)數(shù)量、ip地址等隨時(shí)可能發(fā)生變化。Tesla網(wǎng)關(guān)打通了服務(wù)注冊(cè)中心,訂閱相關(guān)服務(wù)信息,在業(yè)務(wù)服務(wù)側(cè)發(fā)生變化時(shí)能做到實(shí)時(shí)感知。并且在處理實(shí)際的請(qǐng)求時(shí),支持多種負(fù)載均衡策略,比如輪詢、哈希等。這樣,業(yè)務(wù)服務(wù)做擴(kuò)縮容,或者故障恢復(fù)、熱備、切換時(shí),配合業(yè)務(wù)服務(wù)的優(yōu)雅退出,已經(jīng)基本能做到調(diào)用方無感知了。

2.2、統(tǒng)一管理 api,動(dòng)態(tài)秒級(jí)更新

我們按“租戶->集群->接口分組->接口”對(duì)api接口進(jìn)行組織。你能在Tesla控制臺(tái)查看到你有權(quán)限查看的api接口,并對(duì)他們進(jìn)行一系列操作,比如開啟鑒權(quán),接口mock等。Tesla控制臺(tái)統(tǒng)一管理了所有的api接口,在你新增或者更新了一個(gè)接口時(shí),網(wǎng)關(guān)集群也能實(shí)時(shí)感知到接口的變化,實(shí)現(xiàn)了運(yùn)行時(shí)配置更新機(jī)制。

2.3、用戶自定義插件,實(shí)時(shí)上傳,動(dòng)態(tài)插拔

在Tesla網(wǎng)關(guān)發(fā)展的過程中,我們發(fā)現(xiàn)讓用戶能參與進(jìn)來貢獻(xiàn)filter插件是一件很棒的事情,每個(gè)filter是一個(gè)功能,大家可以盡情發(fā)揮創(chuàng)造力貢獻(xiàn)自己的filter,實(shí)現(xiàn)多種功能,像是鑒權(quán)、灰度、限流等。Tesla網(wǎng)關(guān)允許用戶實(shí)時(shí)上傳自己的filter代碼,網(wǎng)關(guān)集群動(dòng)態(tài)加載,無需重啟,每個(gè)用戶都可以復(fù)用別人的filter。

2.4、多種協(xié)議轉(zhuǎn)換

網(wǎng)關(guān)作為統(tǒng)一的api入口,對(duì)外提供的是restful風(fēng)格的http接口。但后端的微服務(wù)使用的協(xié)議是多種多樣的,你可以是dubbo,是grpc,是http,在這里,網(wǎng)關(guān)封裝了后端的不同協(xié)議,暴露給前端統(tǒng)一的接口風(fēng)格。

2.5、流量管理

流量安全:流量安全是每一個(gè)網(wǎng)關(guān)產(chǎn)品都繞不開的話題,如何應(yīng)對(duì)DDoS等安全問題、如何進(jìn)行請(qǐng)求鑒權(quán)、如何進(jìn)行數(shù)據(jù)脫敏等。Tesla網(wǎng)關(guān)對(duì)這一系列安全問題都有完善的,并且經(jīng)過多次大促驗(yàn)證的解決方案。

流量控制:網(wǎng)關(guān)產(chǎn)品無論在日常運(yùn)行,或是大促等特殊時(shí)間,都有一套完整的限流熔斷措施,可以極大程度上保護(hù)后端業(yè)務(wù)系統(tǒng)的健壯性和可用性。但是Tesla網(wǎng)關(guān)不止?jié)M足于此,還額外擴(kuò)展了很多實(shí)用的功能更好的幫助業(yè)務(wù)系統(tǒng)。其中就包括結(jié)果緩存、流量記錄回放等功能,從而給業(yè)務(wù)系統(tǒng)提供更多的便利和幫助。

資源隔離:Tesla網(wǎng)關(guān)承載了比較多的業(yè)務(wù)系統(tǒng)。其中有流量大的,有安全要求高的,有業(yè)務(wù)復(fù)雜的??梢哉f幾乎每個(gè)業(yè)務(wù)系統(tǒng)都有自己特殊的要求,那么做到每個(gè)業(yè)務(wù)系統(tǒng)互不干擾對(duì)Tesla網(wǎng)關(guān)就尤其重要。比如A系統(tǒng)業(yè)務(wù)非常復(fù)雜,導(dǎo)致請(qǐng)求返回比較慢,如果不做資源隔離,單一系統(tǒng)就可以搶占更多的系統(tǒng)資源,從而影響其他業(yè)務(wù)系統(tǒng)。Tesla網(wǎng)關(guān)目前已經(jīng)可以做到系統(tǒng)資源隔離、業(yè)務(wù)資源隔離。每個(gè)業(yè)務(wù)都有自己獨(dú)立的資源池,保障“專款專用”,給業(yè)務(wù)保駕護(hù)航。

3、設(shè)計(jì)難點(diǎn)

網(wǎng)關(guān)作為流量的統(tǒng)一入口,其穩(wěn)定性、性能、伸縮性和可擴(kuò)展性是其設(shè)計(jì)的重點(diǎn)。

為了保障穩(wěn)定性,我們對(duì)集群做了隔離,像交易鏈路這樣的核心服務(wù)就可以申請(qǐng)自己的獨(dú)立集群。集群里每個(gè)接口分組也都有獨(dú)立線程池來處理請(qǐng)求的接收、分發(fā)和返回,以此保障不同分組互不影響。

對(duì)于性能,網(wǎng)關(guān)引入了netty自研了一個(gè)web_server保證高吞吐,網(wǎng)關(guān)集群對(duì)核心元數(shù)據(jù)會(huì)在內(nèi)存里有一份緩存,靠同步機(jī)制保證實(shí)時(shí)性;此外,對(duì)慢請(qǐng)求實(shí)現(xiàn)了打斷機(jī)制,避免資源被占用,最后我們還對(duì)dubbo版本做了一些優(yōu)化,比如,dubbo的泛化調(diào)用一開始是不支持設(shè)置超時(shí)時(shí)間的。

對(duì)于伸縮性的話,作為流量入口的網(wǎng)關(guān)是要能支持隨時(shí)擴(kuò)縮容以應(yīng)對(duì)突發(fā)流量的,所以網(wǎng)關(guān)集群里的每臺(tái)機(jī)器本身不具備狀態(tài),都由admin管理平臺(tái)來控制數(shù)據(jù)的同步。

最后是擴(kuò)展性,網(wǎng)關(guān)鼓勵(lì)大家提交自己的filter,互惠互助。

4、設(shè)計(jì)腦圖


四. 關(guān)于未來的發(fā)展方向

目前我們的網(wǎng)關(guān)架構(gòu)是中心化網(wǎng)關(guān),提供通用能力如鑒權(quán)、限流等處理請(qǐng)求,并根據(jù)服務(wù)標(biāo)識(shí)將請(qǐng)求路由到正確的后端服務(wù);服務(wù)處理完請(qǐng)求,響應(yīng)原路返回。


作為流量的統(tǒng)一入口,面對(duì)多樣的業(yè)務(wù)形態(tài)和復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),中心化網(wǎng)關(guān)架構(gòu)在實(shí)際場(chǎng)景中遇到了一些困難。第一、隨著業(yè)務(wù)發(fā)展壯大,網(wǎng)關(guān)集群機(jī)器數(shù)不斷增長(zhǎng)。這加劇了運(yùn)維層面的復(fù)雜性,IT成本也面臨不能承受之重。第二,一些核心鏈路的業(yè)務(wù)迫切需要與其他業(yè)務(wù)隔離,避免不可預(yù)知的突發(fā)流量影響到這些高保業(yè)務(wù)的可用性。


所以這里開始建設(shè)和推廣網(wǎng)關(guān)的去中心化。Mesh 網(wǎng)關(guān)與后端服務(wù)同一個(gè) Pod 部署,即 Mesh 網(wǎng)關(guān)與業(yè)務(wù)系統(tǒng)同服務(wù)器、不同進(jìn)程,具備網(wǎng)關(guān)的全量能力。這是我們目前在探索的一個(gè)方向。


天穹-gateway網(wǎng)關(guān)系列1:Tesla網(wǎng)關(guān)整體介紹的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
望谟县| 扶沟县| 东阳市| 穆棱市| 紫云| 内乡县| 山阴县| 渝中区| 如皋市| 凉城县| 洛阳市| 龙里县| 神池县| 仙居县| 长乐市| 商洛市| 翁牛特旗| 邳州市| 隆林| 温州市| 山西省| 台东县| 勃利县| 哈密市| 浪卡子县| 西安市| 聂荣县| 武功县| 台中县| 玉龙| 稷山县| 瑞金市| 玛纳斯县| 武冈市| 东乌| 囊谦县| 云和县| 临泉县| 余庆县| 屏东市| 昌都县|