springcloud服务注册和发现
微服務架構中,服務發現組件是一個非常關鍵的組件,服務消費者、服務提供者、服務發現組件的關系大致如下:
- 各個微服務啟動時,將自己的網絡地址等信息注冊到服務發現組件中,服務發現組件會存儲這些信息
- 服務消費者可從服務發現組件查詢服務提供者的網絡地址,并使用改地址調用服務提供者的接口
- 各個微服務與服務發現組件使用一定機制(心跳等)通信,服務發現組件長時間無法與某微服務實例通,就會注銷該實例。
下面看看Eureka,它是Netflix(美國著名的在線影片租賃商)開源的服務發現組件,本身是一個基于REST的服務,它包含Server和Client兩部分,Spring Cloud將它集成在其子項目spring-cloud-netflix中,以實現Spring Cloud的服務發現功能。
Eureka的官方文檔對regin、zone幾乎沒有提及,由于概念抽象,新手很難理解。因此,在分析Eureka原理之前,我們先來了解一下region、zone、Eureka集群三者的關系,如圖:
region和zone(或者Availability Zone)均是AWS的概念。在非AWS環境下,我們可以簡單地將region理解為Eureka集群,zone理解成機房。這樣上圖就很好理解了——一個Eureka集群被部署在了zone1機房和zone2機房中。對region和zone感興趣的讀者可前往http://blog.csdn.net/awschina/article/details/17639191?擴展閱讀。Spring Cloud中默認的region是us-east-1?。Eureka的架構如下圖所示:
eureka架構圖
上圖是來自Eureka官方的架構圖,大致描述了Eureka集群的工作過程。圖中包含的組件非常多,可能比較難以理解,我們用通俗易懂的語言解釋一下:
- Application Service 相當于本書中的服務提供者,Application Client相當于本書中的服務消費者;
- Make Remote Call,可以簡單理解為調用RESTful API;
- us-east-1c、us-east-1d等都是zone,它們都屬于us-east-1這個region;
由圖可知,Eureka包含兩個組件:Eureka Server 和 Eureka Client,它們的作用如下:
- Eureka Client是一個Java客戶端,用于簡化與Eureka Server的交互;
- Eureka Server提供服務發現的能力,各個微服務啟動時,會通過Eureka Client向Eureka Server進行注冊自己的信息(例如網絡信息),Eureka Server會存儲該服務的信息;
- 微服務啟動后,會周期性地向Eureka Server發送心跳(默認周期為30秒)以續約自己的信息。如果Eureka Server在一定時間內沒有接收到某個微服務節點的心跳,Eureka Server將會注銷該微服務節點(默認90秒);
- 每個Eureka Server同時也是Eureka Client,多個Eureka Server之間通過復制的方式完成服務注冊表的同步;
- Eureka Client會緩存Eureka Server中的信息。即使所有的Eureka Server節點都宕掉,服務消費者依然可以使用緩存中的信息找到服務提供者。
綜上,Eureka通過心跳檢測、健康檢查和客戶端緩存等機制,提高了系統的靈活性、可伸縮性和可用性。
?
轉載于:https://www.cnblogs.com/loveBolin/p/9901788.html
總結
以上是生活随笔為你收集整理的springcloud服务注册和发现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么设置路由器才能连接到网络 如何配置路
- 下一篇: 猫狗大战