Amoeba For Mysql

Amoeba For Mysql

Amoeba For Mysql 是 Amoeba项目的子项目。要使用Amoeba ForMysql您必须确保您已符合所有先决条件:

先决条件:

  1. Java SE 1.5或者以上 Amoeba框架是基于JDK1.5开发的,采用了JDK1.5的特性。
  2. 支持Mysql协议版本10(mysql4.1以后的版本)。
  3. 您的网络环境至少运行有一个mysql 4.1以上的服务

如何快速配置:

  1. 配置Server(以下是双核CPU配置,调整线程数可优化性能),配置说明:
    配置项 是否必选 默认值 说明
    port 8066 Amoeba Server绑定的对外端口
    ipAddress Amoeba绑定的IP
    user 客户端连接到Amoeba的用户名
    password 客户端连接到Amoeba所用的密码
    readThreadPoolSize 16 负责读客户端、databa seserver端网络数据包线程数
    clientSideThreadPoolSize 16 负责读执行客户端请求的线程数
    serverSideThreadPoolSize 16 负责处理服务端返回数据包的线程数
  2. Server Tag Configuration
    1. <server>  
    2.     <!-- proxy server绑定的端口 -->  
    3.     <property name="port">2066</property>  
    4.       
    5.     <!-- proxy server绑定的IP -->  
    6.     <property name="ipAddress">127.0.0.1</property>  
    7.       
    8.     <!-- proxy server net IO Read thread size -->  
    9.     <property name="readThreadPoolSize">100</property>  
    10.       
    11.     <!-- proxy server client process thread size -->  
    12.     <property name="clientSideThreadPoolSize">80</property>  
    13.       
    14.     <!-- mysql server data packet process thread size -->  
    15.     <property name="serverSideThreadPoolSize">100</property>  
    16.       
    17.     <!-- 对外验证的用户名 -->  
    18.     <property name="user">root</property>  
    19.       
    20.     <!-- 对外验证的密码 -->  
    21.     <property name="password">password</property>  
    22. </server>  
  3. 配置 ConnectionManager
    需要至少配置一个ConnectionManager,每个ConnectionManager将作为一个线程启动,ConnectionManager负责管理所注册在自身的Conneciton、负责他们的空闲检测,死亡检测、IOEvent
  4. connectionManagerList TagConfiguration
    1. <!--   
    2.         每个ConnectionManager都将作为一个线程启动。  
    3.         manager负责Connection IO读写/死亡检测  
    4.     -->  
    5.     <connectionManagerList>  
    6.         <connectionManager name="defaultManager">  
    7.             <className>com.meidusa.amoeba.net.AuthingableConnectionManager</className>  
    8.         </connectionManager>  
    9.     </connectionManagerList>  
  5. 配置 dbServer,需要至少配置一个dbServer,每个dbServer将是物理数据库Server的衍射

    factoryConfig --目标物理数据库衍射配置情况:

    配置项 是否必选 默认值 说明
    manager 表示该dbServer将注册到指定的ConnectionManager
    port 3306 目标数据库端口
    ipAddress 127.0.0.1 目标数据库IP
    schema 连接初始化的Schema
    user 用于登陆目标数据库的用户名
    password 用于登陆目标数据库的密码
    className 连接工厂实现类(com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory)

    poolConfig -- 连接池配置情况:

    配置项 是否必选 默认值 说明
    className   连接池实现类。默认:com.meidusa.amoeba.net.poolable.PoolableObjectPool
    maxActive 8 最大活动连接数,如果达到最大活动连接数,则会等待
    maxIdle 8 最大的空闲连接数,如果超过则将会关闭多余的空闲连接
    minIdle 0 最小的空闲连接,连接池将保持最小空闲连接,即使这些连接长久不用
    testOnBorrow false 当连接在使用前是否检查连接可用
    testWhileIdle fale 是否检测空闲连接,这个参数启动的时候下列2个参数才有效
    minEvictableIdleTimeMillis 30分钟 连接空闲多少时间将被驱逐(关闭)(timeUnit:ms)
    timeBetweenEvictionRunsMillis -1 用于驱逐空闲连接没间隔多少时间检查一次空闲连接(timeUnit:ms)
  6. dbServer Tag Configuration
    1. <dbServerList>  
    2.     <!--   
    3.         一台mysqlServer 需要配置一个pool,  
    4.         如果多台 平等的mysql需要进行loadBalance,   
    5.         平台已经提供一个具有负载均衡能力的objectPool:com.meidusa.amoeba.mysql.server.MultipleServerPool  
    6.         简单的配置是属性加上 virtual="true",该Pool 不允许配置factoryConfig 、poolConfig  
    7.           
    8.     -->  
    9.     <dbServer name="server1">  
    10.           
    11.         <!-- PoolableObjectFactory实现类 -->  
    12.         <factoryConfig>  
    13.             <className>com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory</className>  
    14.             <property name="manager">defaultManager</property>  
    15.               
    16.             <!-- 真实mysql数据库端口 -->  
    17.             <property name="port">3301</property>  
    18.               
    19.             <!-- 真实mysql数据库IP -->  
    20.             <property name="ipAddress">127.0.0.1</property>  
    21.               
    22.             <!-- 用于登陆mysql的用户名 -->  
    23.             <property name="user">test</property>  
    24.               
    25.             <!-- 用于登陆mysql的密码 -->  
    26.             <property name="password">test</property>  
    27.             <property name="schema">testSchema</property>  
    28.         </factoryConfig>  
    29.           
    30.         <!-- ObjectPool实现类 -->  
    31.         <poolConfig>  
    32.             <className>com.meidusa.amoeba.net.poolable.PoolableObjectPool</className>  
    33.             <property name="maxActive">200</property>  
    34.             <property name="maxIdle">200</property>  
    35.             <property name="minIdle">10</property>  
    36.             <property name="minEvictableIdleTimeMillis">600000</property>  
    37.             <property name="timeBetweenEvictionRunsMillis">600000</property>  
    38.             <property name="testOnBorrow">true</property>  
    39.             <property name="testWhileIdle">true</property>  
    40.         </poolConfig>  
    41.     </dbServer>  
    42. </dbServerList>  
  7. QueryRouter 查询路由配置
  8. 配置项 是否必选 默认值 说明
    className QueryRouter实现类,Amoeba ForMysql(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
    queryRouter Tag Configuration
    1. <queryRouter>  
    2.     <className>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</className>  
    3.     <!--  
    4.     <property name="ruleConfig">./src/conf/rule.xml</property>  
    5.     <property name="functionConfig">./src/conf/functionMap.xml</property>  
    6.     -->  
    7.     <property name="needParse">false</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> 

你可能感兴趣的:(Amoeba For Mysql)