Spring cloud 灰度發佈

Spring Cloud灰度發佈之Nepxion Discovery

架構升級,有單體架構升級爲微服務架構。

服務的灰度發佈,根據訪問量逐漸切換用新版本替換老版本,並且能夠做到代碼零入侵的。

Nepxion Discovery是一款對Spring Cloud Discovery服務註冊發現、Ribbon負載均衡、Feign和RestTemplate調用的增強中間件,其功能包括灰度發佈(包括切換髮布和平滑發佈)、服務隔離、服務路由、服務權重、黑/白名單的IP地址過濾、限制註冊、限制發現等。

同一個功能需要維護多個版本的接口。

在springcloud的微服務體系中,大多是使用eureka做爲註冊中心,ribbon做爲負載均衡,hystrix做爲斷路器。

該項目是在spring-cloud-ribbon的基礎上進行擴展,以實現接口的多個版本的調用及負載均衡,支持feign方式和斷路器(spring-cloud-hystrix)。

spring cloud ribbon默認是輪詢的方式將請求分別轉到兩個實例上。

可以擴展ribbon的負載均衡策略從而實現不同版本的請求轉發到不同的服務實例上。

 

RequestVersionExtractor:這個接口負責獲取請求需要訪問的目標接口的版本。

上面三個接口只是簡單的實現了獲取請求的目標版本、觸發ribbon請求的觸發器,以及將信息向下一步傳遞。

 

灰度發佈是在多版本控制的基礎上進一步擴展實現出來的項目,抽象出灰度服務、灰度服務實例、灰度策略、灰度決策等。 灰度策略可以從request ip, request patameter, request header等方面進行去創建,也可以根據bamboo的LoadBalanceRequestTrigger結合graybuanny的接口去擴展灰度策略和灰度決策。

灰度策略。灰度開關。刪除灰度標記。

服務實例和調用請求;服務實例的灰度管理是基礎,調用請求時如何決策路由,都是根據服務實例的灰度策略去判斷的。

 

實例註冊:服務實例添加到灰度管理中。

實例下線:服務實例下線,從灰度管理中刪除。

灰度開關:調整服務實例的灰度狀態,有啓用、禁用兩個狀態,禁用的實例不納入灰度列表中。

灰度策略:請求是否可以被轉發到該服務實例的條件,只有通過,請求才有可能會被轉發到該實例上。

 

灰度決策:根據請求的信息去匹配灰度服務實例的灰度策略,如果匹配上,會將服務實例加入到通過列表中。如果都沒有匹配上,就按bamboo的路由規則去篩選非灰度的服務實例進行轉發。

 

Spring Cloud Gray 是一套開源的微服務灰度路由解決方案。

將發佈產生的風險保持在可控範圍內。

在Spring Cloud Gray 中定義了幾個角色灰度客戶端(gray-client)、灰度管控端(gray-server)、註冊中心。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章