Project Rector、Vertx、RxJava 等反应式编程工具是不是可以替代 Akka Actor 模型? [关闭]
Posted
技术标签:
【中文标题】Project Rector、Vertx、RxJava 等反应式编程工具是不是可以替代 Akka Actor 模型? [关闭]【英文标题】:Are the reactive programming tools like Project Rector, Vertx, RxJava substitute Akka Actor model? [closed]Project Rector、Vertx、RxJava 等反应式编程工具是否可以替代 Akka Actor 模型? [关闭] 【发布时间】:2022-01-21 19:22:24 【问题描述】:在过去的几年里,我看到了“反应式编程/系统”世界的变化。要实现非阻塞、异步、背压系统,这些都是非常好的候选者。但我经常尝试看看 Akka/ProjectReactor/RxJava/Vertx 中哪一个最适合构建反应式系统,并且可以实现“反应式宣言”。
就我个人而言,我已经很好地使用了 Akka,并且对 Project-Reactor/Spring webflux 有很好的想法。在我的分析过程中,我看到 Akka 满足所有“反应式宣言”属性,实际上是建立在这些原则之上的。它提供了多种功能,例如并行性、固有并发性(Actor)、流、API、集群、监控、弹性等。
Spring 社区很好地集成/采用了其他类似 Project-Reactor 的框架,其次是 Kafka Reactive、R2Drivers、R2Socket ....等。
我认为其中任何一个都不能满足反应系统的所有要求。似乎我们需要像 Akka 和 Reactor 或 Akka 和 RxJava 这样的组合.....请分享您的想法。
【问题讨论】:
【参考方案1】:我认为这是一个有点“意见”的问题,但我会尝试。 Akka 也是一个响应式框架。事实上,Akka 和 Vert.x 在概念上非常接近。他们都“实现”了Reactive Manifesto。
让我们在 Vert.x 示例中看到这一点:
响应:如果可能,系统会及时响应。
这基本上是说慢请求不应该阻止更快的请求。
Vert.x 利用 MultiReactor 设计模式来提供响应能力。此模式基于多个EventLoop
线程,旨在尽快执行队列中的函数。
弹性:系统在遇到故障时保持响应。
这基本上是说,如果单个请求失败,系统不应该完全崩溃。 Vert.x 使用 Handlers 的概念来处理新事件。如果出现错误,将由 ErrorHandler 处理。
弹性:系统在不同的工作负载下保持响应。
Vert.x 中的弹性单位是Verticle
。我们可以在运行时添加更多的verticles来处理更多的请求,也可以取消部署verticles。
消息驱动:反应式系统依赖于异步消息传递 在组件之间建立边界,确保松散 耦合。
Vert.x 使用EventBus
在 Verticles 之间传递消息。
【讨论】:
感谢您的回复。我知道 akka 和 vert.x 遵循类似的路径。我也可以看到这两个高层是相似的。我在想,一种方法是,我们可以选择“Akka + 其他反应器库,如 R2Drivers、Netty、Reactor”或“Vert.x + 其他反应器库,如 R2Drivers、Netty”。这样任何一个选项都允许构建端到端的反应系统( UI --> 中间件 --> Applayer --> 数据库集成.....等)。以上是关于Project Rector、Vertx、RxJava 等反应式编程工具是不是可以替代 Akka Actor 模型? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章