启动应用程序时,Vert.x 会创建多个事件循环(每个 CPU 核心默认 2 个)。。这意味着当某个事件需要花费太长时间来处理时,它就会阻塞循环。这将导致延迟甚至阻塞所有其他事件的处理。当您阻止事件循环时,应用程序将显著减慢速度,或者在最坏的情况下它将停止正常工作。这就是为什么Vert.x的黄金法则最重要的原因是:“不要阻塞事件循环”。当 Verticle 占用了太多事件循环 事件循环在单 时间时,Vert.x 会自动将其记录为错误。
ReactiveX
ReactiveX 是一种已在多种编程语言中实 赌博数据 现的 API,其中一种是 Java(RxJava)。一些反应库以某种形式支持或集成了 reactX。 Vert.x 是集成了 reactX 的库之一。
ReactiveX 实现了观察者模式,这是一个对象(在反应式中为可观察对象)“观察”数 事件循环在单 据流并将其分发给其订阅者(可以是零个或多个)的模式。
可观察对象可以发出三种类型的事件:
下一步;
完成时;
onError。
onCompletion 和 onError 仅发出 POLITICO 巴黎剧本:马克龙在 PQR — Vévé 的会议 — 达拉斯在 PACA 一次或从不发出。一旦它们被发射,可观察对象就会关闭。 onNext 事件,即您感兴趣的实际数据,可以发射 N 次或从不发射。这意味着当订阅可观察对象时,您不知道是否会收到 onNext(数据)事件。您很可能在收到 onNext 事件之前就收到 onError 或 onCompletion 事件。这意味着您的代码必须采取相应的行动。它必须能够处理三种偶数类型中的任何一种并采取相应的行动。
可观察对象可以基于任何内容
从简单列表到服务调用,再到远程 rest API 或数据库调用。通过实现可观察模式,您可以将调用与响应分离。这意味着当等待响应时,没有线程会被明确阻塞。当您按照此原则实 西班牙比特币数据库 现微服务时,您可以创建高度灵活且响应迅速的服务。即使在高负载下,API 也能够处理您的调用,但是如果后端没有响应,您可能不喜欢这个答案。
在这篇博文中,我尝试从很高的概述解释反应式微服务以及如何实现它们。在接下来的博客文章中,我将尝试通过小代码示例向您展示如何实际实现它们。