gpt4 book ai didi

scala - JDBC 在事件驱动程序中有何用处?

转载 作者:行者123 更新时间:2023-12-02 04:39:41 24 4
gpt4 key购买 nike

我正在用 Scala 编写一个事件驱动架构,我需要使用它来管理数据库。

我想知道使用仅支持同步调用的 JDBC 是否可以很好地解决我的问题?

我曾想过为 JDBC 调用编写一个异步包装器,但是它真的能解决我对线程因数据库调用而被阻塞的担忧吗?

最佳答案

这是一个非常好的问题,实际上没有一个好的答案。

这实际上取决于您的数据库、其协议(protocol)和驱动程序实现。首先,一些数据库,例如Cassandra 在协议(protocol)级别内置了异步功能。应该会让事件驱动模型中的工作变得更容易,对吧?不完全是 - 如果您通过慢速连接获取千兆字节的数据,您可能会在网络级别上阻塞。

其他数据库只有同步协议(protocol),因此可能会阻塞您的资源,对吧?不完全是 - 有一些连接池可以防止一些阻塞问题。

因此,根据您的应用程序体系结构和您要访问的数据,您可能需要隔离数据访问层,该层将包装 JDBC 连接并提供异步功能。该层将根据打开连接的可用性进行扩展和缩小(例如,持有连接的参与者,如果没有空闲数据库,则监督者将生成新的数据库连接参与者,并使用 PinnedDispatcher 创建新线程) .

在其他情况下,对于特定的驱动程序,您可能会坚持将 JDBC 封装到 Future 中,希望驱动程序能为您带来神奇的效果。

如果您构建大型应用程序,您甚至可能希望将持久性访问逻辑完全分离到例如 RabbitMQ 中,并使用 RPC 来访问数据库。

关于scala - JDBC 在事件驱动程序中有何用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com