文档章节

heisenberg 如何配置

brucexx
 brucexx
发布于 2014/11/18 11:24
字数 1260
阅读 601
收藏 1

 工作很忙,但是邮件,qq等来咨询的人比较多,所以在这里再发一个阉割后生产的配置供大家参考

首先核心配置就三个文件server.xml,schema.xml,rule.xml,还有hsb.properties,用于对应用服务器配置

hsb的目录结构如下:

heisenberg

    /bin 启动脚本所在目录

    /conf  classpath所在目录

        默认配置文件所在  对应的hsb.properties和log4j.xml必须要在conf下   

        server.xml,schema.xml,rule.xml 这三个默认在下面

    /lib  

    /logs    默认日志所在目录

startup.sh -h可以显示对应的参数 

startup.sh -c  可以指定对应的配置folder,比如有几套系统,-l 可以指定输出日志目录,和之前一样

server.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<heisenberg:server xmlns:heisenberg="https://github.com/brucexx/heisenberg">
  
  <!-- 系统参数定义,服务端口、管理端口,处理器个数、线程池等。 -->
  <system>
    <property name="serverPort">4320</property>
    <property name="managerPort">4321</property>
    <property name="initExecutor">16</property>
    <property name="timerExecutor">4</property>
    <property name="managerExecutor">4</property>
    <property name="processors">8</property>
    <property name="processorHandler">16</property>
    <property name="processorExecutor">16</property>
    <property name="clusterHeartbeatUser">_HEARTBEAT_USER_</property>
    <property name="clusterHeartbeatPass">_HEARTBEAT_PASS_</property>
    <property name="dataNodeHeartbeatPeriod">15000</property>
  </system>


 
  <!--用户名密码等   -->
  <user name="pay">
    <property name="password">brucexx</property>
    <property name="schemas">wms_shard</property>
  </user>

    <!-- 
  <user name="pay">
    <property name="needEncrypt">true</property>
    <property name="password">lTrRlcGA0jOuucx8z4pCKj1Qg4GuqQNj2FDT2x9B4P4TEO/O5kj9TxPgzT2JgqY6jo8XsVSvzVqZ4W5DJc1gCA==</property>
    <property name="schemas">wms_shard</property>
  </user>

  -->

</heisenberg:server>

其实加密密码是动态的,大家可根据自己的安全级别来设定,但是要指定hsb.properties里的公钥

publicKey=xxxxx

大家如果要使用,可以下载源码 查看EncryptGen这个文件去生成对应的密文,加密方法RSA 位数512,至于如何生成对应的密钥对,我这里就不说了

schema.xml

<?xml version="1.0" encoding="UTF-8"?>

<heisenberg:schema xmlns:heisenberg="https://github.com/brucexx/heisenberg">
	<schema name="wms_shard">
  		<table name="t_asset_deal_type" dataNode="wmsDN$0-99" rule="rule1" />
		<table name="t_supplier_account_info" dataNode="wmsDN$0-99" rule="rule1" />
		<table name="t_user_account_info" dataNode="wmsDN$0-99" rule="rule1" />
		<table name="t_user_bank_sign_request_info" dataNode="wmsDN$0-99" rule="rule2" />
		<table name="t_user_bind_bank_info" dataNode="wmsDN$0-99" rule="rule1" />
		<table name="t_user_fund_sign_request_info" dataNode="wmsDN$0-99" rule="rule2" />
		<table name="t_user_id_map" dataNode="wmsDN$0-99" rule="rule3" />
		<table name="t_user_investment_info" dataNode="wmsDN$0-99" rule="rule4" />
		<table name="t_cert_info_upload_log" dataNode="wmsDN_Single" rule="rule5" />
		<table name="t_cert_file_upload_summary_info" dataNode="wmsDN_Single" rule="rule6" />
		<table name="t_user_bind_card_replace_info" dataNode="wmsDN_Single" rule="rule7" />
		<table name="t_province_city_info" dataNode="wmsDN_Single" rule="rule7" />
	</schema>

	<dataNode name="wmsDN">
		<property name="dataSource">
			<dataSourceRef>wmsDS$0-99</dataSourceRef>
		</property>
		<property name="poolSize">256</property>
		<property name="heartbeatSQL">select user()</property>
	</dataNode>

	<dataSource name="wmsDS" type="mysql">
		<property name="location">
			<location>127.0.0.1:5506/wms_db_$00-99</location>
		</property>
		<property name="user">work_pay</property>
		<property name="password">123456</property>
	</dataSource>

	
	 <!-- 单库的 -->
	<dataNode name="wmsDN_Single">
		<property name="dataSource">
			<dataSourceRef>wmsDS_Single</dataSourceRef>
		</property>
		<property name="poolSize">256</property>
		<property name="heartbeatSQL">select user()</property>
	</dataNode>

	<dataSource name="wmsDS_Single" type="mysql">
		<property name="location">
			<location>127.0.0.1:5506/wms_db</location>
		</property>
		<property name="user">work_pay</property>
		<property name="password">123456</property>
	</dataSource>

 
	
</heisenberg:schema>

里面的密码也是支持加密的,和server.xml里一样,加个neeEncrypt,这里不再累述

rule.xml

<?xml version="1.0" encoding="UTF-8"?>

<rule>
	<tableRule name="rule1">
		<columns>F_USER_ID</columns>
		<dbRuleList>
			<dbRule><![CDATA[
				#set($sub_str=$F_USER_ID%1000+"")
				$!stringUtil.substring($stringUtil.alignRights($sub_str,3,"0"),0,2)]]>
			</dbRule>
		</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[
				#set($sub_str=$F_USER_ID%1000+"")
				#set($sub_str=$stringUtil.alignRights($sub_str,3,"0"))
				#set($db_flag=$stringUtil.substring($sub_str,0,2))
				#set($tb_flag=$stringUtil.substring($sub_str,2))
				#set($prefix="_"+$db_flag+"_"+$tb_flag)##
				$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
				<![CDATA[
						def map = [:];
						for (int i=0; i<100; i++) {
							def list = [];
							for (int j=0; j<10; j++) {
								def k=i<10?"0"+i:i;
								list.add("_"+k+"_"+j);
							}
							 map.put(i,list);
						};
						return map; 
				]]>
		</tbPrefix>
	</tableRule>
	<tableRule name="rule2">
		<columns>F_APPLICATION_NO</columns>
			<dbRuleList>
				<dbRule><![CDATA[
					$!stringUtil.substring($F_APPLICATION_NO,-3,-1)]]>
				</dbRule>
			</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[
				#set($db_flag=$!stringUtil.substring($F_APPLICATION_NO,-3,-1))
				#set($tb_flag=$!stringUtil.substring($F_APPLICATION_NO,-1))
				#set($prefix="_"+$db_flag+"_"+$tb_flag)##
				$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
				<![CDATA[
						def map = [:];
						for (int i=0; i<100; i++) {
							def list = [];
							for (int j=0; j<10; j++) {
								def k=i<10?"0"+i:i;
								list.add("_"+k+"_"+j);
							}
							 map.put(i,list);
						};
						return map; 
				]]>
		</tbPrefix>
	</tableRule>
	<tableRule name="rule3">
		<columns>F_UID</columns>
		<dbRuleList>
			<dbRule><![CDATA[
				#set($sub_str=$F_UID%1000+"")
				$!stringUtil.substring($stringUtil.alignRights($sub_str,3,"0"),0,2)]]>
			</dbRule>
		</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[
				#set($sub_str=$F_UID%1000+"")
				#set($sub_str=$stringUtil.alignRights($sub_str,3,"0"))
				#set($db_flag=$stringUtil.substring($sub_str,0,2))
				#set($tb_flag=$stringUtil.substring($sub_str,2))
				#set($prefix="_"+$db_flag+"_"+$tb_flag)##
				$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
				<![CDATA[
						def map = [:];
						for (int i=0; i<100; i++) {
							def list = [];
							for (int j=0; j<10; j++) {
								def k=i<10?"0"+i:i;
								list.add("_"+k+"_"+j);
							}
							 map.put(i,list);
						};
						return map; 
				]]>
		</tbPrefix>
	</tableRule>
	<tableRule name="rule4">
		<columns>F_CERTIFICATE_CODE</columns>
		<dbRuleList>
			<dbRule><![CDATA[
				#set($db_flag=$!stringUtil.crc32($F_CERTIFICATE_CODE))
				$!stringUtil.substring($db_flag,-3,-1)]]>
			</dbRule>
		</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[
				#set($sub_str=$!stringUtil.crc32($F_CERTIFICATE_CODE))
				#set($db_flag=$!stringUtil.substring($sub_str,-3,-1))
				#set($tb_flag=$!stringUtil.substring($sub_str,-1))
				#set($prefix="_"+$db_flag+"_"+$tb_flag)##
				$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
				<![CDATA[
						def map = [:];
						for (int i=0; i<100; i++) {
							def list = [];
							for (int j=0; j<10; j++) {
								def k=i<10?"0"+i:i;
								list.add("_"+k+"_"+j);
							}
							 map.put(i,list);
						};
						return map; 
				]]>
		</tbPrefix>
	</tableRule>
	<tableRule name="rule5">
		<columns>F_SP_ID</columns>
		<dbRuleList>
			<dbRule><![CDATA[0]]>
			</dbRule>
		</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[
				#set($tb_flag=$F_SP_ID+"")
				#set($prefix="_"+$tb_flag)##
				$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
				<![CDATA[
						def map = [:];
						def list = [];
						for (int i=0; i<100; i++) {
							list.add("_"+i);
						};
						map.put(0,list);
						return map; 
				]]>
		</tbPrefix>
	</tableRule>
	<tableRule name="rule6">
		<columns>F_USER_ID</columns>
		<dbRuleList>
			<dbRule><![CDATA[
				#set($sub_str=$F_USER_ID%1000+"")
				$!stringUtil.substring($stringUtil.alignRights($sub_str,3,"0"),0,2)]]>
			</dbRule>
		</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
		</tbPrefix>
	</tableRule>
	<tableRule name="rule7">
		<columns>F_FAKE_PARTITION_ID</columns>
		<dbRuleList>
			<dbRule><![CDATA[
				#set($sub_str=$F_FAKE_PARTITION_ID%1000+"")
				$!stringUtil.substring($stringUtil.alignRights($sub_str,3,"0"),0,2)]]>
			</dbRule>
		</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
		</tbPrefix>
	</tableRule>
</rule>

大家对号入坐,自己看

然后一个表里有多个字段想命中,

<tableRule name="rule1" forceHit="true">
		<columns>F_TRANS_ID,F_BUYER_USER_ID</columns>
		<dbRuleList>
			<dbRule><![CDATA[$!stringUtil.substring($F_TRANS_ID,-3,-1)]]></dbRule>
			<dbRule><![CDATA[
				#set($sub_str=$F_BUYER_USER_ID%1000+"")
				$!stringUtil.substring($stringUtil.alignRights($sub_str,3,"0"),0,2)]]>
			</dbRule>
		</dbRuleList>
		<tbRuleList>
			<tbRule><![CDATA[
				#set($db_flag=$!stringUtil.substring($F_TRANS_ID,-3,-1))
				#set($tb_flag=$!stringUtil.substring($F_TRANS_ID,-1))
				#set($prefix="_"+$db_flag+"_"+$tb_flag)##
				$!prefix]]>
			</tbRule>
			<tbRule><![CDATA[
				#set($sub_str=$F_BUYER_USER_ID%1000+"")
				#set($sub_str=$stringUtil.alignRights($sub_str,3,"0"))
				#set($db_flag=$stringUtil.substring($sub_str,0,2))
				#set($tb_flag=$stringUtil.substring($sub_str,2))
				#set($prefix="_"+$db_flag+"_"+$tb_flag)##
				$!prefix]]>
			</tbRule>
		</tbRuleList>
		<tbPrefix>
				<![CDATA[	 
						def map = [:];
						for (int i=0; i<100; i++) {
							def list = [];
							for (int j=0; j<10; j++) {
								def k=i<10?"0"+i:i;
								list.add("_"+k+"_"+j);
							}
							map.put(i,list);
						};
						return map; 
				]]>
		</tbPrefix>
	</tableRule>























© 著作权归作者所有

共有 人打赏支持
brucexx
粉丝 25
博文 2
码字总数 3759
作品 1
浦东
加载中

评论(1)

brucexx
brucexx
如果要设置密码加密:

1.在  <dataSource name="dsMaster" type="mysql">
   <property name="location">
    <location>127.0.0.1:8801/test$1-2</location> </property>
<property name="needEncrypt">true</property>
    <property name="user">root</property>
    <property name="password">见第3</property>
    <property name="sqlMode">STRICT_TRANS_TABLES</property>
  </dataSource>

2.<user name="root">
<property name="needEncrypt">true</property>
    <property name="password">见第3</property>
    <property name="schemas">bank_data_master_shard</property>
  </user>

3.使用 com.baidu.hsb.security.KeyPairGen 的encrypt(null,"your orignal password ")方法就会生成对应的密钥
分享下去年底写的mysql分库分表中间件heisenberg

目前维护在github上了,googlecode稳定性太差 https://github.com/brucexx/heisenberg 其优点: 分库分表与应用脱离,分库表如同使用单库表一样 减少db 连接数压力 热重启配置 可水平扩容 遵...

brucexx
2014/04/12
0
20
百度mysql分库分表中间件服务器--heisenberg

heisenberg 是百度的熊照同学(id:brucexx)编写的一款基于MySQL协议之上的分库分表中间件服务器,支持各种灵活(velocity脚本自定义)的分库分表规则,做到应用和分库分表相隔离,并且为mysql...

叶秀兰
2014/04/12
6.4K
0
Mycat学习实战-Mycat初识

Mycat学习实战-Mycat初识 Mycat学习实战-Mycat初识 1. Mycat是什么 2. Mycat与其他中间件的区别 3. Mycat能解决的问题 4. Mycat核心概念 5. Mycat文件夹以及文件介绍 1. Mycat是什么 Mycat是...

ygqygq2
06/29
0
0
Fedora Linux 20 命名为 Heisenbug

Red Hat资助的社区发行版Fedora投票选出了Fedora 20的发布名字:Heisenbug。Heisenbug这一名字源自物理学家Werner Heisenberg,特指一类程序bug,当有人试图对其进行研究之后它会消失或改变行...

oschina
2013/09/04
3.6K
27
JDBC技术预研选型依据【转】

http://songwie.com/articlelist/44 mycat分布式mysql中间件(mysql中间件研究) 发表回复 mysql中间件研究( Atlas,cobar,TDDL,mycat,heisenberg,Oceanus,vitess,OneProxy ) mysql-prox......

强子哥哥
2016/03/08
170
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

springmvc入门之映射处理器(一)

1.简析映射处理器 在spring mvc中,使用映射处理器可以把web请求映射到正确的处理器上,spring内置了很多映射处理器,而且我们也可以自定义映射处理器。下面的实例展示spring中最常用的两个映...

明理萝
刚刚
0
0
一个破碎的人,窃机浪漫飞行后自由坠毁

简评:A sick man who needs treatment 29 岁的 Richard Russell 是西雅图机场地勤人员,上周五,在刚进入秋天的日子,他偷了一架未载客的飞机,在空中飞行独自超过一小时,甚至驾机在空中翻...

极光推送
2分钟前
0
0
linux一次性解压多个.gz或者.tar.gz文件

解压多个压缩包 对于解压多个.gz文件的,用此命令: for gz in *.gz; do gunzip $gz; done 对于解压多个.tar.gz文件的,用下面命令: for tar in *.tar.gz; do tar xvf $tar; done...

小兔纸乖乖
12分钟前
0
0
bower 安装包的使用

一,bower是什么? bower是一种包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、CSS之类的网络资源。 它依赖于node.js和npm,如果要使用它需要先安装node.js和npm,因为node.js包含n...

nsns
15分钟前
0
0
EXCEL简易的进度条

在进度栏非常简单的进度控制,以下知道程序是否已完成。 Dim x As IntegerDim MyTimer As Double'Change this loop as needed.For x = 1 To 50' Do stuffApplication.StatusBar = ...

tedzheng
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部