当构建一个微服务(因此也是分布式的)系统时,每个服务都可以改变、演变、失败、显示缓慢或随时退出。这些问题不能影响整个系统的行为。你的系统必须接受改变,并且能够处理失败的情况。您可能以降级模式运行,但是您的系统仍然能够处理请求。
为了确保这种行为,响应式微服务系统由响应式微服务组成。这些微服务有四个特点:
- 自治的Autonomy
- 异步的Asynchronisity
- 弹性Resilience
- 可伸缩性Elasticity
响应式微服务是自治的。它们可以适应围绕它们的服务的可用性或不可用性。然而,自治是搭配隔离的。响应式微服务可以在本地处理失败,独立行动,并在需要时与他人合作。响应式微服务使用异步消息传递来与它的对等点进行交互。它还接收消息,并具有对这些消息产生响应的能力。
由于异步的消息传递,响应式微服务可以应对失败并相应地调整它们的行为。失败不应该被传播,而是应该在发生的地方处理。当一个微服务爆炸时,消费者微服务必须处理失败,而不是传播它。这种隔离原则是防止失败和破坏整个系统的关键特性。Resilience(弹性)不仅仅是管理失败,它也是自我修复。当故障发生时,响应式微服务应该执行恢复或补偿策略。
最后,一个响应式的微服务必须是有Elasticity(可伸缩性)的,所以系统可以调整实例的数量来管理负载。这也意味着一组约束,比如避免在实例之间共享内存中的状态,或者将消息路由到有状态服务的相同实例。