Amoeba 高级特性

本节讲述如何使用Amoeba高级特性。负载均衡、数据切分、如何编写数据切分规则等。

  1. 负载均衡特性
    Amoeba 不仅仅提供普通的连接池功能,而还提供了虚拟的连接池。
    Virtual DbServer Configuration
    1. <dbserver name="multiPool" virtual="true">  
    2.     <poolconfig>  
    3.         <classname>com.meidusa.amoeba.server.MultipleServerPool</classname>  
    4.         <!-- 负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED -->  
    5.         <property name="loadbalance">1</property>  
    6.         <!-- 参与该pool负载均衡的poolName列表以逗号分割 -->  
    7.         <property name="poolNames">server1,server2</property>  
    8.     </poolconfig>  
    9. </dbserver>  

    Virtual dbserver 参数配置说明:
    配置项 是否必选 默认值 说明
    className   默认值:com.meidusa.amoeba.server.MultipleServerPool
    loadbalance 1 负载均衡参数 1=ROUNDROBIN(轮询方式) , 2=WEIGHTBASED(根据当前活动连接数。活动连接少的优先)
    poolNames 以逗号分割的pool name list(比如:server1,server2)
    virtual false 如果该值为true,则className 默认值为com.meidusa.amoeba.server.MultipleServerPool
  2. 开启QueryRouter 查询功能,配置规则文件
    queryRouter Tag Configuration
    1. <queryRouter>  
    2.     <className>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</className>  
    3.       
    4.     <property name="ruleConfig">./conf/rule.xml</property>  
    5.     <property name="functionConfig">./conf/functionMap.xml</property>  
    6.       
    7.     <property name="needParse">true</property>  
    8.     <property name="LRUMapSize">1500</property>  
    9.     <property name="defaultPool">server1</property>  
    10.       
    11.     <property name="writePool">server1</property>  
    12.     <property name="readPool">server1</property>  
    13.       
    14. </queryRouter>  
    配置项 是否必选 默认值 说明
    className QueryRouter实现类,Amoeba For Mysql(com.meidusa.amoeba.mysql.parser.MysqlQueryRouter)。
    functionConfig 用于解析sql 函数的配置文件,如果不配置则将不解析包含函数sql或者解析的不完整。
    ruleConfig 数据切分规则配置文件,如果不配置则sql数据切分功能将不能用
    needParse true 是否对 sql进行parse,如果false 则将不能使用数据切分、读写分离等功能
    defaultPool needParse=false、无法解析query、不满足切分规则的、writePool|readPool == null情况。 所有sql 将在默认得dbServer上面执行。(必选)
    writePool 启用needParse 功能,并且没有匹配到数据切分规则,则 update、insert、delete 语句将在这个pool中执行
    readPool 启用needParse 功能,并且没有匹配到数据切分规则,则 select 语句将在这个pool中执行
    LRUMapSize 1000 statment cache ,存放 sql 解析后得到的statment