如何用java 5分钟实现一个最简单的mysql代理服务器

如题所述

如何用java 5分钟实现一个最简单的mysql代理服务器
首先,准备开发工具套件,我们并不会引入过多工具包,仅仅需要:
java8
vert.x 3
如果你是用maven做为项目管理工具,请将vert.x 3引入:

1
2
3
4
5

<dependency>

<groupId>io.vertx</groupId>

<artifactId>vertx-core</artifactId>

<version>3.3.2</version>

</dependency>

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

package
com.maxleap.mysqlproxy;

import
io.vertx.core.AbstractVerticle;

import
io.vertx.core.Vertx;

import
io.vertx.core.logging.Logger;

import
io.vertx.core.logging.LoggerFactory;

import
io.vertx.core.net.NetClient;

import
io.vertx.core.net.NetServer;

import
io.vertx.core.net.NetSocket;

/**

*
@author sneaky

*
@since 1.0.0

*/

public
class
MysqlProxyServer
{

private
static
final
Logger
logger
=
LoggerFactory.getLogger(MysqlProxyServer.class);

public
static
void
main(String[]
args)
{

Vertx.vertx().deployVerticle(new
MysqlProxyServerVerticle());

}

public
static
class
MysqlProxyServerVerticle
extends
AbstractVerticle
{

private
final
int
port
=
3306;

private
final
String
mysqlHost
=
"10.10.0.6";

@Override

public
void
start()
throws
Exception
{

NetServer
netServer
=
vertx.createNetServer();//创建代理服务器

NetClient
netClient
=
vertx.createNetClient();//创建连接mysql客户端

netServer.connectHandler(socket
->
netClient.connect(port,
mysqlHost,
result
->
{

//响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接

if
(result.succeeded())
{

//与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法

new
MysqlProxyConnection(socket,
result.result()).proxy();
温馨提示:内容为网友见解,仅供参考
无其他回答

如何用java 5分钟实现一个最简单的mysql代理服务器
netServer.connectHandler(socket -> netClient.connect(port, mysqlHost, result -> { \/\/响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接 if (result.succeeded()) { \/\/与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法 new MysqlProxyConne...

极速开发APP与MySQL的无缝连接app如何连mysql
1.连接MySQL数据库 连接MySQL的方式很多,本文将使用Java开发的JDBC(Java DataBase Connectivity)工具包实现连接。JDBC是Java中访问数据库的标准技术,可以访问关系数据库,也可以访问非关系数据库。通过以下步骤,可以在Android Studio中使用JDBC连接MySQL数据库:(1) 在Android Studio项目中的“app”文件夹...

...数据库部分本打算使用MYSQL,但听说官方MYSQL收费,免费的社区版能用...
mysql社区版完全免费,想怎么用怎么用,如果还想要别的免费数据库,可以用postgresql,基本上业内公认的比mysql要强不少,同样是完全免费的。mysql的简单查询更快,适合网站,postgre在高负载,大数据量时的稳定性和性能就要比mysql强很多了

如何使用java代码创建数据库实例,
java连接数据库主要用的是jdbc。在你指定jdbc的时候需要指定连接字符串。对于数据库的不同连接字符串的格式不同。但是目前发现jdbc连接数据库都是指定库名称的。比如mysql会指定。oracle会指定。sqlserver也会指定。可能是为了安全期间数据库开发商没有提供此类不用指定库名就连接上的方法,主要是为了安全数据...

MySQL持续维持连接状态mysql一直正在链接
常见的连接池实现方式是使用连接池库,例如C3P0和Apache Commons DBCP。这些库提供了一种简单的API,可以用于从连接池中获取连接、释放连接和测试连接的状态。以下是使用Apache Commons DBCP实现连接池的示例代码:import java.sql.Connection;import java.sql.SQLException;import org.apache.commons.dbcp.Basic...

我用flex+java+mysql做,项目,现在基本上就做好了,但是怎么发布啊!在...
你如果是用eclipse或myeclipse开发的,可以直接打包war包(在项目上右键>>导出>>war file),然后把这个war包放到tomcat的webapps目录下,启动tomcat就行了,然后你可以自己测试下,在浏览器输入 “http:\/\/127.0.0.1:8080\/你的项目名称 ” ,记得,一定要有项目名称 。如果让别人访问这个网站,就输入...

提升MySQL使用效率25个必备工具类推荐mysql工具类
pt-query-digest是一款命令行工具,可以对MySQL查询进行分析和优化,从而提升MySQL的性能。11. Percona Toolkit Percona Toolkit是一系列命令行工具,可以帮助用户诊断、优化MySQL数据库的性能。12. mytop mytop是一款命令行工具,可以帮助用户监控MySQL服务器的实时性能,包括查询的数量、执行时间、等待时间等。

用java如何将对mysql排序
两种方式:直接在mysql中排序, 查看一下SQL语句的order by 使用 查询出来的数据,利用排序算法,在内存中排序。什么插入排序,冒泡排序,快速排序等等。个人建议,直接在数据库中排序,简单高效。

java web开发为什么使用的数据库是Mysql而不是Sql Server?
应该算是MS SQL Server支撑的最大的数据应用了。从架构上讲:MySQL:最大的一个特色,就是自由选择存储引擎。每个表都是一个文件,都可以选择合适的存储引擎。常见的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由于这种开放插件式的存储引擎,比如要求数据库与引擎之间的松耦合关系。从而导致文件的一致性...

高效快速实现MySQL上亿表数据复制方法分享mysql上亿表复制
其中OpenReplicator是一个高性能且轻量级的MySQL复制工具,可以在低端服务器上快速实现上亿表数据的复制。下面附上OpenReplicator的使用示例:1. 安装OpenReplicator 下载OpenReplicator源码,解压后执行以下命令:.\/configure make make install 2. 修改OpenReplicator配置 找到OpenReplicator的配置文件并修改(open...

相似回答