您好,登錄后才能下訂單哦!
SpringCloud組件中Eureka的原理是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1. 關于服務注冊:
(1)前面說過,服務注冊中心會維護一個服務清單表,該清單表中存儲了所有的服務名以及該服務名對應的所有服務實例信息(比如IP地址、端口號等),很快可以想到服務清單應該是一個Map結構。
(2)然后,服務提供者會通過Eureka客戶端與服務中心(即Eureka服務端)進行服務注冊,這個過程實際上就是將自己的服務名、IP地址、端口號等信息發送到服務注冊中心進行保存。
2. 關于服務發現(或者說服務同步):
(1)服務注冊中心與服務提供方:
服務提供方注冊到服務注冊中心后,會與服務中心始終保持一個服務清單同步,即通過Eureka客戶端,獲取到Eureka服務端中的所有服務清單數據,這個主要通過配置的注冊中心地址來實現
eureka.client.serviceUrl.defaultZone=http://localhost:8081/eureka/
所以在單機服務注冊中心的情況下,一旦服務注冊中心掛了,就無法保證服務發現的準確性,但依舊能做的服務發現的,因為服務清單數據會緩存一份到服務提供方本地,即使服務注冊中心掛了,依舊能通過這份緩存數據來進行服務發現以及調用,但是準確性就不能保證了,有可能某個服務已經下線或者上線了一個新的服務實例,都是無法感知到的。
或者說,是Eureka服務端將服務清單數據同步到各個Eureka客戶端中,這樣就會保證某個服務下線或上線能夠及時的被其他服務感知到,就能保證服務發現,但問題是Eureka的這種服務清單數據同步方式會導致數據一致性比較差。
(2)Eureka服務注冊中心集群:Eureka的集群模式說白了,就是將服務注冊中心本身也看做一個服務,集群中的服務注冊中心節點之間互相注冊,就能夠同步節點之間的服務清單,保證高可用性,即使某個服務注冊中心節點掛了,其余服務注冊中心節點也能進行服務治理。
3. 關于服務續約:
服務注冊后,服務提供方還必須要時時向服務注冊中心進行一次“心跳”請求,該請求用來告訴服務注冊中心自己還“活著”,防止Eureka對該服務執行服務剔除,將該服務從服務列表中排除。這就是服務續約操作。
服務續約有兩個重要配置屬性,可以依據項目需要進行調整
eureka.instance.lease-expiration-duration-in-seconds=90 eureka.instance.lease-renewal-interval-in-seconds=30
eureka.instance.lease-expiration-duration-in-seconds,該參數表示設置判斷服務失效的時間,單位為秒,默認90秒
eureka.instance.lease-renewal-interval-in-seconds參數表示設置服務續約任務的調用間隔時間,也就是多久進行一次服務續約請求,單位為秒,默認30秒
這兩個參數配置其實需要注意一下,因為假如注冊的服務非常多,達到數百個,而且每個服務都部署了上百個實例,那么可以算算每天僅僅是服務治理所進行的日請求次數就能達到上千萬次。以一個例子來進行簡單的計算,
以默認參數來說,100個服務部署在20個服務器上,那么就相當于一共有2000個服務實例。
每個服務實例每分鐘請求2次拉取注冊表,每分鐘請求2次發送心跳,也就是每分鐘4次請求服務注冊中心,2000個服務實例服務注冊中心每分鐘會有8000次請求。每秒大概估算為150次左右
那么一天就會對服務注冊中心進行8000*24*60=1152萬次請求,也就是每天千萬級請求量。
所以這兩個配置參數也是需要進行適當調整的。至于為什么服務注冊中心能夠承受千萬級日請求量,后面分析源碼在詳細介紹。
4. 服務下線:在整個系統運行過程中,某個服務可能會由于各種各樣的原因導致宕機下線,此時對于那些服務調用者來說,肯定是不能去調用這些服務的,所以服務中心就必須對這些下線的服務進行剔除。
5. 對于服務消費者:服務消費者實際上通常也是一個服務,服務消費者和服務提供者一樣,需要通過Eureka客戶端來獲取服務注冊中心的可用服務清單,然后才能依據清單進行服務調用,具體的調用以及配置在后面結合Ribbon和Feign進行講解。服務消費者主要需要配置兩個參數
eureka.client.registry-fetch-interval-seconds=30:該參數表示從服務注冊中心更新服務清單的時間間隔,單位是秒,默認為每30秒獲取一次。
eureka.client.fetch-registry=true:該參數表是否獲取服務清單,該參數必須為true,也默認為true
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。