路由拆分就是把一个路由的流量按比例, 权重分发到不同的后端服务. 原理和带权重的负载均衡相同. 如果你使用过阿里云的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 中会同时存在两个名称不同的部署, 分别代表应用程序的两个不同版本.

clipboard.png

clipboard.png

路由拆分配置

clipboard.png

clipboard.png

路由信息页面
clipboard.png

然后用不同的浏览器打开这个路由, 你就会看到不同的输出. 当然, hello-microservice-blue 这个部署, 你得修改一点输出代码, 以示区分.

因为路由有 Session Affinity(会话亲和, 会话粘滞), 所以要用不同的浏览器才能看到效果. 这样就是实现了应用的蓝绿部署, 灰度发布, A/B测试, 等等等等类似的先试点, 再推广 这个机制. 把有可能的影响范围降低到最小.

clipboard.png

参考资料


developerworks
1.7k 声望266 粉丝

引用和评论

0 条评论