那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于API 網(wǎng)關(guān)的微服務(wù)治理方案

西西 ? 來源:twt ? 作者:王作敬 ? 2019-02-01 01:05 ? 次閱讀

容器技術(shù)越來越成熟,應(yīng)用領(lǐng)域也越來越廣,容器的應(yīng)用促進(jìn)了微服務(wù)的快速發(fā)展,也使旨在提升效率和融合開發(fā)運(yùn)維的DevOps迅速落地。容器、微服務(wù)、DevOps就像孿生兄弟,相互依存,相互融合和發(fā)展。隨著容器平臺的建設(shè)落地,微服務(wù)越來越火,越來越多的公司已經(jīng)開始采用或者正在考慮采用微服務(wù)架構(gòu)。但微服務(wù)架構(gòu)應(yīng)用通常是分布式的,一個(gè)業(yè)務(wù)應(yīng)用通常是由眾多的微服務(wù)編排而成,服務(wù)之間的調(diào)用、通信、安全認(rèn)證、訪問控制、負(fù)載均衡、限流限額等需求也帶來了運(yùn)維的復(fù)雜性,實(shí)現(xiàn)微服務(wù)治理是個(gè)不小的難題。如果再把微服務(wù)部署于容器云平臺,則會更加復(fù)雜。目前也有不少的廠商或者公司嘗試開發(fā)微服務(wù)治理平臺,不管基于gRPC或者Istio等,都不是一個(gè)成熟的方案。基于我們銀河證券容器云平臺建設(shè)和微服務(wù)管理治理的實(shí)踐研究,我們提出了使用成熟的API網(wǎng)關(guān)產(chǎn)品來實(shí)現(xiàn)容器云平臺微服務(wù)治理的方案,更快、更便利的實(shí)現(xiàn)微服務(wù)的治理,特別對于傳統(tǒng)行業(yè)IT技術(shù)實(shí)力相對有限的情況下,避免投入大量的人力財(cái)力去做基礎(chǔ)平臺的研發(fā),更可避免項(xiàng)目失敗所導(dǎo)致的時(shí)間、發(fā)展機(jī)遇的錯(cuò)失。

微服務(wù)治理當(dāng)前面臨的問題

微服務(wù)化帶來了很多好處,比如通過將復(fù)雜單體系統(tǒng)切分為若干個(gè)微服務(wù)來分解和降低耦合性,而且每個(gè)微服務(wù)功能單一,實(shí)現(xiàn)快捷,使得這些微服務(wù)易于被小型的開發(fā)團(tuán)隊(duì)所理解和維護(hù),相對于單體系統(tǒng)降低了復(fù)雜度。然而微服務(wù)也帶來了很多挑戰(zhàn),微服務(wù)架構(gòu)是分布式架構(gòu),單個(gè)微服務(wù)簡單,眾多的微服務(wù)分布式應(yīng)用的復(fù)雜性難以回避,眾多微服務(wù)之間的通信、微服務(wù)事務(wù)處理、微服務(wù)的拆分、服務(wù)注冊、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、路由、監(jiān)控、AB測試、金絲雀發(fā)布、限流、訪問控制等等都帶來了挑戰(zhàn)。特別微服務(wù)部署于容器云平臺,基于當(dāng)前現(xiàn)狀如何治理好微服務(wù)是一個(gè)棘手的具有挑戰(zhàn)性的問題。

1. 常用方案的不足

服務(wù)治理的問題由來已久,服務(wù)治理也是一個(gè)很大的話題。在SOA ESB的時(shí)代就有很多探討,微服務(wù)化盛行之后顯得尤為重要。目前比較流行的微服務(wù)開發(fā)框架是SpringCloud,國內(nèi)也有用Dubbo的,但Dubbo遠(yuǎn)遠(yuǎn)達(dá)不到實(shí)際的要求。SpringCloud雖然提供了很多組件,但都是半成品,作為開發(fā)人員還有很多工作需要做,最終服務(wù)組件的質(zhì)量往往取決于開發(fā)人員的能力,不同開發(fā)人員所實(shí)現(xiàn)的微服務(wù)可能千差萬別;其次,SpringCloud對代碼有侵入性,如果以后要更換開發(fā)框架,需要重寫很多東西,甚至可能不得不推倒重來,代價(jià)高昂;再者,Java語言的特異性,如果要采用其他開發(fā)語言如Go/Python等開發(fā)的微服務(wù)或者不全是Java微服務(wù),SpringCloud可能就無能為力,無法統(tǒng)一管控。微服務(wù)治理更是難以實(shí)現(xiàn)。

2. 服務(wù)網(wǎng)格(Service Mesh)的不成熟

Service Mesh服務(wù)網(wǎng)格目前是很火熱的存在。很多人鼓吹其為第二代微服務(wù),不過在我們看來更多是概念炒作,Service Mesh服務(wù)網(wǎng)格描述的是微服務(wù)網(wǎng)絡(luò),所實(shí)現(xiàn)的是服務(wù)治理能力而不是微服務(wù)。其定義是一個(gè)用來連接、保護(hù)、控制和觀察微服務(wù)的工具。Service Mesh 服務(wù)網(wǎng)格的核心思想就是“流量代理”,通過一個(gè)個(gè)SideCar“代理(Envoy)” 來為微服務(wù)轉(zhuǎn)發(fā)和接收所有流量,而不用去修改微服務(wù)代碼,通過控制這些SideCar代理,就可以實(shí)現(xiàn)微服務(wù)連接、訪問控制、注冊發(fā)現(xiàn)、安全認(rèn)證、負(fù)載均衡、限流熔斷、監(jiān)控等等一系列服務(wù)治理相關(guān)功能,使微服務(wù)的代碼不再需要去實(shí)現(xiàn)服務(wù)治理邏輯,簡化了開發(fā)并提高了敏捷效率。說到底其是服務(wù)治理工具,談不上第二代微服務(wù)。
作為Service Mesh的一種實(shí)現(xiàn),Istio 1.0剛剛GA(General Availability),雖然鼓吹說可以上生產(chǎn),但依然需要時(shí)間和實(shí)踐的檢驗(yàn)。服務(wù)網(wǎng)格會隨著微服務(wù)數(shù)量的增加而成倍的增加復(fù)雜度,這也是需要進(jìn)一步檢驗(yàn)的方面。

3. 微服務(wù)治理的復(fù)雜性

微服務(wù)架構(gòu)一定程度上是為了解決伸縮性問題、運(yùn)行效率問題和開發(fā)效率問題。

單體應(yīng)用功能是集中式的,難以滿足伸縮性、也就是擴(kuò)展要求。微服務(wù)是分布式的,伸縮性是其最重要價(jià)值所在;

單體應(yīng)用隨著功能的累積,越來越難以更新和維護(hù),而微服務(wù)專注于只提供一種功能,可以橫向和縱向兩個(gè)維度伸縮,開發(fā)簡單,開發(fā)速度也會大幅提升,與其他微服務(wù)共同編排組成一個(gè)或多各業(yè)務(wù)應(yīng)用系統(tǒng),形成微服務(wù)生態(tài)系統(tǒng);

單體應(yīng)用包含了所有的功能,這些功能往往是緊耦合的,缺乏彈性,運(yùn)行效率往往也不高,微服務(wù)則獨(dú)立自治而輕量,運(yùn)行簡單而快捷。把一個(gè)單體應(yīng)用拆分為微服務(wù)往往是處于伸縮性和效率方面的考慮。每個(gè)微服務(wù)的效率提升帶來整個(gè)業(yè)務(wù)應(yīng)用的效率提升。但隨著微服務(wù)量的增加,比如何管理好這些微服務(wù)并使其高效則并不容易。

另外其彈性伸縮要求非常適合容器云平臺的彈性伸縮特性,因此往往和容器平臺結(jié)合,部署于容器云平臺,這也更增加了微服務(wù)治理的難度,涉及的東西越多,復(fù)雜性越大,需要考慮如何更好的利用容器平臺的優(yōu)點(diǎn)來簡化復(fù)雜性。

以微服務(wù)架構(gòu)實(shí)現(xiàn)的業(yè)務(wù)應(yīng)用,通常是分布式的,有眾多的微服務(wù)組件,彼此有依賴性。一個(gè)微服務(wù)簡單,但有眾多的微服務(wù)相互關(guān)聯(lián)就復(fù)雜化了,每個(gè)業(yè)務(wù)應(yīng)用可能有多個(gè)服務(wù)編排而成,每個(gè)服務(wù)又可能部署不同數(shù)量的服務(wù)實(shí)例。單體應(yīng)用不存在的微服務(wù)治理問題也由于微服務(wù)生態(tài)系統(tǒng)中眾多的微服務(wù)和微服務(wù)實(shí)例,以及承載微服務(wù)的基礎(chǔ)設(shè)施容器云平臺,隨著微服務(wù)量的增加而使其運(yùn)營和運(yùn)維復(fù)雜化,使微服務(wù)治理復(fù)雜化。

4. 敏捷性需求

引入任何一個(gè)產(chǎn)品或者一種技術(shù)或者一種方法,目的都是為了快速的解決面臨的問題,也就是要求敏捷性。新產(chǎn)品新技術(shù)新方法如果無法作到敏捷,也就失去了采用其的重要價(jià)值。采用微服務(wù)一個(gè)重要的原因也效率問題。在應(yīng)用微服務(wù)提高開發(fā)效率和運(yùn)行效率的同時(shí),不能帶來服務(wù)治理等的復(fù)雜化。雖然微服務(wù)分布式架構(gòu)和部署于容器云平臺增加了運(yùn)維的復(fù)雜性,復(fù)雜性同時(shí)帶來了風(fēng)險(xiǎn),但復(fù)雜性并非我們設(shè)計(jì)的初衷,風(fēng)險(xiǎn)更不是我們想要的。化繁為簡、簡化運(yùn)維、控制風(fēng)險(xiǎn)、提高效率、實(shí)現(xiàn)敏捷是基礎(chǔ)的要求。
常用的開發(fā)框架都是半成品,需要很多的工作量,如果能實(shí)現(xiàn)通過規(guī)則或策略配置就可以實(shí)現(xiàn)微服務(wù)的大部分治理能力,比用SpringCloud等去實(shí)現(xiàn)要敏捷的多。微服務(wù)實(shí)現(xiàn)關(guān)注的應(yīng)是業(yè)務(wù)邏輯,不應(yīng)該去關(guān)注服務(wù)治理的問題。所有非業(yè)務(wù)邏輯的功能盡可能的交給服務(wù)治理層來實(shí)現(xiàn),這樣才能具有敏捷性。所謂術(shù)業(yè)有專攻,做到因?yàn)閷I(yè),所以敏捷!

5. 安全挑戰(zhàn)

速度和敏捷不應(yīng)該損害安全性,任何時(shí)候安全都是第一位的。安全也是微服務(wù)可用性的一個(gè)重要指標(biāo)。如果客戶端直接以非安全和非管理的方式連接和調(diào)用實(shí)現(xiàn)的后端微服務(wù),那是存在嚴(yán)重的安全隱患的。要訪問這些后端的微服務(wù)需要以受管理的方式訪問,不能無序,需要保證安全。
微服務(wù)生態(tài)系統(tǒng)擁有眾多的組件微服務(wù),這些組件服務(wù)相互依存,微服務(wù)與微服務(wù)生態(tài)就像一個(gè)人之于人類社會,接觸面越大、關(guān)系網(wǎng)越復(fù)雜、接觸量越多,安全挑戰(zhàn)就越大。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案


要保證安全,就像人類一樣筑座城池,把自己保護(hù)起來。但完全保護(hù)起來不跟外面接觸也不行,需要開個(gè)城門,建個(gè)關(guān)口,實(shí)現(xiàn)對外交流。每個(gè)城池就是一個(gè)微服務(wù),城門就是API,在城門口實(shí)現(xiàn)進(jìn)出安全檢查、管控,就類似于我們說的微服務(wù)API網(wǎng)關(guān)。一個(gè)國家可能有很多座城池,是一個(gè)小生態(tài),要保護(hù)整個(gè)國家可能需要建立起一條長城,對外交流也是開個(gè)關(guān)口,這就實(shí)現(xiàn)了統(tǒng)一的微服務(wù)安全管控。多個(gè)國家形成一個(gè)大生態(tài),就是整個(gè)微服務(wù)生態(tài)系統(tǒng),通過API網(wǎng)關(guān)來實(shí)現(xiàn)安全管控。

6. 服務(wù)接口標(biāo)準(zhǔn)化要求

微服務(wù)架構(gòu)的挑戰(zhàn)是實(shí)現(xiàn)服務(wù)的標(biāo)準(zhǔn)化,以及保證服務(wù)的可靠性和可用性。車同轍、書同文、量同器、貨同幣。微服務(wù)實(shí)現(xiàn)可以是不同的語言、不同的協(xié)議、不同的名稱、不同的字段類型等,這些微服務(wù)之間如果要交互,就面臨著眾多的轉(zhuǎn)換問題,類似于曾經(jīng)的系統(tǒng)集成問題,所以后來出現(xiàn)了ESB,但ESB并沒有從根本上解決問題。所以不管微服務(wù)是怎么實(shí)現(xiàn)的,微服務(wù)接口API需要標(biāo)準(zhǔn)化。
一種實(shí)現(xiàn)方式是在微服務(wù)前面加個(gè)Adapter適配器,由Adapter來實(shí)現(xiàn)轉(zhuǎn)換。對微服務(wù)來說它有了API網(wǎng)關(guān),其可以承擔(dān)其Adapter的職責(zé),因此API網(wǎng)關(guān)層是可以提供標(biāo)準(zhǔn)化的接口的。

7. 擴(kuò)展性、負(fù)載均衡、路由、限流等需求

成功的可伸縮微服務(wù)生態(tài)系統(tǒng)需要完善且穩(wěn)定的基礎(chǔ)設(shè)施的支撐。微服務(wù)的彈性擴(kuò)展性通常是基于完善的容器云平臺基礎(chǔ)設(shè)施服務(wù)。彈性并不是我們說起來這么簡單。微服務(wù)的彈性依賴于基礎(chǔ)資源的彈性,依賴于資源調(diào)度的能力,依賴于服務(wù)伸縮的策略等。微服務(wù)的彈性伸縮可以基于容器平臺的彈性伸縮能力,但伸縮策略并不是固定的,不同場景需要配置不同的伸縮策略,特別是在收縮時(shí),需要保證業(yè)務(wù)請求已經(jīng)被處理完成且不會有新的業(yè)務(wù)請求到來。這就需要靠負(fù)載均衡路由策略等實(shí)現(xiàn)。每個(gè)微服務(wù)對于不同的用戶可能會采用不同的服務(wù)策略,提供不同的業(yè)務(wù)流量,這面臨這限流限額等需求。另外在微服務(wù)出現(xiàn)異常情況下,能實(shí)現(xiàn)異常遷移、錯(cuò)誤修復(fù)、容錯(cuò)等,或者達(dá)到某種熔斷閥值暫停服務(wù)。
這些能力固然可以在容器云平臺上和其他工具集成來實(shí)現(xiàn),但會使整個(gè)平臺運(yùn)維復(fù)雜化。復(fù)雜化不是我們設(shè)計(jì)的初衷,所以需要換個(gè)思路。

微服務(wù)治理思路

SpringCloud等微服務(wù)治理涉及眾多的組件需要自己開發(fā)搭建,這是一個(gè)挺大的工作量。為每個(gè)微服務(wù)都實(shí)現(xiàn)一個(gè)API網(wǎng)關(guān),來對外提供統(tǒng)一的接口,實(shí)現(xiàn)注冊、轉(zhuǎn)換、路由、限流、負(fù)載均衡等能力又使API網(wǎng)關(guān)職責(zé)過重,使微服務(wù)生態(tài)復(fù)雜化。如果把每個(gè)微服務(wù)的這些非業(yè)務(wù)邏輯能力要求都提取出來,放在一個(gè)公用的API網(wǎng)關(guān)上去實(shí)現(xiàn),使每個(gè)微服務(wù)專注于其業(yè)務(wù)邏輯的開發(fā),就會簡化開發(fā),提升敏捷性。公用的統(tǒng)一的API網(wǎng)關(guān)上實(shí)現(xiàn)微服務(wù)的注冊、轉(zhuǎn)換、路由、流控等,映射為一個(gè)標(biāo)準(zhǔn)的API對外提供服務(wù)。這樣既滿足了微服務(wù)開發(fā)敏捷性的要求,也是簡化微服務(wù)治理的需求。微服務(wù)所有的安全認(rèn)證、訪問控制等從微服務(wù)本身剝離出來,通過統(tǒng)一的API網(wǎng)關(guān)組件定義策略配置來實(shí)現(xiàn)微服務(wù)的安全管控和服務(wù)治理能力。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案

我們希望微服務(wù)不會隨著量的增加而帶來運(yùn)維和治理的復(fù)雜性,也希望能快捷的接入不同協(xié)議不同格式不同類型的微服務(wù)業(yè)務(wù)應(yīng)用和業(yè)務(wù)服務(wù),這就可能需要一個(gè)統(tǒng)一的層次來完成這些能力,而不用每個(gè)微服務(wù)都實(shí)現(xiàn)一個(gè)sidecar Gateway;也可以容易的使用新技術(shù)替代舊技術(shù)。這就是統(tǒng)一的API網(wǎng)關(guān)服務(wù)。如果我們滿足了這些要求,微服務(wù)架構(gòu)將會帶來敏捷、可靠和高可用,提升效率,并減少風(fēng)險(xiǎn)。

API網(wǎng)關(guān)

實(shí)施微服務(wù)可能不可或缺的一個(gè)很重要的組件就是服務(wù)網(wǎng)關(guān)。網(wǎng)關(guān),顧名思義,網(wǎng)絡(luò)關(guān)口,擔(dān)負(fù)著安全檢查、認(rèn)證授權(quán)、路由分發(fā)、流量控制、熔斷保護(hù)等重要的職責(zé)。API網(wǎng)關(guān),那就是API的網(wǎng)絡(luò)關(guān)口、通道,是整個(gè)微服務(wù)平臺的咽喉,API請求應(yīng)答必經(jīng)之路。為了利用容器云彈性伸縮等特性,結(jié)合微服務(wù)的優(yōu)點(diǎn),部署微服務(wù)于容器云平臺,則API網(wǎng)關(guān)的實(shí)施部署則會顯得更復(fù)雜些。
API網(wǎng)關(guān)(API Gateway)是一個(gè)服務(wù)器,是調(diào)用服務(wù)的唯一節(jié)點(diǎn)和請求應(yīng)答出入口。API Gateway封裝內(nèi)部系統(tǒng)的架構(gòu),并且提供API給各個(gè)客戶端。通常情況下它還需要實(shí)現(xiàn)其他功能,如認(rèn)證授權(quán)、訪問控制、路由、負(fù)載均衡、緩存、日志、限流限額、轉(zhuǎn)換、映射、過濾、熔斷、注冊、服務(wù)編排、API管理、監(jiān)控、統(tǒng)計(jì)分析等等。
從API網(wǎng)關(guān)的能力來看,我們可以理解其重要性。一夫當(dāng)關(guān),萬夫莫開。其不但是整個(gè)服務(wù)系統(tǒng)的安全屏障,也承擔(dān)著很多服務(wù)治理的能力。所以實(shí)現(xiàn)或者選擇一個(gè)好的API網(wǎng)關(guān),是建設(shè)容器云和微服務(wù)體系中一個(gè)至關(guān)重要的事項(xiàng)。這也決定了API網(wǎng)關(guān)的部署,要盡可能的減少接觸面。
微服務(wù)對外可以提供統(tǒng)一的接口API,可以在API網(wǎng)關(guān)層通過對API的治理實(shí)現(xiàn)對微服務(wù)的治理。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案

API網(wǎng)關(guān)在微服務(wù)治理中的價(jià)值

很多人對于微服務(wù)API網(wǎng)關(guān)也都有比較深入的介紹。一個(gè)重要的原因是微服務(wù)通信、微服務(wù)重構(gòu)、協(xié)議轉(zhuǎn)換等的需要,API網(wǎng)關(guān)還可以提供更多能力實(shí)現(xiàn)微服務(wù)治理。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案

1. API網(wǎng)關(guān)提供了一個(gè)穩(wěn)定可重用接口層

API網(wǎng)關(guān)首先隔離了內(nèi)部和外部服務(wù),所有外部服務(wù)通過API網(wǎng)關(guān)所暴露的標(biāo)準(zhǔn)API訪問內(nèi)部服務(wù),提供了相對穩(wěn)定的API接口,隱藏了服務(wù)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),保障后臺服務(wù)的安全性。
這方面有眾多的應(yīng)用場景:
(1). 一個(gè)服務(wù)可以在API網(wǎng)關(guān)映射為不同的API接口,相當(dāng)于提供了多種的服務(wù)能力。也就是提供了接口便利的重用能力。
一個(gè)后臺服務(wù)通過API網(wǎng)關(guān)可以映射為多個(gè)不同的API接口,以滿足不同的客戶端調(diào)用需求,比如有個(gè)服務(wù)實(shí)現(xiàn)了按照業(yè)務(wù)類型查詢業(yè)務(wù)數(shù)據(jù),可能某個(gè)客戶就是特定的業(yè)務(wù)類型,在API網(wǎng)關(guān)就可以映射一個(gè)API,使用固定的業(yè)務(wù)類型值,服務(wù)于特定用戶。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案


不同API可以滿足不同SLA需求,節(jié)約后端開發(fā)成本。
(2).只要API不變,對應(yīng)的服務(wù)只要是兼容性的更新,都不影響客戶端對該API的調(diào)用,提供了接口的穩(wěn)定性。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案


API相對穩(wěn)定,API實(shí)現(xiàn)是不固定的,Client /Server都可能是不固定的,但API層是穩(wěn)定的。API(Application Programming Interface,應(yīng)用編程接口)則提供了一個(gè)穩(wěn)定的接口層。接口的實(shí)現(xiàn)可以變,只要接口不變,調(diào)用接口的應(yīng)用就不需要改變。
同時(shí)對外訪問控制由網(wǎng)絡(luò)層面轉(zhuǎn)換成網(wǎng)關(guān)應(yīng)用層面,減少變更流程和錯(cuò)誤成本
(3).不同服務(wù)定義為不同的API,非兼容更新的服務(wù)定義不同的API。不影響原來的接口版本。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案


(4).隔離內(nèi)部和外部服務(wù),隱藏了服務(wù)實(shí)現(xiàn)細(xì)節(jié)。業(yè)務(wù)應(yīng)用只需要關(guān)注API,不管API對應(yīng)的服務(wù)是什么,由誰提供。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案


實(shí)現(xiàn)內(nèi)外隔離,隱藏了服務(wù)的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),保障后臺服務(wù)的安全性。也降低客戶端和服務(wù)的耦合度,阻斷服務(wù)依賴,服務(wù)獨(dú)立運(yùn)行,通過網(wǎng)關(guān)層實(shí)現(xiàn)按服務(wù)映射,服務(wù)編排,縮減外部調(diào)用頻次,提升訪問效率。
隔離內(nèi)外部服務(wù),也為微服務(wù)的擴(kuò)展提供了便利,在應(yīng)用層面可以利用容器的伸縮特性實(shí)現(xiàn)應(yīng)用服務(wù)實(shí)例的自動(dòng)彈性伸縮,實(shí)現(xiàn)應(yīng)用服務(wù)的高可用。

2. API網(wǎng)關(guān)是平臺的安全屏障

API網(wǎng)關(guān)提供安全和保護(hù)能力,阻止客戶端應(yīng)用以非安全和非管理的方式直接訪問API,保護(hù)開放的應(yīng)用。這是API網(wǎng)關(guān)最重要的能力之一。隔離內(nèi)外服務(wù)也就減少對外暴露的服務(wù)可能,以增加系統(tǒng)安全性。在API接口層實(shí)現(xiàn)授權(quán)認(rèn)證、訪問控制、防范威脅和OWASP漏洞、防御性緩存、通過SSO和統(tǒng)一身份管理來等來提高安全性,為應(yīng)用程序、移動(dòng)和IoT提供端到端的安全機(jī)制。也可能需要在API網(wǎng)關(guān)實(shí)現(xiàn)流量控制、限額、過濾、熔斷、服務(wù)優(yōu)先級控制、超時(shí)處理、負(fù)載均衡等機(jī)制來保護(hù)應(yīng)用服務(wù)的安全。
安全第一,就像我們的社會交通一樣,第一要保證安全的條件下快速通過。這也是在實(shí)現(xiàn)或選擇API網(wǎng)關(guān)時(shí)首先要考慮的問題。
安全涉及的問題也比較多,API網(wǎng)關(guān)層通常要實(shí)現(xiàn)身份統(tǒng)一認(rèn)證,可對接統(tǒng)一認(rèn)證中心、權(quán)限中心,實(shí)現(xiàn)授權(quán)認(rèn)證、訪問控制等功能。為了最小化延遲,API網(wǎng)關(guān)層邏輯要盡可能的薄。安全的前提下實(shí)現(xiàn)快速通過。不能堵塞,所以需要盡可能的減少延遲。另外考慮采用安全傳輸,防止數(shù)據(jù)包被其他人篡改、偽造,防止非公共數(shù)據(jù)被其他人竊聽。可能還需要考慮服務(wù)基礎(chǔ)設(shè)施安全以及第三方應(yīng)用/內(nèi)容安全。

基于API 網(wǎng)關(guān)的微服務(wù)治理方案


API網(wǎng)關(guān)是微服務(wù)平臺的安全屏障。不管私有服務(wù)或者開放服務(wù),其安全性都是一個(gè)時(shí)刻都需要認(rèn)真面對的課題。

3. 敏捷-簡化開發(fā)

在API網(wǎng)關(guān)層實(shí)現(xiàn)這些安全機(jī)制,不但提高安全性,也簡化了應(yīng)用服務(wù)的開發(fā)。使開發(fā)人員專注于業(yè)務(wù)應(yīng)用、業(yè)務(wù)服務(wù)的研發(fā),不再考慮基礎(chǔ)能力基礎(chǔ)組件,提升開發(fā)部署的效率,從而提升收益率。
將安全、訪問控制等非業(yè)務(wù)邏輯功能從微服務(wù)中分離出來,也使微服務(wù)的設(shè)計(jì)和實(shí)現(xiàn)簡化。使微服務(wù)更輕盈,更敏捷。
通過對 API服務(wù)的分類分級,簡化和控制開發(fā)人員對數(shù)據(jù)和服務(wù)的訪問;服務(wù)的開放和共享,可以構(gòu)建更大范圍內(nèi)的協(xié)作和開發(fā)人員生態(tài)體系。加快業(yè)務(wù)服務(wù)業(yè)務(wù)應(yīng)用的交付。

4. 標(biāo)準(zhǔn)化接口,統(tǒng)一入口

API網(wǎng)關(guān)提供統(tǒng)一對外接口以實(shí)現(xiàn)開放性、標(biāo)準(zhǔn)化和規(guī)范化。當(dāng)實(shí)現(xiàn)新的業(yè)務(wù)應(yīng)用時(shí)或者需要集成不同系統(tǒng)或者服務(wù)之間的功能,調(diào)用不同服務(wù)提供的能力時(shí),利用API網(wǎng)關(guān)可以讓用戶在不感知服務(wù)邊緣的情況下,利用統(tǒng)一的接口編排組裝服務(wù)。對于一個(gè)公司內(nèi)部不同的服務(wù),由于歷史原因提供的接口可能有不小的差異,通過API網(wǎng)關(guān)可以消除這種差異,統(tǒng)一對外提供標(biāo)準(zhǔn)化的接口,比如Restful接口。 當(dāng)內(nèi)部服務(wù)更新時(shí),也可以通過API網(wǎng)關(guān)進(jìn)行適配轉(zhuǎn)換,對客戶端透明,不需要調(diào)用方進(jìn)行調(diào)整。
標(biāo)準(zhǔn)化是微服務(wù)化面對的一個(gè)很大挑戰(zhàn)。雖然我們也強(qiáng)調(diào)微服務(wù)的價(jià)值在于重構(gòu),但重構(gòu)需要很長的路要走,剛開始可能需要類似于ESB的集成,首先實(shí)現(xiàn)互連互通,資源共享。但ESB服務(wù)往往比較重,無法滿足低延遲的要求,所以還需要逐步的重構(gòu)業(yè)務(wù)應(yīng)用。不同微服務(wù)的開發(fā)語言、協(xié)議、接口類型等可能不一樣,所以需要API網(wǎng)關(guān)來實(shí)現(xiàn)轉(zhuǎn)換,提供統(tǒng)一的標(biāo)準(zhǔn)化API對外開放,最為統(tǒng)一的入口。

5. 監(jiān)控分析,明確各部分工作業(yè)績

日志監(jiān)控等能力也是API網(wǎng)關(guān)的重要能力之一。通過對API訪問日志和運(yùn)行監(jiān)控?cái)?shù)據(jù)的統(tǒng)計(jì)分析,可以了解業(yè)務(wù)服務(wù)的調(diào)用情況、調(diào)用趨勢、運(yùn)行情況等等。一方面是業(yè)務(wù)服務(wù)評價(jià)的指標(biāo),另一方面也是助力智能決策的數(shù)據(jù)來源。哪些API服務(wù)調(diào)用的多,哪些API服務(wù)調(diào)用的少,哪個(gè)客戶調(diào)用的多,以及高峰流量時(shí)刻、平均流量、響應(yīng)時(shí)間等等都是需要監(jiān)控和統(tǒng)計(jì)分析的。這些數(shù)據(jù)將有助于我們對提供API的服務(wù)進(jìn)行運(yùn)維運(yùn)營或重構(gòu),有助于我們做出合理決策。更為智能決策提供必須的數(shù)據(jù)支持。也是服務(wù)開發(fā)和擁有者的業(yè)績參考。

使用API網(wǎng)關(guān)實(shí)現(xiàn)微服務(wù)治理

微服務(wù)治理涉及的方面很多,但大體上包含微服務(wù)生命周期管理、微服務(wù)注冊發(fā)現(xiàn)、微服務(wù)日志監(jiān)控、微服務(wù)安全、微服務(wù)訪問控制、微服務(wù)編排、微服務(wù)負(fù)載擴(kuò)展、微服務(wù)流量控制、容錯(cuò)熔斷等。這其中的大部分能力都可以在API網(wǎng)關(guān)層來實(shí)現(xiàn),同時(shí)可以結(jié)合容器云平臺來實(shí)現(xiàn)完善的微服務(wù)治理能力。
從API網(wǎng)關(guān)的定位和能力來看,我們主要可以在網(wǎng)關(guān)層實(shí)現(xiàn)微服務(wù)的安全認(rèn)證及訪問控制(包括路由、轉(zhuǎn)換、流量控制等),同時(shí)API網(wǎng)關(guān)也提供注冊發(fā)現(xiàn)、日志監(jiān)控、服務(wù)編排、負(fù)載均衡等能力。利用這些能力,可以便利的實(shí)現(xiàn)微服務(wù)的治理,天然融合,無需再開發(fā)或部署一套微服務(wù)治理平臺,也不用為不同平臺之間的集成花費(fèi)人力財(cái)力和珍貴的時(shí)間。
目前API網(wǎng)關(guān)產(chǎn)品眾多,商用的產(chǎn)品功能相對完善,可以很好的滿足微服務(wù)治理的需求。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1510

    瀏覽量

    62393
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    142

    瀏覽量

    7428
收藏 人收藏

    評論

    相關(guān)推薦

    API信息全掌控,方便你的日志管理——阿里云推出API網(wǎng)關(guān)打通日志服務(wù)

    摘要: 近日,阿里云API網(wǎng)關(guān)對接了日志服務(wù),可以輸出用戶在API網(wǎng)關(guān)產(chǎn)生的API調(diào)用日志,目前
    發(fā)表于 02-06 15:24

    微服務(wù)網(wǎng)關(guān)gateway的相關(guān)資料推薦

    目錄微服務(wù)網(wǎng)關(guān) gateway 概述[路由器網(wǎng)關(guān) Zuul 概述]嵌入式 Zuul 反向代理微服務(wù)網(wǎng)關(guān) gateway 概述1、想象一下一個(gè)購物應(yīng)用程序的產(chǎn)品詳情頁面展示了指定商品的信息:2、若是
    發(fā)表于 12-23 08:19

    微服務(wù)、SOA 和 API是敵是友?

    在對比微服務(wù)架構(gòu)和面向服務(wù)的架構(gòu)(SOA)時(shí),幾乎不可能在它們彼此的關(guān)系上達(dá)成一致意見。如果應(yīng)用程序編程接口(API) 再加入混戰(zhàn),就會讓理解它們的差異變得更加困難。一些人可能會說這些概念
    的頭像 發(fā)表于 05-06 11:01 ?4765次閱讀
    <b class='flag-5'>微服務(wù)</b>、SOA 和 <b class='flag-5'>API</b>是敵是友?

    什么是微服務(wù)架構(gòu)_微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)及應(yīng)用

    什么是微服務(wù)架構(gòu) 簡單地說,微服務(wù)是系統(tǒng)架構(gòu)上的一種設(shè)計(jì)風(fēng)格, 它的主旨是將一個(gè)原本獨(dú)立的系統(tǒng)拆分成多個(gè)小型服務(wù),這些小型服務(wù)都在各自獨(dú)立的進(jìn)程中運(yùn)行,
    的頭像 發(fā)表于 06-02 10:03 ?1.7w次閱讀
    什么是<b class='flag-5'>微服務(wù)</b>架構(gòu)_<b class='flag-5'>微服務(wù)</b>架構(gòu)的優(yōu)缺點(diǎn)及應(yīng)用

    微服務(wù)架構(gòu)技術(shù)棧選型解讀

    一、微服務(wù)治理中心框架 Apache Dubbo分布式RPC框架 Spring Cloud Alibaba分布式應(yīng)用服務(wù)開發(fā)一站式解決方案 Spring Cloud
    的頭像 發(fā)表于 12-29 14:35 ?1678次閱讀

    華為云服務(wù)治理?| 微服務(wù)常見故障模式

    服務(wù)治理定義 服務(wù)治理通常是指通過限流、熔斷等手段,保障微服務(wù)的可靠運(yùn)行,即運(yùn)行時(shí)治理。更加寬泛
    的頭像 發(fā)表于 01-18 17:44 ?813次閱讀

    華為云服務(wù)治理 | 服務(wù)治理的一般性原則

    華為云 服務(wù)治理 | ** 服務(wù)治理的一般性原則** 服務(wù)治理通常是指通過限流、熔斷等手段,保障
    的頭像 發(fā)表于 01-18 18:19 ?565次閱讀

    華為云服務(wù)治理—隔離倉的作用

    服務(wù)治理通常是指通過限流、熔斷等手段,保障微服務(wù)的可靠運(yùn)行,即運(yùn)行時(shí)治理。更加寬泛的服務(wù)治理還包
    的頭像 發(fā)表于 01-18 19:41 ?691次閱讀

    關(guān)于API網(wǎng)關(guān)策略的知識分享

    近些年隨著云原生和微服務(wù)架構(gòu)的日趨發(fā)展,API 網(wǎng)關(guān)以流量入口的角色在技術(shù)架構(gòu)中扮演著越來越重要的作用。API 網(wǎng)關(guān)主要負(fù)責(zé)接收所有請求的流
    的頭像 發(fā)表于 02-11 10:45 ?1236次閱讀

    微服務(wù)為什么要用到API網(wǎng)關(guān)

    微服務(wù)架構(gòu)(通常簡稱為微服務(wù))是指開發(fā)應(yīng)用所用的一種架構(gòu)形式。通過微服務(wù),可將大型應(yīng)用分解成多個(gè)獨(dú)立的組件,其中每個(gè)組件都有各自的責(zé)任領(lǐng)域。
    的頭像 發(fā)表于 04-14 09:17 ?796次閱讀

    基于Traefik自研的微服務(wù)網(wǎng)關(guān)

    數(shù)據(jù)平面主要功能是接入用戶的HTTP請求和微服務(wù)被拆分后的聚合。使用微服務(wù)網(wǎng)關(guān)統(tǒng)一對外暴露后端服務(wù)API和契約,路由和過濾功能正是網(wǎng)關(guān)的核
    的頭像 發(fā)表于 04-16 11:08 ?2728次閱讀

    5種主流API網(wǎng)關(guān)技術(shù)選型

    微服務(wù)近幾年非常火,圍繞微服務(wù)的技術(shù)生態(tài)也比較多,比如微服務(wù)網(wǎng)關(guān)、Docker、Kubernetes等。
    的頭像 發(fā)表于 04-17 10:45 ?1437次閱讀

    企業(yè)怎么選擇API網(wǎng)關(guān)

    、騰訊公司的QQ開發(fā)平臺、微信開放平臺。 Open API開放平臺必然涉及到客戶應(yīng)用的接入、API權(quán)限的管理、調(diào)用次數(shù)管理等,必然會有一個(gè)統(tǒng)一的入口進(jìn)行管理,這正是API網(wǎng)關(guān)可以發(fā)揮作
    的頭像 發(fā)表于 05-23 11:05 ?706次閱讀
    企業(yè)怎么選擇<b class='flag-5'>API</b><b class='flag-5'>網(wǎng)關(guān)</b>

    Spring Cloud :打造可擴(kuò)展的微服務(wù)網(wǎng)關(guān)

    Spring Cloud Gateway是一個(gè)基于Spring Framework 5和Project Reactor的反應(yīng)式編程模型的微服務(wù)網(wǎng)關(guān)。它提供了豐富的功能,包括動(dòng)態(tài)路由、請求限流、集成安全性等,使其成為構(gòu)建微服務(wù)架構(gòu)的理想選擇。
    的頭像 發(fā)表于 10-22 10:03 ?564次閱讀
    Spring Cloud :打造可擴(kuò)展的<b class='flag-5'>微服務(wù)網(wǎng)關(guān)</b>

    設(shè)計(jì)微服務(wù)架構(gòu)的原則

    微服務(wù)是一種軟件架構(gòu)策略,有利于改善整體性能和可擴(kuò)展性。你可能會想,我的團(tuán)隊(duì)需不需要采用微服務(wù),設(shè)計(jì)微服務(wù)架構(gòu)有哪些原則?本文會給你一些靈感。文章速覽:微服務(wù)設(shè)計(jì)的要素
    的頭像 發(fā)表于 11-26 08:05 ?635次閱讀
    設(shè)計(jì)<b class='flag-5'>微服務(wù)</b>架構(gòu)的原則
    台州星空棋牌下载| 利赢百家乐现金网| 广州百家乐官网桌子| 成都百家乐官网的玩法技巧和规则| 南宁百家乐官网赌| 曼哈顿百家乐官网的玩法技巧和规则| 重庆百家乐官网的玩法技巧和规则 | 大发888游戏平台 娱乐场下载| 做生意摆放风水| 百家乐庄家赢钱方法| 在线百家乐纸牌游戏| 网络百家乐电脑| 威尼斯人娱乐城极好| 大发888缺少casino| 大发888娱乐场下载 zhldu| 碧桂园太阳城户型图| 大发888真钱注册| 玉屏| bet365官方| 澳门百家乐看路博客| 百家乐游戏开户网址| 顶尖娱乐城开户| 玉田县| 最新百家乐官网游戏机| 百家乐官网玩法简介| 百家乐官网赌场破解方法| 百家乐买隔一数| 喜力百家乐的玩法技巧和规则 | 澳门百家乐官网网上娱乐场开户注册 | 真人百家乐官网玩法| 电玩百家乐官网游戏机路单| 百家乐四式正反路| 豪享博百家乐的玩法技巧和规则 | 百家乐官网庄闲机率分析| 红宝石百家乐官网娱乐城 | 网上百家乐官网做假| 做生意风水摆件| 女神百家乐娱乐城| 88娱乐城官网| 百家乐官网9点直赢| 玩百家乐官网请高手指点|