微服务并不是什么新鲜事物。它们源于20世纪70年代的一项研究,由于微服务是一种快速移动的方式,使得它可以更容易传递值并提高敏捷性,所以最近才成为人们关注的焦点。然而,微服务的是源于基于actor的系统、服务设计、动态和自治系统、领域驱动设计和分布式系统。微服务的细粒度模块化设计不可避免地导致开发人员创建出分布式系统。我相信你们已经注意到,分布式系统是很困难的。它们很容易失败,变慢,它们是由CAP和FLP定理限制。换句话说,构建和维护它们非常复杂。这就是响应式产生的原因。
30+年的进化:
actor模型由C. Hewitt, P. Bishop和R.Steiger在1973年提出。自治计算,一个在2001年创造的术语,指的是分布式计算资源的自我管理特性(自我修复、自我优化等)。
但reactive到底是什么?现在,响应式术语是一个超负荷的术语。《牛津词典》将响应式定义为“对刺激做出反应”。因此,响应式软件会根据所接收到的刺激,响应并调整其行为。但是,这个由定义所促进的响应性和适应性却是编程的挑战,因为计算的流程不是由程序员控制的,而是由刺激物控制的。在这一章中,我们将会看到, Vert.x是怎样通过组合来帮助你实现响应性:
响应式编程——它一种关注于数据流的可观察性、对变化做出响应并进行传播的开发模型。
响应式系统——一种用于构建基于异步消息传递的可响应性(response)和健壮的(robust)分布式系统的架构风格。
响应式微服务(reactive microservice)是响应式微服务系统的组成部分。然而,由于它们的异步方面,这些微服务的实现具有挑战性。响应式编程降低了这种复杂性。那么如何来做呢?现在我们来回答这个问题。