生活随笔
收集整理的這篇文章主要介紹了
Eureka 心跳机制
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
基本闡述
心跳機(jī)制是定時發(fā)送一個自定義的結(jié)構(gòu)體(心跳包),讓對方知道自己還活著,以確保連接的有效性的機(jī)制。心跳機(jī)制是每隔幾分鐘發(fā)送一個固定信息給服務(wù)端,服務(wù)端手收到后回復(fù)一個固定的信息。如果服務(wù)端幾分鐘內(nèi)沒有收到客戶端消息則視客戶端斷開。發(fā)送方可以是客戶端或服務(wù)端,根據(jù)實際情況,一般是客戶端;因為一個服務(wù)端可能有很多客戶端,服務(wù)端作為發(fā)送方的比較耗費性能。應(yīng)用場景:判斷長連接是否真正存活。當(dāng)長連接沒有流量時,無法判斷是通信異常引起還是通信正常但沒有業(yè)務(wù)流量引起時,通過心跳包進(jìn)行判斷。實現(xiàn)技術(shù)
- 方式一:應(yīng)用層實現(xiàn)心跳機(jī)制(推薦)
- 優(yōu)點:實現(xiàn)策略靈活,能及時檢測到連接狀態(tài);
- 缺點:每個應(yīng)用都需要有一套,無法底層共用;
- 方式二:利用TCP的KeepAlive機(jī)制
- TCP協(xié)議本身提供了心跳機(jī)制,需要通過SO_KEEPALIVE開啟。默認(rèn)情況下,當(dāng)連接空閑2小時后,每隔75s發(fā)送一次心跳包,如果連續(xù)9次沒有收到響應(yīng)則關(guān)閉連接。
- 優(yōu)點:不需要二次開發(fā),簡單配置參數(shù)即可;
- 缺點:網(wǎng)絡(luò)環(huán)境的復(fù)雜性使得KeepAlive機(jī)制容易失效;
?
在現(xiàn)實中應(yīng)用
Eureka + 心跳機(jī)制?代碼舉例 Eureka 配置Eureka 的 心跳機(jī)制 還有概念 叫續(xù)租。心跳續(xù)租。
什么是Eureka?
Eueka是Netflix(網(wǎng)飛公司)開發(fā)的服務(wù)發(fā)現(xiàn)組件,本身是一個基于REST的服務(wù)。Spring Cloud將他集成在其子項目spring-cloud-netflix中,以實現(xiàn)Spring Cloud的服務(wù)發(fā)現(xiàn)功能。這里有些概念來源于亞馬遜AWS(Amazon Web Service)云服務(wù)的。即區(qū)域region、可用區(qū)available zone = AZ。AWS的每個區(qū)域region一般由多個可用區(qū)(AZ)組成,而一個可用區(qū)一般是由多個數(shù)據(jù)中心組成。在非AWS環(huán)境下,可以簡單地將region理解為Eureka集群,zone理解成機(jī)房。一個Eureka集群被部署在了zone1機(jī)房和zone2機(jī)房中。每個可用區(qū):都是一個Eueka Server 和 多個 Eueka Client組成。其中 Eueka Client 相對于應(yīng)用程序角色又分:應(yīng)用程序Server Eueka Client;應(yīng)用程序Client EuekaClient然后 應(yīng)用程序Server 可能對應(yīng) 多個 應(yīng)用程序Client,這里解釋了zone可以理解成機(jī)房,因為應(yīng)用程序Server一般要部署在一個服務(wù)器上,不同應(yīng)用程序Client提供不同的微服務(wù),視情況,分布式部署到多臺機(jī)器上。這些機(jī)器放在一塊,由一個機(jī)房統(tǒng)一管理。最后發(fā)現(xiàn)這些應(yīng)用程序Client,并不是常理解的手機(jī)客戶端,電腦客戶端等終端。而是相對于這些終端的服務(wù)提供者。終端是服務(wù)消費者。Eureka就是一個服務(wù)中心,避免了服務(wù)之間的直接調(diào)用,方便后續(xù)的水平擴(kuò)展、故障轉(zhuǎn)移等。服務(wù)中心這么重要的組件一旦掛掉將會影響全部服務(wù),因此需要搭建Eureka集群來保持高可用性,生產(chǎn)中建議最少兩臺。Eueka Server是怎么在現(xiàn)實中集成的?實際上在應(yīng)用程序Server Eueka Client所在項目通過依賴集成的 如下EuekaClient 是怎么在現(xiàn)實中集成的?實際上在應(yīng)用程序Client Eueka Client所在項目通過依賴集成的 如下 spring-cloud-starter-parent 具備spring-boot-starter-parent同樣功能并附加Spring Cloud的依賴?spring-cloud-starter-config 默認(rèn)的配置服務(wù)依賴,快速自動引入服務(wù)的方式,端口8888?spring-cloud-config-server/client 用戶自定義配置服務(wù)的服務(wù)端/客戶端依賴?spring-cloud-starter-eureka-server 服務(wù)發(fā)現(xiàn)的Eureka Server依賴?spring-cloud-starter-eureka 服務(wù)發(fā)現(xiàn)的Eureka客戶端依賴?spring-cloud-starter-hystrix/zuul/feign/ribbon 斷路器(Hystrix),智能路有(Zuul),客戶端負(fù)載均衡(Ribbon)的依賴angular-ui-router 頁面分發(fā)路由依賴Eueka依賴包過期問題 使用最新的?spring-cloud-starter-netflix-eureka-server,而spring-cloud-starter-eureka-server已經(jīng)過期使用最新的 spring-cloud-starter-netflix-eureka-client ,而spring-cloud-starter-eureka 已經(jīng)過期
總結(jié)
以上是生活随笔為你收集整理的Eureka 心跳机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。