web伺服器一般都是乙個伺服器連線乙個資料庫的架構,可是隨著系統的使用,該架構已經不能滿足需求了,這裡使用的是c3p0的資料庫水平擴容。
spring核心配置:
id="propertyconfigurer"
class="org.springframework.beans.factory.config.propertyplaceholderconfigurer">
name="location">
classpath:/jdbc.propertiesvalue>
property>
bean>
id="datasource1"
class="com.mchange.v2.c3p0.combopooleddatasource">
name="driverclass"
value="$" />
name="jdbcurl"
value="$" />
name="user"
value="$" />
name="password"
value="$" />
name="autocommitonclose"
value="true"/>
name="initialpoolsize"
value="$"/>
name="minpoolsize"
value="$"/>
name="maxpoolsize"
value="$"/>
name="maxidletime"
value="$"/>
name="acquireincrement"
value="$"/>
name="maxidletimeexcessconnections"
value="$"/>
bean>
id="datasource2"
class="com.mchange.v2.c3p0.combopooleddatasource">
name="driverclass"
value="$" />
name="jdbcurl"
value="$" />
name="user"
value="$" />
name="password"
value="$" />
name="autocommitonclose"
value="true"/>
name="initialpoolsize"
value="$"/>
name="minpoolsize"
value="$"/>
name="maxpoolsize"
value="$"/>
name="maxidletime"
value="$"/>
name="acquireincrement"
value="$"/>
name="maxidletimeexcessconnections"
value="$"/>
bean>
...bean>
id="datasources"
class="com.caland.sun.client.datasources.defaultdatasourceservice">
name="datasourcedescriptors">
class="com.caland.sun.client.datasources.datasourcedescriptor">
name="identity"
value="partition1"/>
name="targetdatasource"
ref="datasource1"/>
name="targetdetectordatasource"
ref="datasource1"/>
name="standbydatasource"
ref="datasource4"/>
name="standbydetectordatasource"
ref="datasource4"/>
bean>
class="com.caland.sun.client.datasources.datasourcedescriptor">
name="identity"
value="partition2"/>
name="targetdatasource"
ref="datasource2"/>
name="targetdetectordatasource"
ref="datasource2"/>
name="standbydatasource"
ref="datasource5"/>
name="standbydetectordatasource"
ref="datasource5"/>
bean>
class="com.caland.sun.client.datasources.datasourcedescriptor">
name="identity"
value="partition3"/>
name="targetdatasource"
ref="datasource3"/>
name="targetdetectordatasource"
ref="datasource3"/>
name="standbydatasource"
ref="datasource6"/>
name="standbydetectordatasource"
ref="datasource6"/>
bean>
set>
property>
name="hadatasourcecreator">
class="com.caland.sun.client.datasources.ha.failoverhotswapdatasourcecreator">
name="detectingsql"
value="update caland set timeflag=current_timestamp()"/>
bean>
property>
bean>
id="hashfunction"
class="com.caland.core.dao.router.hashfunction"/>
id="internalrouter"
class="com.caland.sun.client.router.config.interalrouterxmlfactorybean">
name="functionsmap">
key="hash"
value-ref="hashfunction">
entry> 指定使用哪個方法
map>
property>
name="configlocations"> 指定配置路由的xml路徑
classpath:/dbrule/sharding-rules-on-namespace.xmlvalue>
list>
property>
bean>
路由的配置檔案
usernamespace>
partition1shards>
rule>
usernamespace>
partition2shards>
rule>
usernamespace>
partition3shards>
rule>
rules>
分庫分表與讀寫分離
隨著業務的發展,使用者數量與資料數量不斷增加,迫使進行分庫分表。所謂分表就是指將乙個表的資料存放到多個表,然後查詢時候按id的範圍到對應的表裡去查。因為資料太多,單個表已經不足以儲存。所謂分庫就是將資料存放到多個資料庫中,訪問時訪問其中乙個庫。社群已經黃了,基本不用了。不支援聯表,且依賴diamon...
mycat實現分庫分表讀寫分離
mysql8.0 主從同步配置 本地部署mycat的包為 mycat server 1.6.7.6 release 20201112144313 mac.tar.gz 2 解壓mycat包到指定目錄 tar zvf mycat server 1.6.7.6 release 2020111214431...
django orm 讀寫分離,分庫分app
1,讀寫分離 第一步 在settings下面配置 databases 第二步 資料庫遷移。python manage.py migrate 預設使用default的資料配置,完整的寫法為 python manage.py migrate database default 同樣的遷移完預設的資料庫後,...