相反 , 连接池的实现就相对独立的多,也简单的多 。外界只要配好DB URL,用户名密码和连接池的容量参数,就可以做到自行管理连接 。
而Nodejs和Vert.X是完全不同的 。他们本质就是Reactive的 。他们的NIO的驱动方式是其运行时的基础——所有要在这个基础上开发的代码都必须遵守同样的NIO+异步开发规范,使用同一个NIO的驱动 。这样DB与NIO的协作就不成问题了 。
最后,有大量场景是需要BIO的DB查询支持的 。批处理数据分析代码都是这样的场景 。这样的程序写成NIO就会得不偿失——代码不容易懂,也没有任何效率上的优势 。类似于Nodejs这样的运行时在此场景下 , 反而要利用async或等价的语法来让代码看起来是同步的,这样才容易写 。
总结一下 。DB访问一般采用连接池这种现象是生态造成的 。历史上的BIO+连接池的做法经过多年的发展,已经解决了主要的问题 。在Java的大环境下,这个方案是非常靠谱的,成熟的 。而基于IO多路复用的方式尽管在性能上可能有优势,但是其对整个程序的代码结构要求过多 , 过于复杂 。当然,如果有特定的需要 , 希望使用IO多路复用管理DB连接,是完全可行的 。
作者丨大宽宽
来源丨zhihu.com/question/23084473/answer/334920663
推荐阅读
- 《欢乐颂5》播出过半豆瓣未开分,槽点太多,观众为什么不满意?
- 刺客信条英灵殿巴辛姆怎么打,刺客信条英灵殿巴辛姆为什么叛变
- 人参红参和高丽参有什么区别
- 为什么视力表要用E这个字母?看完才知有这么多讲究!
- 染红鸡蛋的方法,清明节为什么吃煮鸡蛋
- 陪嫁媵侍为什么愿意守后半夜 陪嫁媵女为什么要守夜什么意思
- 70岁成龙街头拍戏引群嘲,才知为什么有些人一辈子都过不好
- 虎丘塔为什么是斜的 虎丘塔为什么是斜的是一则
- 扶不起的阿斗为什么当了40年皇帝
- 为什么绝地生名字会变,绝地生为什么改成和平精英