java - 你如何为 MySQL X DevAPI 使用 Java 连接池?

标签 java mysql spring asynchronous reactive-programming

我一直在探索对下一个 Spring 版本中即将推出的非阻塞异步响应式 Web 应用程序的支持。让我印象深刻的是,大多数应用程序都倾向于与关系数据库交互。因此,只要 JDBC 是一个同步阻塞 API,并且所有主要的关系数据库仍然缺乏甚至专有的异步驱动程序,那么整个响应式(Reactive)事物可能仍然超前于它的时代。

然后几乎是偶然地,我发现最新版本的 MySQL 支持称为“X DevAPI”的东西,它包含在当前的 MySQL JDBC 驱动程序中(尽管它是额外的类,在 JDBC 规范之外)。

我还没有听到任何关于 X DevAPI 的宣传,而且几乎没有什么文档似乎强调了将 MongoDB 替换为文档存储的用例。但是,该库还包括以非阻塞异步方式访问 MySQL 关系数据库的能力。

不幸的是,唯一的文档示例是基本的“Hello World”用例。 static void main 方法从头开始建立一个新的 MySQL X session ,并在最后关闭它。

我很好奇这个新 API 是否已准备好用于更实际的用途。具体来说,是否支持连接池?是通过 3rd 方库,还是通过没有很好记录的东西原生于 MySQL 库?

或者我可能在这里遗漏了一些基本的东西,并且根本不需要连接池,因为 X DevAPI 在幕后多路复用什么的?

最佳答案

根据 documentation将有两种类型的 session :

  • X session 。这是首选的 session 类型,因为根据 dev blog post 它是无状态的.目前它只能连接到 mysql 的一个节点,但对于 MySQL 8 版本,它预计为 work with multiple nodes :

Although the current version of MySQL X supports XSessions that connect to a single node, future versions could extend this to cover multiple nodes. An application using XSession is prepared to be scaled: change some connect parameters and be done with code changes.

  • 节点 session 。由于 XSession 仅提供 sql 函数的一个子集,因此应该有一种方法来执行原始 sql。 SQL 是有状态的,NodeSession 也是。

An application using NodeSession establishes connections to individual nodes. To scale an application using NodeSession you would have to replace the use of NodeSession with XSession whenever possible.

X 协议(protocol)需要安装 X 插件,因此您可以检查 my sample repo在 Java 中与 X DevApi 一起使用 docker。

关于java - 你如何为 MySQL X DevAPI 使用 Java 连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40192914/

相关文章:

java - Java 中用户名的正则表达式 (RegEx)

java - 为什么我不能从 Eclipse 运行我的 Spring 项目?

java - IntelliJ java.lang.ClassNotFoundException : com. mysql.jdbc.Driver - 连接到 XAMPP MySQL 数据库

java - 没有下载 org.springframework :org. springframework.core :3. 2.2.RELEASE 的文件

php - 每周逐页计数,然后创建新的表条目

mysql - 临时表(Memory Engine)和大物理表(1.7GB myisam)的join优化

java - SpringSecurity - SecurityConfiguration.java - HttpSecurity - 不工作

java - 在 spring 中禁用复选框并将选中的值传递给 Controller

PHP - mysqli 尝试进行选择查询时出现错误 1064

android - Spring Rest Template Put方法无效,为什么?