首先需要明確,不管是什麼事物需要」治理「,那一定是該事物存在一定問題。比如環境治理。那麼服務,或者說微服務為什麼需要治理?對於服務來說,如果它承擔的業務職責簡單,那其實治理的必要性不大,因為服務執行過程是相對透明的,即使出現問題也能較快發現、定位、回滾。當服務承擔的業務職責變多變大,那隨著更多問題的到來,服務治理開始變得必要。服務治理也與技術架構本身息息相關。
微服務系統由很多個單一職責的服務單元組成,例如netflix公司的系統是由600多個微服務構成的,而每乙個微服務又有眾多例項。由於微服務系統的服務粒度較小,服務數量眾多,服務之間的相互依賴成網狀,所以微服務系統需要服務註冊中心來統一管理微服務例項,方便檢視每乙個微服務例項的健康狀態。
在服務治理下的微服務,只要有乙個節點服務正常,就要保證服務的可用性
服務註冊是指向服務註冊中心註冊乙個服務例項,服務提供者將自己的服務資訊(如服務名、ip位址等)告知服務註冊中心。
服務發現是指當服務消費者需要消費另外乙個服務時,服務註冊中心能夠告知服務消費者它所要消費服務的例項資訊(如服務名、ip位址等)。通常情況下,乙個服務既是服務提供者,也是服務消費者。服務消費者一般使用http協議或者訊息元件這種輕量級的通訊機制來進行服務消費。
服務註冊中心會提供服務的健康檢查方案,檢查被註冊的服務是否可用。通常乙個服務例項註冊後,會定時向服務註冊中心提供「心跳」,以表明自己還處於可用的狀態。當乙個服務例項停止向服務註冊中心提供心跳一段時間後,服務註冊中心會認為該服務例項不可用,會將該服務例項從服務註冊列表中剔除。如果這個被剔除掉的服務例項過一段時間後繼續向註冊中心提供心跳,那麼服務註冊中心會將該服務例項重新加入服務註冊中心的列表中eureka
consul
nacos
一致性ap
apap/cp效能快
慢快應用主流
非主流穩中有公升
注意: 我們現在公司用的nacos主要用的是nacos config
下面主要介紹下eureka。eureka server和client的搭建 這裡不做介紹。之前分享zuul閘道器的**中已經說過注意:eureka是基於cap定理的ap系統
eureka 管理介面介紹
紅字提醒
emergency! eureka may be incorrectly claiming instances are up when they're not. renewals are lesser than threshold and hence the instances are
not being expired just to be safe.
// 掛掉的服務有可能會被錯誤的當做up,(在一定時間內)續約成功的節點個數佔已註冊總服務的比值,已經低於限定值,因此所有節點都不會過期,服務自保開啟
the self preservation mode is turned off.this may not protect instance expiry in case of network/other problems.
公司內就出現了上面的提示。說明我們部署的server是主動關閉了自我保護機制自我保護機制
eureka的自我保護特性主要用於減少在網路分割槽或者不穩定狀況下的不一致性問題
自我保護機制產生的原因
eureka在執行期間會統計心跳成功的節點。如果15分鐘內所有成功續約的節點佔所有註冊節點85%以下
eureka server會將當前的例項註冊資訊保護起來,同時提示乙個警告,一旦進入保護模式,
eureka server將會嘗試保護其服務登錄檔中的資訊,不再刪除服務登錄檔中的資料。也就是不會登出任何微服務。
上面提到公司是主動關閉了自我保護機制。雖然看不到server的**可以猜測出公司的配置
eureka server端:配置關閉自我保護,並按需配置eureka server清理無效節點的時間間隔。
eureka.server.enable-self-preservation# 設為false,關閉自我保護
eureka.server.eviction-interval-timer-in-ms # 清理間隔(單位毫秒,預設是60*1000)
eureka client端:配置開啟健康檢查,並按需配置續約更新時間和到期時間
eureka.instance.lease-renewal-interval-in-seconds# 續約更新時間間隔(預設30秒)
eureka.instance.lease-expiration-duration-in-seconds # 續約到期時間(預設90秒)
看看 公司client 的配置 微服務 Eureka 的介紹
部落格引用處 以下內容在原有部落格基礎上進行補充或更改,謝謝這些大牛的部落格指導 基於eureka的服務治理 服務發現和註冊和eureka 服務的註冊與發現 關係呼叫說明 eureka簡介 eureka是spring cloud netflix微服務套件中的一部分,可以與springboot構建的微...
微服務 Eureka實戰配置
學習思路 專案實踐 服務註冊 續租 下線 自我保護,ratelimiter實現分析 實際使用中的坑 eureka專案簡單點說就是乙個配置 首先引入jar包 org.springframework.cloud spring cloud starter netflix eureka server 如果需...
微服務 Eureka註冊中心
我們來解決微服務的第一問題,服務的管理。服務中心對外提供服務,需要對外暴露自己的位址。而consumer 呼叫者 需要記錄服務提供者的位址。將來位址出現變更,還需要及時更新。這在服務較少的時候並不覺得有什麼,但是在現在日益複雜的網際網路環境,乙個專案肯定會拆分出十幾,甚至數十個微服務。此時如果還人為...