Amoeba for Aladdin 0.5 版本发布
该版本主要是做了bug fix
1、修正sql中包含Escape 关键字解析出错
2、amoeba.xml dtd升级
3、规则模块进行了重构。
该版本主要是做了bug fix
1、修正sql中包含Escape 关键字解析出错
2、amoeba.xml dtd升级
3、规则模块进行了重构。
JdbcConnectionFactory 该factory提供 java.sql.Connection 对象 。
1、属性Driver: 也就是jdbc 驱动类,一般数据库都支持jdbc driver。以方便使用java语言作为开发工具的使用者。
如果配置了相应数据库的Driver,则必须将类库放到lib下面,才能被amoeba装载
2、属性url :该jdbc数据库连接的有效连接地址,诸如mysql的 url(jdbc:mysql://127.0.0.1:3306/test)
3、properties:这个属性是jdbc Driver的属性,比如 user、password还有一些driver特定的属性。
4、com.meidusa.amoeba.jdbc.DriverWrapper 如果你的应用程序跟数据库之间需要特殊的编码转换,那么这个用于处理客户端、与数据库编码相当灵活。
这个类有2个属性:
clientEncoding –客户端往TCP包写入字节码的编码
serverEncoding –数据库返回字节码数据的编码
<!– PoolableObjectFactory实现类 –>
<factoryConfig class=”com.meidusa.amoeba.jdbc.JdbcConnectionFactory”>
<!– driver name, pls put mysql jdbc driver into lib folder –>
<property name=”driver”>
<bean class=”com.mysql.jdbc.Driver”/>
</property>
<!–
<property name=”driver”>
<bean class=”com.meidusa.amoeba.jdbc.DriverWrapper”>
<property name=”driver”>
<bean class=”oracle.jdbc.driver.OracleDriver”/>
</property>
<property name=”clientEncoding”>gbk</property>
<property name=”serverEncoding”>ISO_8859_1</property>
</bean>
</property>
–>
<!– jdbc url. –>
<property name=”url”>jdbc:mysql://127.0.0.1:3306/test</property>
<!– url –>
<property name=”properties”>
<bean class=”java.util.Properties”>
<!– 用于登陆mysql的用户名 –>
<property name=”user”>root</property>
<!– for mysql driver –>
<property name=”characterEncoding”>utf8</property>
<!– 用于登陆mysql的密码 –>
<!–
<property name=”password”>password</property>
–>
</bean>
</property>
</factoryConfig>
-EOF-
即将发布的amoeba for mysql 0.32 / amoeba for aladdin 0.4 在配置文件上面做了升级,目前只有function.dtd做了不兼容的改动
修改的项目:
1、connectionManager、factoryConfig、poolConfig、queryRouter 增加classs属性,即将去除 className
<connectionManager name=”defaultManager” class=”com.meidusa.amoeba.net.AuthingableConnectionManager”>
<className>com.meidusa.amoeba.net.AuthingableConnectionManager</className>
</connectionManager >
2、property元素增加bean element,如下格式。这种设置除server中的property。
<property name=”runnerParameters”>
<bean class=”java.util.Properties”>
<property name=”xmlTable”>${amoeba.home}/conf/table.xml</property>
</bean>
</property>
3、rule.xml dtd格式改动,parameters增加 excludes属性,如下
<rule name=”rule1″>
<parameters excludes=”NAME”>ID,AGE</parameters>
<expression><![CDATA[ ID <= 1000000 and age > 12]]></expression>
<defaultPools>server1</defaultPools>
<readPools>server1</readPools>
<writePools>server1</writePools>
</rule>
该设置主要是当sql条件中包含了name=’abc’ ,而name又可以作为另外一个规则的时候,这个时候这条规则将被忽略
1、性能提升
首先感谢sun ISV Engineering Jenny在测试amoeba性能花了不少时间。
针对 sun 公司ISV Engineering Jenny 提出了一个系统write函数调用频繁得问题。在0.31版本上面做了一个延迟写数据包直到设定得ByteBuffer 满了或者强制写 才调用Write 将数据写出去,这个动作带来整体响应速度将提升20%左右。
2、修复select …. for update sql语句解析出错的bug
3、com.meidusa.amoeba.server.MultipleServerPool 负载参数增加 HA 方式,设定方式
1=ROUNDROBIN , 2=WEIGHTBASED ,3=High Availability
<property name=”loadbalance”>3</property>
这种方式主要是为了writable database <-> writable database采用复制,并且需要避免同时写操作。因此采用HA的方式。这种方式只有一个pool对外提供服务,而另外其他pool 在 第一台pool出现故障或者shutdown以后才会开始对外服务。
-EOF-
首先感谢很多amoeba for mysql的使用者对amoeba投入了生产环境的使用,也有些正在做一些性能上面的测试,这儿我建议能够提升amoeba性能的几点:
1、在可用性测试已经完成的情况下,建议将log4j.xml 中关于日志输出level为debug的全部设置成warn或者error 级别。
日志是非常消耗系统性能的,在没有必要的情况下可以不使用debug。
2、性能测试环境: amoeba 对 cpu的要求比较高,建议将amoeba配置在多核/多cpu的机器上面。
3、amoeba多线程配置,默认只有20~30个线程,在多核/多cpu 的情况下建议开大。
4、amoeba与数据库连接数配置:在性能测试并且客户端并发量不大的情况下,建议将amoeba与数据库的连接数跟客户端与mysql的并发连接数尽量相等,这样保证一个客户端连接可以获得一个数据库连接。
Aladdin项目是针对企业数据库整合而产生的另外一种数据库切分、读写分离、负载均衡的中间件产品,是amoeba的子产品。沿袭了amoeba其他产品的特性(amoeba for mysql)。
Aladdin产品简介:
与Amoeba for mysql 类似,客户端连接aladdin必须用mysql 协议,之所以用mysql协议,主要是想借助mysql使用的广泛程度以及对各种开发语言的支持,因此aladdin对客户端采取了mysql协议以方便适应广泛的使用者。aladdin后端可以同时连接各种数据库。只要这些数据库提供jdbc驱动。aladdin的出现可以解决企业在数据库整合上面提供积极的帮助。使用者不需要知道后端到底使用了什么类型的数据库、数据库的物理地址什么,这些由aladdin来分析sql语句,并且获得相应的要查询的表跟条件,然后由这些规则结合这些条件进行路由到相关的物理数据库。

主要解决困扰几个月的timeout问题。
主要是mysql server 要求客户端在认证身份的时候采用老的加密方式,而这个问题恰恰是我没考虑到的,因此导致amoeba 没有收到mysql server返回的ok数据包,直到认证超时。今天总算将这个bug处理了!
在此非常感谢网友刘雅猛的辛苦测试,多次抽出宝贵的时间为amoeba进行测试跟反馈。
Amoeba for Mysql 0.27 已经发布.
主要在性能上面提升了将近20%
目前在多核/多cpu上面进行测试,性能比以前的版本均有很大的提升.
与mysql-proxy性能相比,我目前不好作出评价. 目前整体性能比较不错.
另外0.27修复了一个小bug在第一次访问amoeba的时候返回的错误字符集编码,第二次访问就正确了,目前此bug已经修复.
amoeba 目前进展方面:
amoeba for oracle 在与oracle认证这块协议已经分析完毕.
Oracle协议分析难度相当的大,在没有源代码跟相关的协议文档情况下, 目前Amoeba for Oracle 对于OCI驱动协议包还不完善,无法兼容OCI驱动.
希望以后能够得到Oracle支持,将协议的分析完善.
下一阶段将设计Amoeba Manager.
0.26主要修正bug:
* 修复当sql语句采用preparedstatment 并且参数超过8个的时候出现初始化ExecutePacket 异常.
非常感谢kdfly 提供的bug信息.
Amoeba 发布已经有一段时间了,多少收到amoeba使用的反馈,但反馈还是比较少。如果说bug不多那我很庆幸,还是希望大家遇到bug能够及时跟我联系并且能够反馈自己遇到的问题包括:
Amoeba版本、mysql Server版本、客户端使用的Mysql Driver 跟版本、操作系统、以及当时出现问题的logs文件夹
这样我会在第一时间处理这些bug,更期待代码捐献的人。
我的email : amoeba.meidusa at gmail.com 或者 piratebase at sina.com
感谢支持Amoeba发展.