在vert.x环境下使用基于阻塞jdbc的orm框架来访问数据库有什么大问题?

列车
  • 73

我使用vert.x 创建一个自定义的tcp服务端实例程序来处理tcp服务,其中编写的代码包括使用基于阻塞jdbc的orm框架来进行数据库访问。在vert.x环境下使用基于阻塞jdbc的orm框架来访问数据库有什么大问题?

**我去vert.x官方核心文档和堆栈溢出技术网站看了一下,对于阻塞代码,=建议使用vert.executeBlocking,还有一个是使用 Worker verticles?那么各位使用过vert.x建议使用哪个呢,怎样妥善使用,有相关演示代码么?

访问数据库操作的话,是直接用创建服务端的vert实例使用,还是新开一个vert实例专门用来访问数据库?对于这方面比较合适的建议是哪个呢**,需要调整什么vert.x配置么?

我指的大问题不是说无法发挥出vert响应式异步的优点,而是这种情况下性能和并发不如传统的阻塞程序?

我目前使用的orm框架是tk.Mybatis,出于时间原因,目前现在不打算替换为vert.x的异步jdbc驱动组件(未来会换)

回复
阅读 2.4k
1 个回答

首先 vertx的异步jdbc驱动只能支持 mysql 和PG,
我觉得只要设置 2CPU 的连接数 ,然后使用executeBlocking 来进行数据库操作,就不会影响vertx的吞吐量
因为 我认为基于多路复用的vertx netty之所以快,是因为处理并发请求的线程数 比 阻塞式的程序要少的多,这使得CPU 的使用更有效,而使用executeBlocking 来进行数据库操作 ,并不会加剧更多的线程,所以我觉得这样依旧还是比传统阻塞程序要高效。
具体代码你可以看下资料,我记得executeBlocking是会有专门线程池去做操作。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏