您的位置:首页 > Web前端 > React

响应式微服务 in Java 译 --reactive systems<三>

2017-12-28 00:00 323 查看
摘要: 响应式微服务 in Java 译 --reactive systems

Building Reactive Microservices in Java

CHAPTER 2 Understanding Reactive Microservices and Vert.x

Reactive Systems

在响应式开发作为一种变成模型的时,响应式系统的架构风格也被用于构建分布式系统(http://www.reactivemanifesto.org/),有一系列的原则用于快速响应请求,即使有失败或者在高负荷下。

为了构建这样一个系统,响应式系统接收消息驱动的方法。所有的组件之间的交互使用异步消息的发送与接受,为了减弱发送者和接收者,组件发送消息到虚拟地址的波动,还需要注册虚拟地址来接受消息。地址是一个目的地标识,如一个不透明的(opaque)字符串或一个URL,多个服务可以注册到同一个地址--通讯的语义取决于基础技术,发送者可能延迟接收一个回应,但是与此同时,他可以接受和发送其他消息。这里异步的概念比较重要,影响应用是怎么开发的,使用异步消息传递的相互作用提供了响应式系统的两个关键特性。

伸缩性(Elasticity)--横向拓展能力(scale out/in)

快速恢复(Resilience 弹性)--处理故障和恢复的能力

伸缩性来自消息交互提供的解耦,使用负载均衡的策略,消息发送到一个地址被一系列的消费者消费掉。当响应式系统面临一个峰值负载,可以增加新的消费者来处理。

没有阻塞地处理失败和组建复制的能力提供了这种弹性快速恢复的特征,首先,消息交互允许组件本地故障的处理。得益于异步的特征,组件不会等待回应(response),因此一个组件上发生的失败不会影响另外一个,复制也是一个弹性的重要特征,当一个节点处理消息失败,消息可以被注册到同一个地址的其他组件执行。

得益于这两种特性,系统可以快速反应,可以适应高负荷和低负荷,并且可以持续处理请求在高负荷和失败的时候。这些原则可以使分布式系统的微服务可以高分布式的,当处理的服务超过能力范围,这时需要运行多个服务的实例来平衡负载,处理失败,持续提供服务。我们将在下一章看看那Vert.x addresses的热门话题。

Reactive Microservices

当创建一个微服务系统(分布式),每一个服务会改变,进化,失败,表现出缓慢,或在任何时间被撤掉,这些行为都不能影响整个系统,你的系统有处理改变和失败的能力,你可能以degraded(降级) mode运行,但是你的系统需要持续运行处理请求。

为了确保这种行为,响应式系统由响应式微服务构成,这些微服务有以下四种特性:

• Autonomy(自治)

• Asynchronisity(异步)

• Resilience(快速恢复 弹性)

• Elasticity(伸缩性 拓展)

响应式微服务是可以自我管理的,他们能适应周围的服务可用或不可用。然而,自治来搭配隔离,响应式微服务可以本地处理失败,独立运行,如果需要,还会协调其他的,响应式微服务使用异步的消息和其他的 peers 互动。它也接收消息和对这些消息返回处理结果。

得益于异步消息形式,响应式微服务可以面对失败并相应地调整自己的行为。失败不应该被传播,需要在根源处关闭。当微服务起来的时候,需要保证失败不会传播,这种隔离的原则是防止失败的泡沫打破整个系统的关键特性。弹性不仅事处理失败,也是自我治疗,当故障发生的时候,微服务应该实现恢复或者补偿策略。

最后,一个响应式微服务必须是可拓展的,因此系统可以更具负载来匹配实例的数量,这暗示着一系列的约束比如拒绝记忆状态,如果需要在不同实例之间分享状态,或者在形同的实例之间传送状态的信息。

原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/


有什么讨论的内容,可以发我微信公众号:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息