第 2 章 Eclipse Vert.x 概述
Eclipse Vert.x 是用于创建被动、非阻塞和在 Java 虚拟机(JVM)上运行的异步应用程序的工具箱。
Eclipse Vert.x 旨在成为云原生。它允许应用程序使用非常少的线程。这可避免在创建新线程时导致的开销。这可让 Eclipse Vert.x 应用和服务有效使用其内存以及云环境中的 CPU 配额。
在 OpenShift 中使用 Eclipse Vert.x 运行时,可以更轻松地构建被动系统。OpenShift 平台的功能也可用,如滚动更新、服务发现和 canary 部署。借助 OpenShift,您可以在您的应用中实施外部化配置、健康检查、断路器和故障转移等微服务模式。
2.1. Eclipse Vert.x 的主要概念
本节介绍了与 Eclipse Vert.x 运行时关联的一些关键概念。它还简要概述被动系统。
云和容器应用程序
云原生应用通常利用微服务构建。它们设计为形成分离组件的分布式系统。这些组件通常在包含大量节点的集群之上在容器内运行。这些应用程序预计会在不需要任何服务停机时间的情况下更新各个组件的故障。基于云原生应用的系统依赖于由底层云平台(如 OpenShift)提供的自动化部署、扩展和管理和维护任务。使用现成的管理和编排工具在集群级别上执行管理和配置任务,而不是在各个机器的水平执行。
被动系统
被动系统(Reactive manifesto 中定义)是一个分布式系统,它具有以下特征:
- Elastic
- 系统在不同的工作负载下保持响应,各个组件根据需要进行扩展和负载均衡,以适应工作负载的不同部分。弹性应用程序无论它们同时收到的请求数量如何,都可提供相同的服务质量。
- 弹性
- 即使有任何独立组件失败,系统也会保持响应。在系统中,组件相互隔离。这有助于在失败时快速恢复各个组件。单个组件故障不应影响其他组件的功能。这可防止级联失败,而隔离组件的失败导致其他组件被阻断,并逐渐失败。
- 响应
- 快速响应的系统设计为始终以合理的时间内响应请求,以确保提供一致的服务质量。为了保持响应响应,应用程序间的通信通道绝对不会被阻止。
- message-Driven
- 应用的各个组件使用异步消息传递来相互通信。如果事件发生(如鼠标点击或服务上的搜索查询),服务会发送通用频道的消息(即事件总线)。消息反过来由相应的组件发现并由相应的组件处理。
被动系统是分布式系统。它们设计为可将其异步属性用于应用程序开发。
被动编程
被动系统的概念描述了分布式系统的架构,但被动编程是指使应用程序在代码级别重新活跃的做法。被动编程是一种开发模型,用于编写异步和事件驱动的应用程序。在被动应用程序中,代码对事件或消息做出反应。
被动编程有多种实现。例如,使用回调进行简单的实施,使用 Reactive Extensions (Rx)和 coroutines 的复杂实现。
Reactive Extensions (Rx)是 Java 中最成熟的被动编程形式之一。它使用 RxJava 库。