當前位置:首頁 >  IDC >  云計算 >  正文

華云數據:淺談微服務架構下的服務發(fā)現機制

 2018-10-15 16:08  來源: 互聯網   我來投稿 撤稿糾錯

  域名預訂/競價,好“米”不錯過

隨著云計算業(yè)務的快速發(fā)展,國內外云計算企業(yè)的專利之爭也愈發(fā)激烈。在云計算這樣的技術領域,專利儲備往往代表著企業(yè)最新的技術實力。華云數據本期“智匯華云”專欄將針對“淺談微服務架構之服務發(fā)現”技術,與大家共同分享云計算領域的最新技術。

由于業(yè)務量大幅增長,華云數據決定對業(yè)務增長導致不斷臃腫的單體應用進行重構,重構后的應用選擇微服務架構。微服務架構最大的優(yōu)勢是語言的開放性,可以根據業(yè)務場景選擇最合適的語言。另外對于不止一個技術棧的公司組織架構,也能帶來很好的融合協作機會。華云數據的主要技術棧是JAVA,PHP。JAVA自不必多說,其微服務框架spring cloud對微服務有非常全面且完善的一條龍支持,簡直是微服務架構開發(fā)的利器,而PHP則有所欠缺,特別是在服務治理部分。比如在做服務注冊、發(fā)現的時候比較痛苦。

我們的方案

1、為什么要使用服務發(fā)現

下圖1 ,是一個簡單的高可用架構圖,我們看到集群組部署有3個節(jié)點,每個節(jié)點分別部署有一個服務A。在它前面有負載均衡,以nginx做負載均衡為例,我們會在配置文件手動配置上這3個節(jié)點的服務A的地址,根據負載策略做轉發(fā)。

圖1

這是傳統上比較常用的方式。服務的地址是固定不變的。那么如果服務的地址彈性伸縮,是可變的又如何呢?如下圖2。

圖2

與傳統方式不同的是,服務的地址是彈性伸縮,是可變的。這種彈性帶來最大的好處是服務可以根據流量、根據CPU、內存等開銷,依據一定的策略,橫向擴展或減少服務實例。除了能支撐大量的峰值訪問,還能帶來非常大的成本節(jié)約。另外特別說下,docker及其衍生出來的Kubernates之類的軟件或解決方案,使得這種資源調度,彈性伸縮,架構監(jiān)控等有了很好的基礎層保證。回過頭來說,既然服務地址可變,那么人工配置的方式肯定不行,我們需要一種自動發(fā)現服務地址變更的機制。

2、服務發(fā)現的機制及發(fā)現方式

這種機制即服務發(fā)現,也是微服務架構最常使用的技術棧。如下圖 3,我們引入一個注冊中心。服務實例在啟動的時候自動把地址注冊到注冊中心,在訪問相應服務的時候,先通過注冊中心拿到待訪問服務實例的地址,然后依據一定的策略訪問即可。

圖3

好處主要有兩點:

1、解決上述說的服務地址變化的問題;

2、注冊中心能夠監(jiān)測相應服務的狀態(tài),有了它,我們就能知道微服務架構中有多少個服務,版本是什么,每個服務的實例數有多少,狀態(tài)如何。

服務發(fā)現有兩種方式:

2.1服務端發(fā)現

1)服務實例啟動時自動發(fā)布地址到注冊中心。

2)客戶端/服務端在調用某個服務時,帶著服務名調用負載均衡器,負載均衡器接收到請求,從注冊中心拿到服務地址(有多個),根據負載策略訪問某一個特定的服務。

這種方式最大的好處就是由服務端實現服務發(fā)現及負載,客戶端完全不用做額外的事情,非常推薦使用此方式。如下圖4。

圖4

2.2客戶端發(fā)現

從下圖5可以看到,跟服務端發(fā)現不同的地方是,待訪問服務的地址由客戶端從注冊中心獲取,并且客戶端需要實現負載(比如待訪問的服務地址有3個,那么客戶端需要依據一定的負載策略,找出其中一個地址進行訪問)。

圖5

這種方式最大的特點就是靈活,客戶端或者微服務可以根據自己的業(yè)務場景選擇最佳的負載策略,但是缺點也是顯而易見的,客戶端或微服務需要考慮負載。這在JAVA沒問題,它的spring cloud框架很強大,可以支持,不過PHP及其它語言就會很痛苦,所以個人推薦使用服務端發(fā)現的方式。

如下圖6方式,服務端發(fā)現可使用consul template+nginx

圖6

3、工具介紹及總結

Netflix OSS 是典型的客戶端發(fā)現范例;Netflix Eureka 是服務注冊表,Netflix Ribbon是IPC客戶端,與Eureka一起實現CLB。對docker無明確支持

Consul 是典型的服務端發(fā)現范例;通過consul template監(jiān)聽consul中服務地址的變動,自動生成或更新nginx.conf,并生效配置。對docker有很好的支持

微服務架構的性質決定了它的復雜性,存在成百上千個微服務,而每個微服務又可能分布在多個不同節(jié)點,所以全棧監(jiān)控很重要,而服務發(fā)現則是其中很重要的一環(huán)。通過它,我們就知道整個系統有多少個微服務,版本是什么,每個服務的實例數有多少,狀態(tài)如何。而這些又是一個完整自動化運維架構的基礎,發(fā)揮微服務架構最大的價值非常重要,大大減少運維人員在部署、問題排查上冗余工作,大幅提升工作效率。

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關標簽
華云數據
云計算

相關文章

  • 選擇云服務需要考慮哪些因素?

    作為云計算技術落地的重要基礎設施成果,云服務器近年來獲得的飛速發(fā)展有目共睹。云服務器需求量的激增引發(fā)行業(yè)競爭的加劇,甚至很多服務商將VPS更名為云服務器混淆視聽,濫竽充數。為保證我們互聯網服務的正常創(chuàng)建和運行,優(yōu)質的云服務器是基礎保障,那么選擇云服務器要考慮哪些因素呢?一、你的網站目標群體你的網站目

  • 2022年中國云市場份額:阿里云騰訊云下降

    4月23日,IDC發(fā)布《中國公有云服務市場(2022下半年)跟蹤》,占據前四的分別為阿里云(40.6%)、華為云(11.0%)、騰訊云(11.0%)、中國電信(8.7%)。

  • 什么是云計算

    云計算是一種基于互聯網的計算模式,它允許用戶通過互聯網訪問可擴展的計算資源,而無需直接控制這些資源。云計算的出現改變了傳統計算模式的局面,為用戶提供了更加靈活、高效和可靠的計算環(huán)境。云計算的基本原理是將計算資源集中在一個中央服務器上,并通過互聯網向用戶提供計算服務。這樣,用戶就可以通過互聯網訪問計算

  • 哪些行業(yè)適合選擇云服務器

    云服務器已經成為數據存儲和備份的一種主流方式,對于許多需要存儲、保護和管理數據的企業(yè)和行業(yè)來說,它是個不錯的選擇。無論您是任何行業(yè)的企業(yè),都可以通過云服務器實現在數據存儲和災難恢復方面的優(yōu)化和成本的降低。

  • 租用云服務器的好處

    云服務器不僅可以提供可靠、高效和安全的解決方案,同時還可以節(jié)約成本、節(jié)省時間和精力,并且提供更好的靈活性來幫助用戶適應其業(yè)務需求的變化。

熱門排行

信息推薦