netty mysql_用Netty访问MySql数据库

1)即使在同步访问MySql时(即从发出单个调用后等待响应的单个线程 - 就像在JDBC中一样),您通常不需要同步块。服务器在必要时进行自我同步。如果您需要一致性,请使用交易。即使使用异步驱动程序,这应该是可能的 - 如果它支持事务。无论如何,当你使用netty的时候,你应该避免同时执行冗长的操作(包括但不限于阻止对外部服务器的调用)。这基本上是通过像servlet这样的每线程调用体系结构来消除netty(和其他异步体系结构)的所有优点。

2)I所看到的(但尚未使用)下面的异步MySQL驱动为JVM(可能有其他人):

异步MySQL的连接器(https://github.com/dgreenru/async-mysql-connector)“上实现了一个基于NIO MySQL驱动脚“,即直接在JVM nio API上不再有依赖关系。最后一次提交已经快一年了,所以它看起来看起来不太好(或者没有错误)。

postgresql-async(https://github.com/mauricio/postgresql-async)是用Scala编写的,基于netty。除了PostgreSQL之外,它还提供了一个异步MySql驱动程序。所有的例子和描述都在Scala中,但理论上它也可以用于Java。或者,你可以在Scala中实现一个小封装来实现你的功能。这在我看来是这里提到的最活跃和最完整的项目。

adbcj(https://github.com/gamlerhart/adbcj)是一个异步Java数据库驱动程序,其中包括MySql支持。该项目看起来有些放弃(最近一年多前提交)。 MySql驱动程序在其POM中依赖netty(v。4.0.6.Final - 可能适用于更新的netty 4.x版本)。

3)netty访问MySql的“内置”函数确实(afaik)不存在(而不是它的目的)。使用普通的vanilla netty意味着你必须自己实现一个异步的MySql驱动程序,这并不太容易。但是,您可以从上述项目之一开始,并根据您的需要进行定制(例如,较新的netty版本)。

结论:尝试使用其中一个异步驱动程序。如果不符合您的需求,请尝试异步执行(同步)JDBC调用,例如通过使用ThreadPoolExecutor,避免阻止netty的工作线程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值