當前位置:吉日网官网 - 傳統節日 - 微服務架構的服務註冊和發現(1)

微服務架構的服務註冊和發現(1)

壹、服務登記中心的由來

如果沒有服務註冊中心,我們將怎麽辦?

在傳統的行業項目架構中,以下方案是最常見的:

這種架構的開發部署是最簡單的,壹般適用於訪問次數不太多的中小型企業,每個系統可以服務壹臺機器。系統間的調用也是為了得到對方的IP+端口直連。

接下來,也許是因為應用B開始獲得更多的訪問,單機已經不能滿足我們的需求,於是出現了壹些反向代理工具,其中Apache和Nigix比較常見,架構演變成:

相比之前應用B的單機訪問,這種nginx代理的方式減輕了服務器的壓力,但是Nginx可能會掛掉,所以整個服務不可用,所以這套架構又來了:

這樣來看這個計劃,它是完美的。然後事情就沒有預想的那麽順利了。只是應用程序A調用應用程序B。如果應用程序A可能調用應用程序B、C、D、E...,這種架構看起來還行,但是肯定會把運維累趴下(nginx的配置會很亂,直接導致運維退出)。

服務註冊中心是做什麽的?

以上那些靠人力(主要是運維)的東西,比較繁瑣,很難維護。有幾個不方便:應用服務地址變了,增加了雙十壹活動服務器。然後我們可以有這樣壹個架構:

服務註冊中心主要維護各個應用服務的ip+端口列表,與各個應用服務保持通信,在壹定時間間隔內檢測心跳,如果心跳達不到則刪除服務IP列表,同時通知其他應用服務更新。同樣,如果有新的服務進來,應用服務會向註冊中心註冊,服務註冊中心會通知其他應用進行更新。每個應用都有壹個需要調用相應應用服務的地址列表,這樣在調用時只需要處理客戶負載均衡。

二、微服務註冊中心

1.動物園管理員

ZooKeeper是壹個分布式開源的分布式應用協調服務,是Google的Chubby的開源實現,也是Hadoop和Hbase的重要組成部分。它是為分布式應用提供壹致服務的軟件,功能包括配置維護、域名服務、分布式同步、群組服務等。

以上文字直接摘錄了百度百科的內容。國內很多公司最初選擇的分布式開發大多采用dubbo框架。Dubbo框架註冊中心主要使用zookeeper。zookeeper服務器和客戶端之間的底層通信是netty。Zookeeper采用CAP理論中的CP。通常,集群部署至少需要3臺機器。

2.歐拉卡

我們先來看看euraka的架構圖:

註冊:服務註冊

當Eureka客戶機向Eureka服務器註冊時,它提供自己的元數據,如IP地址、端口、健康指示器URL、主頁等。

續訂:服務續訂

尤裏卡的客戶將每30秒發送壹次心跳來更新他們的合同。告訴尤裏卡服務器尤裏卡客戶還存在,續約沒有問題。在正常情況下,如果Eureka Server在90秒內沒有收到Eureka客戶的續訂,它將從註冊表中刪除該實例。建議不要更改更新間隔。

獲取註冊表:獲取註冊列表信息。

Eureka客戶機從服務器獲取註冊信息,並將其緩存在本地。客戶端將使用這些信息來查找其他服務並進行遠程調用。註冊列表信息會定期更新(每30秒壹次)。每次返回的註冊列表信息可能與尤裏卡客戶端的緩存信息不同,尤裏卡客戶端會自動處理。如果由於某種原因無法及時匹配註冊列表信息,Eureka客戶端將檢索整個註冊信息。Eureka服務器緩存註冊列表信息,整個註冊表和每個應用程序的信息都被壓縮,壓縮後的內容和未壓縮的內容完全壹樣。Eureka客戶端和Eureka服務器可以以JSON/XML格式進行通信。默認情況下,Eureka客戶機使用壓縮的JSON格式來獲取註冊列表的信息。

取消:服務脫機

當程序關閉時,Eureka客戶端向Eureka服務器發送取消請求。發送請求後,客戶機實例信息將從服務器的實例註冊表中刪除。這個離線請求不會自動完成,它需要調用以下內容:

DiscoveryManager.getInstance()。shut down component();

驅逐服務消除

默認情況下,當Eureka客戶端在90秒(即心跳)內沒有向Eureka服務器發送服務更新時,Eureka服務器將從服務註冊列表中刪除該服務實例,即移除該服務。

自我保護機制:

由於Eureka Server會定期刪除超時後未續費的服務,可能會出現壹段時間網絡異常,所有服務都沒有續費的場景,所以Eureka Server會刪除所有服務,這顯然是不合理的。所以有自我保護機制。在短時間內統計更新失敗的比例時,如果達到壹定閾值,就會觸發自我保護機制。在這種機制下,尤裏卡服務器不會消除任何微服務,正常後再退出自我保護機制。自我保護開關(eureka . server . enable self-preservation:false)

3.領事

領事推薦的架構圖:

執政官不像歐拉卡的部署那麽簡單。用go語言開發,需要單獨部署運維。它有壹個提供java的客戶端連接,使用CAP的CP。

4.Nacos

歐拉卡在《春雲網飛》的早期版本中被推薦。後來不再維護euraka1.0的版本,並關閉了euraka2.0,導致很多基於春雲網飛開發的新項目選擇改為Consul。

Nacos是阿裏的開源服務註冊中心,可以和春雲aliaba集成。

Nacos官方介紹:

Nacos致力於幫助您發現、配置和管理微服務。Nacos提供了壹套易於使用的功能,幫助您實現動態服務發現、服務配置管理、服務和流量管理。

Nacos幫助您更快速、更輕松地構建、交付和管理微服務平臺。Nacos是構建以“服務”為中心的現代應用架構(如微服務範式、雲原生範式)的服務基礎設施。

Nacos地圖

Nacos生態地圖

如Nacos全景圖所示,Nacos無縫支持壹些主流開源生態系統,比如

春天的雲

Apache Dubbo和Dubbo Mesh TODO

庫伯內特和CNCF·托多

第三,服務註冊和發現技術選擇

以下是來自互聯網的分享:

除了以上,作者推薦使用Nacos作為服務註冊中心。

推薦理由:

Nacos服務註冊結構圖

  • 上一篇:延安市城市總體規劃(2011-2030)(2)
  • 下一篇:如何讓家庭充滿親情,鄰裏更加團結?
  • copyright 2024吉日网官网