标签:help stp 理解 initial 策略 ast Dimension spl stat
本文只说明如何使用zebra进行分库分表,不涉及原理源码
<bean id="shardDataSource" class="com.dianping.zebra.shard.jdbc.ShardDataSource" init-method="init"> <!-- lion配置方式,需配置shardds.xxx.shard项value为json格式 --> //所以实际对应的rule的配置的key是shardds.trade.shard <property name="ruleName" value="trade"/> <!-- 主动配置分库,lion配置下可选,xml配置必输 --> <property name="dataSourcePool">//这里能做分库的原因就是用一个map就可以配多个数据库了 <map> <entry key="ds0" value-ref="dataSource2"/><!-- 该处的key即为配置里面的dbIndexes --> // ds0可以根据开发习惯起名的,也可以叫db0... </map> </property> <!-- 内部写线程池参数,默认32-64-5000 拒绝策略-报错 --> <property name="parallelCorePoolSize" value="8"/> <property name="parallelMaxPoolSize" value="24"/> <property name="parallelWorkQueueSize" value="1000"/> <!-- 内部读线程池参数,默认32-64-5000 拒绝策略-报错 --> <property name="readWriteSplitPool" value="true"/> <property name="readParallelCorePoolSize" value="24"/> <property name="readParallelMaxPoolSize" value="24"/> <property name="readParallelWorkQueueSize" value="1000"/> <!-- 并行度设置 --> <property name="concurrencyLevel" value="8"/> <!-- 内部执行器设置任务超时时间,默认:1000ms --> <property name="parallelExecuteTimeOut" value="5000"/> </bean>
<bean id="dataSource2" class="com.dianping.zebra.group.jdbc.GroupDataSource" init-method="init"> <property name="jdbcRef" value="trade"/> //这个就是特色了 会根据value里的值,构造key去lion中查询值 <property name="initialPoolSize" value="10"/> <property name="minPoolSize" value="10"/> <property name="maxPoolSize" value="45"/> <property name="checkoutTimeout" value="3000"/> <property name="maxIdleTime" value="1800"/> <property name="idleConnectionTestPeriod" value="1800"/> <property name="acquireRetryAttempts" value="3"/> <property name="acquireRetryDelay" value="300"/> <property name="maxStatements" value="0"/> <property name="maxStatementsPerConnection" value="100"/> <property name="numHelperThreads" value="6"/> <property name="testConnectionOnCheckin" value="false"/> <property name="testConnectionOnCheckout" value="true"/> <property name="maxAdministrativeTaskTime" value="5"/> <property name="preferredTestQuery" value="SELECT 1"/> <property name="extraJdbcUrlParams" value="connectTimeout=1000" /> </bean>
比如在lion中保存jdbc的key为 ds.trade-m1-write.jdbc.url这其中的trade就是用jdbcRef的value拼出来的
注意到上面的ShardDataSource中的一个配置项
<property name="ruleName" value="trade"/>
那么这个ruleName是怎么找到的呢?答案就是到lion上找的
最后会拼出来一个key shardds.trade.shard
找出来的value是这样的。这里配置项很多,只选取一个订单表来说明
{ "tableShardConfigs": [ { "tableName": "tp_order", "dimensionConfigs": [ { "dbRule": "#id#.longValue() % 1", "dbIndexes": "ds0", "tbRule": "(#id#>>17) % 64", "tbSuffix": "everydb:[_0,_63]", "isMaster": true } ], "generatedPK": "id" },
标签:help stp 理解 initial 策略 ast Dimension spl stat
原文地址:https://www.cnblogs.com/juniorMa/p/14818847.html