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

Building Reactive Microservices in Javajava

CHAPTER 2  Understanding Reactive Microservices and Vert.xreact

Reactive Systems微信

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

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

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

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

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

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

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

Reactive Microservices

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

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

    • Autonomy(自治)

    • Asynchronisity(异步)

    • Resilience(快速恢复 弹性)

    • Elasticity(伸缩性 拓展)

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

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

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

 

原文地址:

https://developers.redhat.com/promotions/building-reactive-microservices-in-java/

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

相关文章
相关标签/搜索