Archive for the 'Amoeba' Category

Amoeba for Mysql 1.3.1-BETA发布

Amoeba for Mysql 1.3.1-BETA 版本发布:

Bug Fix:

1、主要解决 1.3.0 -BETA 版本的amoeba进程的native memory(非JVM heap)使用逐步增长(内存增加速度取决于请求量),并且最终会导致amoeba本身无法响应、或者崩溃

请大家停止使用1.3.0-BETA版本

Amoeba for mysql 1.2.0-RC1

2010-04-05 amoeba-mysql-1.2.0-RC1
1、添加规则函数case、range、增加表达式   (boolean表达式 ? 表达式1: 表达式2)

range函数:
  id in range(12,16,0,1) 表示 id>12 and id<=16
  id in range(12,16,0,0) 表示 id>12 and id<16
  id in range(12,16,1,0) 表示 id>=12 and id<16
  id in range(12,16,1,1) 表示 id>=12 and id<=16

case 函数
   case  (abs(hash(SDID)) % 32)  when range(0,8,1,0) then (isReadStatment ? ’server1′ : ’server1_write’);
           when range(8,16,1,0) then (isReadStatment ? ’server2′ : ’server2_write’);
           when range(16,24,1,0) then ‘(isReadStatment ? ’server3′ : ’server3_write’)';
           else ’server4′
   END CASE;
                          
2、增加bool 类型的规则内置变量 isReadStatment
 用户可以在规则的表达式中使用比如 :  isReadStatment? ‘pool1′ : ‘pool2′
3、稳定性增强,解决了在大并发下需要多个数据库聚合结果集的时候出现数据异常而无法返回给客户端的问题
4、规则属性新增加ruleResult属性,有3种类型(BOOLEAN、POOLNAME、INDEX)
 BOOLEAN — 默认值、结果一定是布尔值,表示执行的sql是否匹配当前的规则
 POOLNAME — 结果是字符串,是由dbpool名字组成的字符串,多个pool以分号间隔(rule中的defaultPools、readPools、writePools无效)
 INDEX — 结果是数字 ,如果>=0 则表示当前规则匹配,并且将相关index的pool返回
 
    <tableRule name=”LIST_FRIEND_GROUP,RELATION_FOLLOW” schema=”sd_relation”
      defaultPools=”server1,server2,server3,server4″>

     <rule name=”rule1″ ruleResult=”POOLNAME”>
                   <parameters>SDID</parameters>
                   <expression><![CDATA[
                           var hashid = abs(hash(SDID)) % 32;
                           case  hashid  when range(0,8,1,0) then (isReadStatment ? 'server1' : 'server1_write');
                                   when range(8,16,1,0) then (isReadStatment ? 'server2' : 'server2_write');
                                   when range(16,24,1,0) then '(isReadStatment ? 'server3' : 'server3_write')';
                                   when range(24,32,1,0) then '(isReadStatment ? 'server4' : 'server4_write')';'
                           END CASE;

                   ]]></expression>
           </rule>
    </tableRule>
5、支持select last_insert_id()/ @@Identity --最后一次自增长的ID

6、规则函数中,增加自定义变量(格式 var 变量名称= 变量值 ;) 比如: var hashid = abs(hash(SDID)) % 32;

Amoeba for mysql 1.1.0-BETA发布

Amoeba for mysql 1.1.0-BETA发布

主要解决以下问题:

1、解决amoeba运行一段时间以后可能出现阻塞

2、修复个别sql解析问题

3、重构了ConnectionManager,去除之前读取数据包采用线池的方式,改成目前采用MultiConnectionManagerWrapper,采用多个(具体多少默认由可用的cpu 核数量决定)ConnectionManager进行负责网络IO, 而每个ConnectionManager都是一个单线程

注意:与之前的amoeba.xml在配置上有点出入(defaultManager 的配置与之前不一样了)

sf 主页下载: http://sourceforge.net/projects/amoeba/

Amoeba for mysql 1.0.2 beta版本发布

修复bug列表:

1、修复无法解析抛出unknown statement(1.0.0新bug)。将无法解析得sql默认在defaultPool中执行

2、修复union关键字无法解析问题

3、修复函数前面! 无法解析问题

4、修复order by 、group by 后面带表达式得sql

关于使用mysql ODBC驱动

很多人使用mysql odbc驱动来连接amoeba。在其中出现各种问题

amoeba目前只解析mysql 协议10 以上版本,或者是mysql 4.1以上版本。

mysql ODBC 3.51 (ODBCAD32.exe)测试通过

mysql ODBC 5.1  (ODBCAD32.exe)测试通过(建议使用)

请大家别用其他连接参数,比如压缩流(个别版本会引起工作不正常)

Amoeba xml配置文件格式改动

即将发布的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又可以作为另外一个规则的时候,这个时候这条规则将被忽略

关于amoeba 性能测试注意的几点

首先感谢很多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的并发连接数尽量相等,这样保证一个客户端连接可以获得一个数据库连接。

Amoeba for Mysql 0.27 released

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.

Amoeba for Mysql 0.26 发布

0.26主要修正bug:

* 修复当sql语句采用preparedstatment 并且参数超过8个的时候出现初始化ExecutePacket 异常.

非常感谢kdfly 提供的bug信息.

希望大家支持Amoeba 发展

Amoeba 发布已经有一段时间了,多少收到amoeba使用的反馈,但反馈还是比较少。如果说bug不多那我很庆幸,还是希望大家遇到bug能够及时跟我联系并且能够反馈自己遇到的问题包括:

Amoeba版本、mysql Server版本、客户端使用的Mysql Driver 跟版本、操作系统、以及当时出现问题的logs文件夹

这样我会在第一时间处理这些bug,更期待代码捐献的人。

 我的email : amoeba.meidusa at gmail.com 或者 piratebase at sina.com

 感谢支持Amoeba发展.

Next Page »