首页 >数据库 >mysql教程 >Amoeba For MySQL 功能测试让人满意

Amoeba For MySQL 功能测试让人满意

WBOY
WBOY原创
2016-06-07 16:31:501177浏览

同事 Struct Chen 的 Amoeba For MySQL 项目已经 出来不短时间了,可一直没有时间好好体验,最近一直在做一些软件和硬件的功能以及性能相关的测试工作,Amoeba For MySQL自然也将被列入计划之内。 对 Amoeba For MySQL 的测试到目前位置主要还是功能方面的测

同事 Struct Chen 的 Amoeba For MySQL 项目已经 出来不短时间了,可一直没有时间好好体验,最近一直在做一些软件和硬件的功能以及性能相关的测试工作,Amoeba For MySQL自然也将被列入计划之内。

对 Amoeba For MySQL 的测试到目前位置主要还是功能方面的测试,配置了一套四台机器的环境:

Server A: Amoeba Server

Server B: MySQL Master

Server C: MySQL Slave1

Server D: MySQL Slave2

软件环境:RHEL5.2 (X86_64),JAVA 1.5.0_16, Amoeba For MySQL 0.31

测试功能:

1、读写分离
2、数据垂直切分
3、数据水平切分

amoeba.xml配置如下:

?xml版本="1.0"编码="gbk"?>
!DOCTYPE变形虫:配置系统amoeba.dtd>
变形虫:配置xmlns:amoeba="http://amoeba.meidusa .com/">
    
服务器>
        
属性名称="港口">8066属性>
        
属性名称="ip 地址>10.0.38.21属性>
        

        
属性名称="readThreadPoolSize">500属性>
        

        
属性名称="clientSideThreadPoolSize">500属性 >
        

        
属性名称="serverSideThreadPoolSize" >500房产>
        

        
属性 名称="netBufferSize">200 属性>
        

        
属性名称="tcpNoDelay">true属性 >
        
属性名称=" 用户">用户属性>
        
属性名称="密码">密码属性>
    
服务器>
    
    
< ;连接管理器列表>
        
连接管理器名称 ="defaultManager">
            
类名>com.meidusa.amoeba.net.AuthingableConnectionManager类名>
        
连接管理器>
    
connectionmanagerlist>
    
    
数据库服务器列表>
 
      
数据库服务器姓名="师父">
          
工厂配置>
                
类名>com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory类名>
                
物业姓名="经理>defaultManager属性>
                
属性名称="端口>3306属性>
                
属性名称="ip 地址>10.0.38.37属性>
                
属性名称="架构>测试属性>
                
属性名称="用户 ">属性>
                
属性名称="密码">密码属性>               
            
工厂配置>
 
            
poolconfig>
                
类名>com.meidusa .amoeba.net.poolable.PoolableObjectPool类名>
                
属性名称="maxActive">500房产>
                
属性名称="maxIdle"> 200房产>
                
属性名称="minIdle">10属性>
                
属性名称="minEvictableIdleTimeMillis">600000 房产>
                
房产名称="timeBetweenEvictionRunsMillis">600000房产>
                
房产名称="testOnBorrow">true属性>
                
属性名称="testWhileIdle" >true属性>
            
poolconfig>
        
数据库服务器 >
 
        
数据库服务器名称="slave1">
            
工厂配置>
                
类名>com.meidusa.amoeba .mysql.net.MysqlServerConnectionFactory类名>
                
物业姓名="经理"> defaultManager属性>
                
属性名称="端口">3306房产>
                
房产名称="ip 地址">10.0 .38.22财产>
                
财产名称="架构">测试属性>
                
<propertyname="user">rootproperty>
                
<propertyname="password">passwordproperty>               
            
工厂配置>
 
            
poolconfig>
                
类名>com.meidusa .amoeba.net.poolable.PoolableObjectPool类名>
                
属性名称="maxActive">500房产>
                
属性名称="maxIdle"> 200房产>
                
属性名称="minIdle">10属性>
                
属性名称="minEvictableIdleTimeMillis">600000 房产>
                
房产名称="timeBetweenEvictionRunsMillis">600000房产>
                
房产名称="testOnBorrow">true属性>
                
<propertyname="testWhileIdle">trueproperty>
            
poolconfig>
        
dbserver>
 
        
<dbservername="slave2">
            
<factoryconfig>
                ... ...           
            
factoryconfig>
 
            
<poolconfig>
                ... ...
            
poolconfig>
        
dbserver>
        
 
        
<dbservername="virtualSlave"virtual="true">
            
<poolconfig>
                
类名>com.meidusa.amoeba.server.MultipleServerPool 类名>
                

                
属性名称="负载平衡">1属性>
属性名称="poolNames" >slave1,slave2属性>
poolconfig>
        
数据库服务器>
        
    
数据库服务器列表>
    
    
查询路由器>
        
类名>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter类名> ;
        
属性名称="ruleConfig">${amoeba.home}/conf/rule.xml房产>
        
房产名称="functionConfig">${amoeba.home}/conf/functionMap.xml房产>
        
<房产名称="ruleFunctionConfig">${amoeba.home}/conf /ruleFunctionMap.xml属性>
        
<属性名称="LRUMapSize" >1500房产>
        
<属性名称="defaultPool">主人属性>
        
        
<属性名称="writePool">主人属性>
        
<属性名称="readPool" >virtualSlave属性>
        
<属性名称="needParse">true属性>
    
< ;/queryrouter>
变形虫>;

rule.xml配置:

?xml版本="1.0"编码="gbk"?>
!DOCTYPE变形虫:规则系统rule.dtd>
变形虫:rulexmlns:amoeba="http://amoeba.meidusa .com/">
    
表规则名称="test_horiz"架构="测试"defaultPools="master" >
        
规则名称=" 规则1">
            
参数>ID参数>
            
表达式> ![CDATA[ ID 100000000]]>表达式>
            
defaultpools>master默认池>
            
读取池>slave1 读取池>
            
写入池>master写入池>
        
规则>
        
        
<规则名称="规则2">
            
<参数>ID参数>
            
<表情>< ![CDATA[ ID100000001200000000 ]]>表情>
            
<<defaultpools>masterdefaultpools>
            
<写入池>master2写入池>
            
<读取池>slave2 读取池>
        
规则>
        
      
<规则名称="规则 3">
            
<参数>ID参数>
            
<表达式> ![CDATA[ ID > 200000000 ]]>表达式>
            
defaultpools>masterdefaultpools>
        
规则>
 
    
tablerule>
    
tablerule名称="master"架构="测试 "defaultPools="master"/>
    
tablerule名称="slave1 "架构="测试"默认池="slave1"/>
    
<表规则名称="slave2"架构="测试"defaultPools= "slave2"/>
    
表规则名称="master"架构= "t"defaultPools="master"/>
变形虫>

由于第一步主要还只是测试读写分离与数据的垂直切分,所以水平切分的规则设置的很简单,按照ID的范围设置简单的规则。而设置一些更为复杂的规则。

总体测试效果还是比较满意的,预期的功能都一切正常,当然所用于测试的SQL语句也大都比较简单,主要还是根据当前工作中遇到的一些SQL。

这次测试没有进行性能测试,等后面再找时间测试一下,不知道有没有哪位朋友已经进行了相应的性能测试了?性能测试之后就要开始规划应用到上面的某些应用去了

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn