Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
451 views
in Technique[技术] by (71.8m points)

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

我使用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驱动组件(未来会换)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...