1刃滓、服務(wù)治理三個核心點、服務(wù)提供者耸弄、服務(wù)消費者咧虎、服務(wù)注冊中心
結(jié)合Ribbon 服務(wù)治理圖
服務(wù)治理時序圖
服務(wù)提供者功能:
1、服務(wù)注冊
2计呈、服務(wù)同步
3砰诵、服務(wù)續(xù)約
4、..
服務(wù)注冊:
服務(wù)提供者在啟動時候通過rest請求 捌显、將自己注冊到Eureka Server上茁彭、同時攜帶自身服務(wù)的一些元數(shù)據(jù)信息、
Eureka Server接收到這個rest請求后 將這些元數(shù)據(jù)存儲到一個雙層結(jié)構(gòu)Map中扶歪、其中第一層map 的key是服務(wù)名字理肺、第二層key是具體服務(wù)實例名、
相關(guān)配置:
eureka.client.register-with-eureka=true 【默認(rèn) true】
服務(wù)同步:
情景:兩個相同的服務(wù)提供者實例善镰、注冊到了不同的服務(wù)注冊中心妹萨、那么由于兩個服務(wù)注冊中心互相注冊、服務(wù)注冊中心會將服務(wù)注冊信息發(fā)送給Eureka-server的其他機器炫欺、【還有一種說法是eureka-server 有信息服務(wù)功能乎完、server與server之間 有消息同步、不確定這兩種說法那個是真是的底層機制品洛、后者是官方的說法树姨、前者是 翟永超書里的說法摩桶、也就是說服務(wù)同步是由Eureka-server來完成的】
服務(wù)續(xù)約:
服務(wù)注冊后、會維持一個心跳來維持服務(wù)不被剔除
相關(guān)配置:
eureka:
instance:
status-page-url-path: /info //服務(wù)信息
health-check-url-path: /health //服務(wù)健康狀態(tài)
lease-expiration-duration-in-seconds: 90 //服務(wù)失效時間
lease-renewal-interval-in-seconds: 30 //服務(wù)續(xù)約持續(xù)調(diào)用時間
服務(wù)消費者功能:
1娃弓、獲取服務(wù)
2典格、服務(wù)調(diào)用
3岛宦、服務(wù)下線
4台丛、..
獲取服務(wù):
服務(wù)消費者會發(fā)送一個rest請求獲取一個服務(wù)列表、Eureka-server會發(fā)給client一個只讀的服務(wù)列表砾肺、且該列表會30s刷新一次
相關(guān)配置:
eureka:
client:
fetch-registry: true //默認(rèn)為true 設(shè)為false則無法獲取服務(wù)
registry-fetch-interval-seconds: 30 //服務(wù)清單刷新時間
服務(wù)調(diào)用:
集成Ribbon后挽霉、默認(rèn)會使用輪詢機制來調(diào)取服務(wù)實例信息
對于實例選擇、在eureka中會有Region和Zone概念
一個Region會有很多Zone变汪、每個服務(wù)都需要被注冊到一個Zone中侠坎、所以每個client對應(yīng)一個Region和一個Zone、服務(wù)調(diào)用時候會優(yōu)先訪問Zone下列表裙盾、沒有在訪問同一個Region不同Zone下的服務(wù)实胸、
服務(wù)下線:
當(dāng)服務(wù)實例jinx你給正常的關(guān)閉時、client會給server發(fā)送一個server番官、告知 "我要下線了"
服務(wù)注冊中心功能:
1庐完、失效剔除
2、自我保護(hù)
3徘熔、..
失效剔除:server會每隔一段時間【默認(rèn)90s】剔除不正常實例【主要是沒有續(xù)約的】
自我保護(hù):如果同一時間段內(nèi)由于網(wǎng)絡(luò)原因大量服務(wù)都沒有續(xù)約门躯、server會繼續(xù)保持服務(wù)列表、而不丟棄這個服務(wù)清單列表酷师、也就是觸發(fā)自我保護(hù)機制
其主要應(yīng)對是網(wǎng)絡(luò)忽然中斷讶凉、大量服務(wù)都被剔除導(dǎo)致服務(wù)不可訪問危險【犧牲了服務(wù)高可用性、zookeeper是全部剔除的 zk是服務(wù)強高可用性】
相關(guān)配置:
eureka.server.enable-self-preservation=false //可關(guān)閉自我保護(hù)機制
關(guān)于版本升級
1.0升級2.0 添加了獲取感興趣服務(wù)實例列表功能山孔、畢竟在幾千臺服務(wù)注冊中心上懂讯、有些服務(wù)實例也不是100%用到、節(jié)省了client服務(wù)實例清單的內(nèi)存消耗台颠、
還優(yōu)化一些獲取服務(wù)算法褐望、