这本书是写给对微服务和分布式应用感兴趣的开发者和架构师的。书里并没有对分布式系统的基本知识进行说明,而是关注于reactive这一特性对构建高效微服务系统的益处。微服务可以看做模块化的延伸:程序是通过消息传递的方式通信,而不是直接的API调用,因此他们可以分布到多个服务上。为什么微服务这么流行?根本上是两个因素共同导致:云计算的流行以及对迅速扩张和缩减系统这一需求的增大。云计算使得构建大量小型服务非常方便,而系统的伸缩需求让我们必须使用微服务。
这本书中,我们将会了解Eclipse Vert.x(http://vertx.io )怎样用来构建reactive微服务。Vert.x是一个用于构建reactive和分布式系统的工具箱。Vert.x很易用。因为它是一个工具箱,所以你可以用来构建基础的network模块、先进的web应用、大规模消息处理系统、REST服务等很多项目,当然也包括微服务。这种延展性和可用性给Vert.x带来了很棒的机会、大的社区、活跃的生态。在微服务流行之前,Vert.x就在促进其发展,它被修改后用于构建由若干分布式、带有自治性的服务组合构成的系统。用Vert.x构建的系统遵从reactive系统规范 (http://reactivemanifesto.org );它们是可响应的、高伸缩性的、可自治的,并使用异步消息来进行通信。
这本书不仅限于Vert.x和微服务。本书着眼于构建微服务系统需要的整个环境,并介绍为了得到完美结果所需的一些工具。在阅读本书过程中,我们将会学到:
- 什么是Vert.x以及该怎样使用它
- reactive究竟是什么意思以及什么是reactive微服务
- 怎样使用HTTP或消息系统来实现微服务
- 构建reactive微服务的模式和套路
- 怎样在虚拟机或云服务器上发布微服务
本书中呈现的代码都可以在下面网页中得到,https://github.com/redhat-developer/reactive-microservices-in-java.
你所需的开发环境
Eclipes Vert.x需要Java 8, 在本书中我们提供的这些例子都使用了Java 8. 我们使用Apache Maven作为构建工具。确保你已经安装了一下几个工具:
- JDK 1.8
- Maven 3.3+
- 一个命令行终端(Bash, PowerShell 等)
虽然不是必须的,但是我们推荐使用一个集成开发环境(IDE),比如Red Hat Development Suite(https://developers.redhat.com/products/devsuite/overview )。在最后一张,我们使用了OpenShift;它是一个基于Kubernetes(https://kubernetes.io )的容器平台,用于运行容器化的微服务。为了在本地安装OpenShift,我们推荐使用Minishift(https://github.com/minishi�/minishi� ),或Red Hat Container Development Kit(CDK) v3. CDK可以在这里下载https://developers.redhat.com/products/cdk/download.
那我们开动吧!