Reactive Programming可以看作是一种编程模型,它通过创建事件驱动的非阻塞功能管道来促进可扩展性和稳定性,这些管道对资源的可用性和可处理性做出反应。延迟执行,并发和异步性只是底层编程模型的结果。
只有当整个堆栈都是被动的并且所有参与的组件(应用程序代码,运行时容器,集成)都遵循延迟执行,非阻塞API和数据流的流式特性时,响应式编程的全部好处才会生效 - 基本上遵循基本假设。
虽然可以将非反应性组件引入以函数响应式编写的应用程序,但最终结果是对可扩展性和稳定性影响,实际预期收益减少。在最坏的情况下,运行时行为很少或没有区别。但是,响应式编程有助于提高代码的可读性。
如果我们查看响应式生态系统,我们将发现几个框架,库和集成。他们每个人都有自己的特长。通过通用方法或在特定响应框架的上下文中,可以很好地涵盖许多功能领域。我们来讨论关系数据库集成。
最常见的问题是:我们什么时候可以使用API进行响应性关系数据库集成?
Java使用JDBC作为与关系数据库集成的主要技术。JDBC具有阻塞性 - 没有什么可以减轻JDBC的阻塞性质。关于如何使调用无阻塞的第一个想法是将JDBC调用卸载到Executor(通常是Thread池)。虽然这种方法有些作用,但它有几个缺点,忽略了响应式编程模型的好处。
响应运行时通常使用与CPU核心数匹配的有限数量的线程。额外的线程引入开销并减少线程限制的影响。此外,JDBC调用通常会堆积在队列中,一旦线程充满请求,池将再次阻塞。所以,JDBC现在不是唯一一个选择。
响应式数据库API
Oracle宣布推出ADBA,该计划旨在通过使用期货为Java中的异步数据库访问提供标准化API。Postgres正在研究可用