<server>
<property name="port">2066</property>
<property name="ipAddress">127.0.0.1</property>
<property name="readThreadPoolSize">100</property>
<property name="clientSideThreadPoolSize">80</property>
<property name="serverSideThreadPoolSize">100</property>
<property name="user">root</property>
<property name="password">password</property>
</server>
關鍵參數:port 對外端口,readThreadPoolSize 讀網絡 IO 線程,clientSideThreadPoolSize 處理客戶端請求線程,serverSideThreadPoolSize 處理後端返回線程。雙核 CPU 建議按文檔默認值調整。
<connectionManagerList>
<connectionManager name="defaultManager">
<className>com.meidusa.amoeba.net.AuthingableConnectionManager</className>
</connectionManager>
</connectionManagerList>
每個 Manager 作為一個線程啟動,負責註冊連接的空閒檢測、死亡檢測、IO 事件分發。
factoryConfig(工廠配置):
<factoryConfig>
<className>com.meidusa.amoeba.mysql.net.MySQLServerConnectionFactory</className>
<property name="manager">defaultManager</property>
<property name="port">3301</property>
<property name="ipAddress">127.0.0.1</property>
<property name="user">test</property>
<property name="password">test</property>
<property name="schema">testSchema</property>
</factoryConfig>
poolConfig(連接池配置):
<poolConfig>
<className>com.meidusa.amoeba.net.poolable.PoolableObjectPool</className>
<property name="maxActive">200</property>
<property name="maxIdle">200</property>
<property name="minIdle">10</property>
<property name="minEvictableIdleTimeMillis">600000</property>
<property name="timeBetweenEvictionRunsMillis">600000</property>
<property name="testOnBorrow">true</property>
<property name="testWhileIdle">true</property>
</poolConfig>
多台同規格 MySQL 做負載均衡,可用 MultipleServerPool,配置 virtual="true"。
<queryRouter>
<className>com.meidusa.amoeba.mysql.parser.MySQLQueryRouter</className>
<property name="needParse">false</property>
<property name="LRUMapSize">1500</property>
<property name="defaultPool">server1</property>
<!-- 啟用解析後可配置 -->
<!-- property name="ruleConfig">./conf/rule.xml</property -->
<!-- property name="functionConfig">./conf/functionMap.xml</property -->
<!-- property name="writePool">server1</property -->
<!-- property name="readPool">server1</property -->
</queryRouter>
核心屬性:needParse=true 開啟 SQL 解析(支援分表、讀寫分離),ruleConfig 分表規則,functionConfig 函數解析,writePool/readPool 讀寫分離目標池,defaultPool 默認落庫池。
配置完成後啟動 Amoeba,客戶端連接 127.0.0.1:2066 即可透過中間件訪問後端 MySQL 集群。