日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Amoeba配置读写分离

發(fā)布時間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Amoeba配置读写分离 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

讀寫分離配置

本想采用Mysql Proxy來實現(xiàn)讀寫分離,奈何其使用的lua腳本著實讓人頭痛,最后決定采用國人開發(fā)的開源數(shù)據(jù)庫代理中間件Amoeba。使用Amoeba,只需要簡單的xml配置,就可以很容易地實現(xiàn)讀寫分離。

Amoeba處于應(yīng)用程序和數(shù)據(jù)庫服務(wù)器之間,充當(dāng)一個中間代理層。其支持負(fù)載均衡、高可用性、Query過濾、讀寫分離、可路由相關(guān)的query到目標(biāo)數(shù)據(jù)庫、可并發(fā)請求多臺數(shù)據(jù)庫合并結(jié)果。功能很強大。

Amoeba默認(rèn)的端口為8066,實現(xiàn)了Mysql協(xié)議。應(yīng)用程序中只需要修改一個數(shù)據(jù)庫連接就可以實現(xiàn)采用Amoeba來代理數(shù)據(jù)庫訪問。比如:java應(yīng)用中,

假如你原來的jdbc連接字符串為:jdbc:mysql://192.168.168.42:3306/minishop,那么現(xiàn)在,你想

使用Amoeba作為數(shù)據(jù)庫訪問代理,則

只需要將上面連接字符串改為如下(假如Amoeba所在機子IP為192.168.168.88):jdbc:mysql://192.168.168.88:8066/minishop。

Amoeba透明性做的很贊。

主要還是配置Amoeda,但是配置也是相當(dāng)?shù)暮唵??;?/span>

只需要配置兩個文件:

1.conf\dbServers.xml

2.conf\amoeba.xml

配置中各項的含義,可以參考amoeda中文指南,這里不做過多解釋。僅記錄下配置。

dbServers.xml主要配置

[html]?view plaincopy
  • <amoeba:dbServers?xmlns:amoeba="http://amoeba.meidusa.com/">??
  • ??
  • ????????<!--???
  • ????????????Each?dbServer?needs?to?be?configured?into?a?Pool,??
  • ????????????If?you?need?to?configure?multiple?dbServer?with?load?balancing?that?can?be?simplified?by?the?following?configuration:??
  • ?????????????add?attribute?with?name?virtual?=?"true"?in?dbServer,?but?the?configuration?does?not?allow?the?element?with?name?factoryConfig??
  • ?????????????such?as?'multiPool'?dbServer?????
  • ????????-->??
  • ??????????
  • ????<dbServer?name="abstractServer"?abstractive="true">??
  • ????????<factoryConfig?class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">??
  • ????????????<property?name="manager">${defaultManager}</property>??
  • ????????????<property?name="sendBufferSize">64</property>??
  • ????????????<property?name="receiveBufferSize">128</property>??
  • ??????????????????
  • ????????????<!--?mysql?port?-->??
  • ????????????<property?name="port">3306</property>??
  • ??????????????
  • ????????????<!--?mysql?schema?-->??
  • ????????????<property?name="schema">minishop</property>??
  • ??????????????
  • ????????????<!--?mysql?user?-->??
  • ????????????<property?name="user">chenjie</property>??
  • ??????????????
  • ????????????<!--??mysql?password?-->??
  • ????????????<property?name="password">chenjie</property>??
  • ??
  • ????????</factoryConfig>??
  • ??
  • ????????<poolConfig?class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">??
  • ????????????<property?name="maxActive">500</property>??
  • ????????????<property?name="maxIdle">500</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>??
  • ????</dbServer>??
  • ??
  • ????<dbServer?name="master"??parent="abstractServer">??
  • ????????<factoryConfig>??
  • ????????????<!--?mysql?ip?-->??
  • ????????????<property?name="ipAddress">192.168.168.253</property>??
  • ????????</factoryConfig>??
  • ????</dbServer>??
  • ??
  • ????<dbServer?name="slave1"??parent="abstractServer">??
  • ????????<factoryConfig>??
  • ????????????<!--?mysql?ip?-->??
  • ????????????<property?name="ipAddress">192.168.168.119</property>??
  • ????????</factoryConfig>??
  • ????</dbServer>??
  • ??
  • ????<dbServer?name="slave2"??parent="abstractServer">??
  • ????????<factoryConfig>??
  • ????????????<!--?mysql?ip?-->??
  • ????????????<property?name="ipAddress">192.168.168.251</property>??
  • ??
  • ????????</factoryConfig>??
  • ????</dbServer>??
  • ??????
  • ????<dbServer?name="multiPool"?virtual="true">??
  • ????????<poolConfig?class="com.meidusa.amoeba.server.MultipleServerPool">??
  • ????????????<!--?Load?balancing?strategy:?1=ROUNDROBIN?,?2=WEIGHTBASED?,?3=HA-->??
  • ????????????<property?name="loadbalance">1</property>??
  • ??????????????
  • ????????????<!--?Separated?by?commas,such?as:?server1,server2,server1?-->??
  • ????????????<property?name="poolNames">slave1,slave2</property>??
  • ????????</poolConfig>??
  • ????</dbServer>??
  • ??????????
  • </amoeba:dbServers>??
  • amoeba.xml配置:
    [html]?view plaincopy
  • <amoeba:configuration?xmlns:amoeba="http://amoeba.meidusa.com/">??
  • ??
  • ????<proxy>??
  • ??????
  • ????????<!--?service?class?must?implements?com.meidusa.amoeba.service.Service?-->??
  • ????????<service?name="Amoeba?for?Mysql"?class="com.meidusa.amoeba.net.ServerableConnectionManager">??
  • ????????????<!--?port?-->??
  • ????????????<property?name="port">8066</property>??
  • ??????????????
  • ????????????<!--?bind?ipAddress?-->??
  • ??
  • ????????????<property?name="ipAddress">192.168.168.253</property>??
  • ??
  • ??????????????
  • ????????????<property?name="manager">${clientConnectioneManager}</property>??
  • ??????????????
  • ????????????<property?name="connectionFactory">??
  • ????????????????<bean?class="com.meidusa.amoeba.mysql.net.MysqlClientConnectionFactory">??
  • ????????????????????<property?name="sendBufferSize">128</property>??
  • ????????????????????<property?name="receiveBufferSize">64</property>??
  • ????????????????</bean>??
  • ????????????</property>??
  • ??????????????
  • ????????????<property?name="authenticator">??
  • ????????????????<bean?class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">??
  • ??????????????????????
  • ????????????????????<property?name="user">chenjie</property>??
  • ??????????????????????
  • ????????????????????<property?name="password">chenjie</property>??
  • ??????????????????????
  • ????????????????????<property?name="filter">??
  • ????????????????????????<bean?class="com.meidusa.amoeba.server.IPAccessController">??
  • ????????????????????????????<property?name="ipFile">${amoeba.home}/conf/access_list.conf</property>??
  • ????????????????????????</bean>??
  • ????????????????????</property>??
  • ????????????????</bean>??
  • ????????????</property>??
  • ??????????????
  • ????????</service>??
  • ??????????
  • ????????<!--?server?class?must?implements?com.meidusa.amoeba.service.Service?-->??
  • ????????<service?name="Amoeba?Monitor?Server"?class="com.meidusa.amoeba.monitor.MonitorServer">??
  • ????????????<!--?port?-->??
  • ????????????<!--??default?value:?random?number??
  • ????????????<property?name="port">9066</property>??
  • ????????????-->??
  • ????????????<!--?bind?ipAddress?-->??
  • ????????????<property?name="ipAddress">127.0.0.1</property>??
  • ????????????<property?name="daemon">true</property>??
  • ????????????<property?name="manager">${clientConnectioneManager}</property>??
  • ????????????<property?name="connectionFactory">??
  • ????????????????<bean?class="com.meidusa.amoeba.monitor.net.MonitorClientConnectionFactory"></bean>??
  • ????????????</property>??
  • ??????????????
  • ????????</service>??
  • ??????????
  • ????????<runtime?class="com.meidusa.amoeba.mysql.context.MysqlRuntimeContext">??
  • ????????????<!--?proxy?server?net?IO?Read?thread?size?-->??
  • ????????????<property?name="readThreadPoolSize">20</property>??
  • ??????????????
  • ????????????<!--?proxy?server?client?process?thread?size?-->??
  • ????????????<property?name="clientSideThreadPoolSize">30</property>??
  • ??????????????
  • ????????????<!--?mysql?server?data?packet?process?thread?size?-->??
  • ????????????<property?name="serverSideThreadPoolSize">30</property>??
  • ??????????????
  • ????????????<!--?per?connection?cache?prepared?statement?size??-->??
  • ????????????<property?name="statementCacheSize">500</property>??
  • ??????????????
  • ????????????<!--?query?timeout(?default:?60?second?,?TimeUnit:second)?-->??
  • ????????????<property?name="queryTimeout">60</property>??
  • ????????</runtime>??
  • ??????????
  • ????</proxy>??
  • ??????
  • ????<!--???
  • ????????Each?ConnectionManager?will?start?as?thread??
  • ????????manager?responsible?for?the?Connection?IO?read?,?Death?Detection??
  • ????-->??
  • ????<connectionManagerList>??
  • ????????<connectionManager?name="clientConnectioneManager"?class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper">??
  • ????????????<property?name="subManagerClassName">com.meidusa.amoeba.net.ConnectionManager</property>??
  • ????????????<!--???
  • ??????????????default?value?is?avaliable?Processors???
  • ????????????<property?name="processors">5</property>??
  • ?????????????-->??
  • ????????</connectionManager>??
  • ????????<connectionManager?name="defaultManager"?class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper">??
  • ????????????<property?name="subManagerClassName">com.meidusa.amoeba.net.AuthingableConnectionManager</property>??
  • ??????????????
  • ????????????<!--???
  • ??????????????default?value?is?avaliable?Processors???
  • ????????????<property?name="processors">5</property>??
  • ?????????????-->??
  • ????????</connectionManager>??
  • ????</connectionManagerList>??
  • ??????
  • ????????<!--?default?using?file?loader?-->??
  • ????<dbServerLoader?class="com.meidusa.amoeba.context.DBServerConfigFileLoader">??
  • ????????<property?name="configFile">${amoeba.home}/conf/dbServers.xml</property>??
  • ????</dbServerLoader>??
  • ??????
  • ????<queryRouter?class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">??
  • ????????<property?name="ruleLoader">??
  • ????????????<bean?class="com.meidusa.amoeba.route.TableRuleFileLoader">??
  • ????????????????<property?name="ruleFile">${amoeba.home}/conf/rule.xml</property>??
  • ????????????????<property?name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property>??
  • ????????????</bean>??
  • ????????</property>??
  • ????????<property?name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property>??
  • ????????<property?name="LRUMapSize">1500</property>??
  • ??
  • ????????<property?name="defaultPool">master</property>??
  • ??????????
  • ??
  • ????????<property?name="writePool">master</property>??
  • ????????<property?name="readPool">multiPool</property>??
  • ??
  • ????????<property?name="needParse">true</property>??
  • ????</queryRouter>??
  • </amoeba:configuration>?
  • 至此,Mysql主從熱備和讀寫分離配置完畢。但是,具體應(yīng)用到生產(chǎn)環(huán)境究竟如何,還有待測試和考察。后來測試一主多從,又加入了一臺Mysql從數(shù)據(jù)庫服務(wù)器,這就是為什么上面amoeba配置中多了一個IP為119的原因。

    總結(jié)

    以上是生活随笔為你收集整理的Amoeba配置读写分离的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。