路由拆分就是把一個路由的流量按比例, 權重分發到不同的後端服務. 原理和帶權重的負載均衡相同. 如果你使用過阿里雲的SLB, 應該很熟悉了.
while true; do curl http://hello-microservice-blue-reactive-microservices.192.168.99.100.nip.io 2>&1; echo ''; sleep 1; done;
示例過程
我們以一個Vertx 的Hello Microservice 為例子
下載需要的代碼
https://github.com/redhat-developer/reactive-microservices-in-java.git
cd openshift/hello-microservice-openshift
mvn fabric8:deploy -Popenshift
部署完成後, 修改 pom.xml 中的 <artifactId> 為 hello-microservice-blue, 再次執行如下的構建命令以創建一個新的部署:
mvn fabric8:deploy -Popenshift
這樣, Openshift 中會同時存在兩個名稱不同的部署, 分別代表應用程序的兩個不同版本.
路由拆分配置
路由信息頁面
然後用不同的瀏覽器打開這個路由, 你就會看到不同的輸出. 當然, hello-microservice-blue 這個部署, 你得修改一點輸出代碼, 以示區分.
因為路由有 Session Affinity(會話親和, 會話粘滯), 所以要用不同的瀏覽器才能看到效果. 這樣就是實現了應用的藍綠部署, 灰度發佈, A/B測試, 等等等等類似的
先試點, 再推廣這個機制. 把有可能的影響範圍降低到最小.
參考資料
- https://developers.redhat.com...