Java反应系统复杂吗?- dukesletter


世界正在变得数字化。有更多的互连系统,并且它们变得越来越复杂。
我们的应用程序需要响应(及时响应),弹性(保持响应在面对失败),和弹性(住在不同的工作量下,响应)。我们可以通过创建消息驱动的系统来实现。
这是反应式宣言的四个支柱:

这听起来非常不错,我们希望我们的系统像这样。
使用反应式范例的应用程序代码如何?它与传统风格有很大不同吗?
为了回答这些问题,我建议您阅读Baeldung 中的“ Java中的Reactive Systems ”。本文是reactive实现的一个很好的具体示例。
它从基于对微服务的HTTP请求的经典分布式系统实现开始。在解释了其问题之后,请更改基于Spring Reactor,WebFlux和MongoDB Reactive Driver的实现。最后,将同步通信更改为基于Kafka的消息驱动架构。
您何时需要将您的应用程序转换为具有微服务的分布式系统?什么时候会有如此大量的用户,您将需要采用基于反应的体系结构?如果创建六边形架构已经很复杂,则添加这种类型的框架会使它更加复杂。(banq注:开源jivejdon是DDD+六边形架构+反应式编程)
这些架构不是免费的,并且会带来很多复杂性。设计,演化,部署和调试要困难得多。这些架构决策必须由数据或合理的期望而不是趋势来支持。
您的代码必须解耦到足以使其演变为这种类型的体系结构,但是除非您是Netflix或Amazon,否则我不会将其作为首选。