如果我们使用的是云平台,主要是出于可伸缩性的考虑。我们希望能够根据负载增加和减少应用程序实例的数量。在OpenShift仪表板中,我们可以按图5-5所示的大小来缩放pods的数量。
图5-5 向上和向下扩展
您还可以使用oc命令行设置副本的数量:
# scale up to 2 replicas
oc scale --replicas=2 dc hello-microservice
# scale down to 0
oc scale --replicas=0 dc hello-microservice
让我们创建hello microservice的第二个实例。然后,等待第二个微服务正确启动(等待时间很烦人,但稍后我们将修复它),然后返回到浏览器中的hello-consumer微服务的页面。你应该看到:
{
"luke" : "hello Luke hello-microservice-1-h6bs6",
"leia" : "hello Leia hello-microservice-1-keq8s"
}
如果您多次刷新,您将看到OpenShift服务平衡了两个实例之间的负载。你还记得我们之前设置了keep-alive吗?当HTTP连接使用一个keep-alive连接时,OpenShift将请求转发到相同的pod,从而提供并置的连接。请注意,在实践中, keep-alive是一个非常理想的请求头,因为它允许重用连接。
在前面的场景中,存在一个小问题。当我们扩大规模时,OpenShift会开始向新的pod发送请求,而无需检查应用程序是否准备好为请求服务了。因此,我们的消费者可能会调用一个尚未准备好并失败的微服务。
有几种方法可以解决这个问题:
1.在微服务中使用健康检查。
2.在消费者代码中准备好应对失败。