amoeba与J2EE工程的对接

在命令行可以用得风生水起的amoeba,要实现放到J2EE工程中,该怎么配置呢?

需要修改jdbc driver。


使用mysql jdbc提供的负载均衡配置再解决amoeba服务器的单点问题

1. jdbc连接字附串中的loadbalance说明

load balance方式有两种负载均衡算法,一种是随机式的轮询算法,另一种是最短响应时间算法

例句: <driver-url>jdbc:mysql:loadbalance://127.0.0.1:8066,10.20.238.164:8066/test</driver-url>

如果两台amoeba都正常时,会将访问的压力分载到 127.0.0.1,10.20.238.164两个机器上,还可以加上roundRobinLoadBalance=true参数,使用roundRobin轮询算法,若是其中一台机器down掉以后,将会自动将不能访问的数据库服务器 踢除,如果还原后将继续进行压力分载。

2. jdbc连接字附串中的replication说明

当后端MYSQL服务器群是master-slave单向一主N从的同步复制机制时,再使用loadbalance方式就会有问题了,因为如果有insert、update等写操作改变了从机的数据就麻烦了,从机不会将变化复制到主机,因此这种情况下需要实现“主读写、从只读”的模式,为了达到这个目的可以使用replication方式,

如下所示:<driver-url>jdbc:mysql:replication://master,slave1,slave2,slave3/test</driver-url>

replication方式可以很安全的实现写操作只发送到主机执行,而从机只会接收到读操作。


之后我再次进行访问,发现amoeba命令行报错

amoeba异常日志显示如下:
java.util.NoSuchElementException: Could not create a validated object, cause: ValidateObject failed
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1191)
at com.meidusa.amoeba.net.poolable.GenericObjectPool.borrowObject(GenericObjectPool.java:381)
at com.meidusa.amoeba.mysql.handler.CommandMessageHandler.startSession(CommandMessageHandler.java:629)
at com.meidusa.amoeba.mysql.handler.MySqlCommandDispatcher.handleMessage(MySqlCommandDispatcher.java:123)
at com.meidusa.amoeba.mysql.net.MysqlClientConnection$2.run(MysqlClientConnection.java:291)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)


很奇怪,就去找各种文档。发现amoeba官方文档上也没有与代码接口的说明。。还好,最后终于在博客中找到了解决方法。

这是由于各客户端访问数据库权限的问题(通过查看$AMOEBA_HOME/logs/root.log)。在各客户端添加访问权限即可,在mysql命令下执行
mysql>GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;


之后再次运行,成功啦~


对了,之前找到一篇amoeba与JPA的对接,先把链接放这,万一以后要用呢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Amoeba:分布式数据库Proxy解决方案 随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用 已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足:集中式处理,势必造成性 能瓶颈;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性 不高;集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数 据库将向分布式数据库发展。 分布式数据库系统的优点: 1、降低费用。分布式数据库在地理上可以式分布的。其系统的结构符合这种分布的要求。允许用 户在自己的本地录用、查询、维护等操作,实行局部控制,降低通信代价,避免集中式需要更高要求 的硬件设备。而且分布式数据库在单台机器上面数据量较少,其响应速度明显提升。 2、提高系统整体可用性。避免了因为单台数据库的故障而造成全部瘫痪的后果。 3、易于扩展处理能力和系统规模。分布式数据库系统的结构可以很容易地扩展系统,在分布式数 据库中增加一个新的节点,不影响现有系统的正常运行。这种方式比扩大集中式系统要灵活经济。在 集中式系统中扩大系统和系统升级,由于有硬件不兼容和软件改变困难等缺点,升级的代价常常是昂 贵和不可行的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值