type="global" dataNode="dn1,dn2" />
主键分片 :
非主键分片 : 对于非主键分片的 table,填写属性 primaryKey,此时 MyCAT 会将你根据主键查询的 SQL 语句的第一次执行结果进行分析,确定该 Table 的某个主键在什么分片上,并进行主键到分片 ID 的缓存。第二次或后续查询 mycat 会优先从缓存中查询是否有 id–>node 即主键到分片的映射,如果有直接查询,通过此种方法提高了非主键分片的查询性能
数据库切分策略
1> 分片枚举 : 通过在配置文件中配置可能的枚举 id,自己配置分片,本规则适用于特定的场景,比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的,这类业务使用本条规则
`rule.xml
user_id
`partition-hash-int.txt
10000=0
10010=1
DEFAULT_NODE=1
标签标识将要分片的表字段, 标签标识分片函数。在分片函数配置中,所有的节点配置都是从 0 开始,及 0 代表节点 1,defaultNode 设置默认节点,小于 0 表示不设置默认节点,大于等于 0 表示设置默认节点。默认节点用于枚举分片时,如果碰到不识别的枚举值,就让它路由到默认节点,如果不配置默认节点 (defaultNode 值小于 0 表示不配置默认节点),碰到不识别的枚举值就会报错 like this:can’ t find datanode for sharding column:column_name val:ffffffff
2> 固定分片 hash 算法 : 这种方式似于十进制的求模运算,区别在于是二进制的操作,是取 id 的二进制低 10 位,即 id 二进制 &1111111111。此算法的优点在于如果按照 10 进制取模运算,在连续插入 1-10 时候 1-10 会被分到 1-10 个分片,增大了插入的事务控制难度,而此算法根据二进制则可能会分到连续的分片,减少插入事务事务控制难度
分区长度 : 默认为最大 2^n=1024,即最大支持 1024 分区
约束 :
count,length 两个数组的长度必须是一致的
1024 = sum((count[i]*length[i])). count 和 length 两个向量的点积恒等于 1024
用法例子 : 将数据水平分成 3 份,前两份各占 25%,第三份占 50% (非均匀分区)
|<————————————————————1024————————————————————>|
|<———256——>|<——-256——>|<————————-512—————————->|
| partition0 | partition1 | partition2 |
| 共2份,故 count[0]=2 | 共1份,故count[1]=1 |
int[] count = new int[] { 2, 1 };
int[] length = new int[] { 256, 512 };
PartitionUtil pu = new PartitionUtil(count, length);
# 下面代码演示分别以 offerId 字段或 memberId 字段根据上述分区策略拆分的分配结果
int DEFAULT_STR_HEAD_LEN = 8; // cobar 默认会配置为此值
long offerId = 12345;
String memberId = "qiushuo";
# 若根据 offerId 分配,partNo1 将等于 0,即按照上述分区策略,offerId 为 12345 时将会被分配 到 partition0 中
int partNo1 = pu.partition(offerId);
# 若根据 memberId 分配,partNo2 将等于 2,即按照上述分区策略,memberId 为 qiushuo 时将会被 分到 partition2 中
int partNo2 = pu.partition(memberId, 0, DEFAULT_STR_HEAD_LEN);
如果需要平均分配设置 : 平均分为 4 分片,partitionCount*partitionLength=1024
3> 范围约定 : 此分片适用于,提前规划好分片字段某个范围属于哪个分片,start <= range <= end
range start-end , data node index
K=1000 , M=10000
`rule.xml
user_id
`autopartition-long.txt
# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2
配置说明 : 所有的节点配置都是从 0 开始,及 0 代表节点 1,此配置非常简单,即预先制定可能的 id 范围到某个分片
0-500M=0
500M-1000M=1
1000M-1500M=2
或
0-10000000=0
10000001-20000000=1
4> 取模 : 此规则为对分片字段求摸运算
此种配置非常明确即根据 id 进行十进制求模预算,相比固定分片 hash,此种在批量插入时可能存在批量插入单事务插入多数据分片,增大事务一致性难度
5> 按日期分片
<1> 按天分片
`rule.xml
create_time
class="org.opencloudb.route.function.PartitionByDate">
如果配置 sEndDate 则代表数据达到这个日期的分片后,循环从开始分片插入
Assert.assertEquals(true, 0 == partition.calculate("2014-01-01"));
Assert.assertEquals(true, 0 == partition.calculate("2014-01-10"));
Assert.assertEquals(true, 1 == partition.calculate("2014-01-11"));
Assert.assertEquals(true, 12 == partition.calculate("2014-05-01"));
<2> 按月分片
6> 取模范围约束 : 此种规则是取模运算与范围约束的结合,主要为后续数据迁移做准备,即可以自主决定取模后数据的节点分布
`rule.xml
user_id
class="org.opencloudb.route.function.PartitionByPattern">
`partition-pattern.txt : 配置文件中,1-32 即代表 id%256 后分布的范围,如果在 1-32 则在分区 1,其他类推,如果 id 非数据,则会分配在 defaoultNode 默认节点
# id partition range start-end ,data node index
###### first host configuration
1-32=0
33-64=1
65-96=2
97-128=3
######## second host configuration
129-160=4
161-192=5
193-224=6
225-256=7
0-0=7
String idVal = "0";
Assert.assertEquals(true, 7 == autoPartition.calculate(idVal));
idVal = "45a";
Assert.assertEquals(true, 2 == autoPartition.calculate(idVal));
7> 截取数字做 hash 求模范围约束 : 此种规则类似于取模范围约束,此规则支持数据符号字母取模
`rule.xml
user_id
sharding-by-prefixpattern
class="org.opencloudb.route.function.PartitionByPrefixPattern">
`partition-pattern.txt : 配置文件中,1-32 即代表 id%256 后分布的范围,如果在 1-32 则在分区 1,其他类推
# range start-end ,data node index
# ASCII
# 8-57=0-9 阿拉伯数字
# 64、 65-90=@、 A-Z
# 97-122=a-z
###### first host configuration
1-4=0
5-8=1
9-12=2
13-16=3
###### second host configuration
17-20=4
21-24=5
25-28=6
29-32=7
0-0=7
此种方式类似方式 6 只不过采取的是将列种获取前 prefixLength 位列所有 ASCII 码的和进行求模 sum%patternValue,获取的值,在范围内的分片数
String idVal="gf89f9a";
Assert.assertEquals(true, 0==autoPartition.calculate(idVal));
idVal="8df99a";
Assert.assertEquals(true, 4==autoPartition.calculate(idVal));
idVal="8dhdf99a";
Assert.assertEquals(true, 3==autoPartition.calculate(idVal));
8> 应用指定 : 此规则是在运行阶段由应用自主决定路由到那个分片
`rule.xml
user_id
class="org.opencloudb.route.function.PartitionDirectBySubString">
此方法为直接根据字符子串 (必须是数字) 计算分区号 (由应用传递参数,显式指定分区号)
例如 id=05-100000002
在此配置中代表根据 id 中从 startIndex=0,开始,截取 siz=2 位数字即 05,05 就是获取的分区,如果没传默认分配到 defaultPartition
9> 截取数字 hash 解 : 此规则是截取字符串中的 int 数值 hash 分片
`rule.xml
user_id
class="org.opencloudb.route.function.PartitionByString">
hashSlice : 0 means str.length(), -1 means str.length()-1
/**
* "2" -> (0,2)
* "1:2" -> (1,2)
* "1:" -> (1,0)
* "-1:" -> (-1,0)
* ":-1" -> (0,-1)
* ":" -> (0,0)
*/
String idVal=null;
rule.setPartitionLength("512");
rule.setPartitionCount("2");
rule.init();
rule.setHashSlice("0:2");
// idVal = "0";
// Assert.assertEquals(true, 0 == rule.calculate(idVal));
// idVal = "45a";
// Assert.assertEquals(true, 1 == rule.calculate(idVal));
// last 4
rule = new PartitionByString();
rule.setPartitionLength("512");
rule.setPartitionCount("2");
rule.init();
// last 4 characters
rule.setHashSlice("-4:0");
idVal = "aaaabbb0000";
Assert.assertEquals(true, 0 == rule.calculate(idVal));
idVal = "aaaabbb2359";
Assert.assertEquals(true, 0 == rule.calculate(idVal));
10> 一致性 hash : 一致性 hash 预算有效解决分布式数据的扩容问题
11> 按单月小时拆分 : 此规则是单月内按照小时拆分,最小粒度是小时,可以一天最多 24 个分片,最少 1 个分片,一个月完后下月从头开始循环。每个月月尾,需要手工清理数据
`rule.xml
create_time
class="org.opencloudb.route.function.LatestMonthPartion">
columns : 拆分字段,字符串类型 (yyyymmddHH)
LatestMonthPartion partion = new LatestMonthPartion();
partion.setSplitOneDay(24);
Integer val = partion.calculate("2015020100");
assertTrue(val == 0);
val = partion.calculate("2015020216");
assertTrue(val == 40);
val = partion.calculate("2015022823");
assertTrue(val == 27 * 24 + 23);
Integer[] span = partion.calculateRange("2015020100", "2015022823");
assertTrue(span.length == 27 * 24 + 23 + 1);
assertTrue(span[0] == 0 && span[span.length - 1] == 27 * 24 + 23);
span = partion.calculateRange("2015020100", "2015020123");
assertTrue(span.length == 24);
assertTrue(span[0] == 0 && span[span.length - 1] == 23);
12> 范围求模分片 : 先进行范围分片计算出分片组,组内再求模。优点是可以避免扩容时的数据迁移,又可以一定程度上避免范围分片的热点问题综合了范围分片和求模分片的优点,分片组内使用求模可以保证组内数据比较均匀,分片组之间是范围分片可以兼顾范围查询。最好事先规划好分片的数量,数据扩容时按分片组扩容,则原有分片组的数据不需要迁移。由于分片组内数据比较均匀,所以分片组内可以避免热点数据问题
`rule.xml
id
class="org.opencloudb.route.function.PartitionByRangeMod">
`partition-range-mod.txt :
range start-end ,data node group size
以下配置一个范围代表一个分片组,=号后面的数字代表该分片组所拥有的分片的数量
0-200M=5 // 代表有 5 个分片节点
200M1-400M=1
400M1-600M=4
600M1-800M=4
800M1-1000M=6
13> 日期范围 hash 分片 : 思想与范围求模一致,当由于日期在取模会有数据集中问题,所以改成 hash 方法。先根据日期分组,再根据时间 hash 使得短期内数据分布的更均匀。优点是可以避免扩容时的数据迁移,又可以一定程度上避免范围分片的热点问题,要求日期格式尽量精确些,不然达不到局部均匀的目的
`rule.xml
col_date
class="org.opencloudb.route.function.PartitionByRangeDateHash">
14> 冷热数据分片 : 根据日期查询日志数据冷热数据分布 ,最近 n 个月的到实时交易库查询,超过 n 个月的按照 m 天分片
15> 自然月分片 : 按月份列分区 ,每个自然月一个分片,格式 between 操作解析的范例
`rule.xml
create_time
class="org.opencloudb.route.function.PartitionByMonth">
PartitionByMonth partition = new PartitionByMonth();
partition.setDateFormat("yyyy-MM-dd");
partition.setsBeginDate("2014-01-01");
partition.init();
Assert.assertEquals(true, 0 == partition.calculate("2014-01-01"));
Assert.assertEquals(true, 0 == partition.calculate("2014-01-10"));
Assert.assertEquals(true, 0 == partition.calculate("2014-01-31"));
Assert.assertEquals(true, 1 == partition.calculate("2014-02-01"));
Assert.assertEquals(true, 1 == partition.calculate("2014-02-28"));
Assert.assertEquals(true, 2 == partition.calculate("2014-03-1"));
Assert.assertEquals(true, 11 == partition.calculate("2014-12-31"));
Assert.assertEquals(true, 12 == partition.calculate("2015-01-31"));
Assert.assertEquals(true, 23 == partition.calculate("2015-12-31"));
如果想增加自定义分片方法可以下载 Mycat-Server (https://github.com/MyCATApache/Mycat-Server),。编译打包后放在 MyCat 运行文件的 {MYCAT_HOME}/lib 替换 Mycat-server-1.6-RELEASE.jar 文件
$ pwd
/opt/modules/mycat/lib
$ ll
总用量 17M
-rwxrwxrwx. 1 root root 45K 10月 28 2016 asm-4.0.jar
-rwxrwxrwx. 1 root root 562K 10月 28 2016 commons-collections-3.2.1.jar
-rwxrwxrwx. 1 root root 278K 10月 28 2016 commons-lang-2.6.jar
-rwxrwxrwx. 1 root root 72K 10月 28 2016 curator-client-2.11.0.jar
-rwxrwxrwx. 1 root root 195K 10月 28 2016 curator-framework-2.11.0.jar
-rwxrwxrwx. 1 root root 276K 10月 28 2016 curator-recipes-2.11.0.jar
-rwxrwxrwx. 1 root root 79K 10月 28 2016 disruptor-3.3.4.jar
-rwxrwxrwx. 1 root root 307K 10月 28 2016 dom4j-1.6.1.jar
-rwxrwxrwx. 1 root root 2.1M 10月 28 2016 druid-1.0.26.jar
-rwxrwxrwx. 1 root root 1.3M 10月 28 2016 ehcache-core-2.6.11.jar
-rwxrwxrwx. 1 root root 380K 10月 28 2016 fastjson-1.2.12.jar
-rwxrwxrwx. 1 root root 2.3M 10月 28 2016 guava-19.0.jar
-rwxrwxrwx. 1 root root 44K 10月 28 2016 hamcrest-core-1.3.jar
-rwxrwxrwx. 1 root root 52K 10月 28 2016 hamcrest-library-1.3.jar
-rwxrwxrwx. 1 root root 86K 10月 28 2016 jline-0.9.94.jar
-rwxrwxrwx. 1 root root 614K 10月 28 2016 joda-time-2.9.3.jar
-rwxrwxrwx. 1 root root 33K 10月 28 2016 jsr305-2.0.3.jar
-rwxrwxrwx. 1 root root 137K 10月 28 2016 kryo-2.10.jar
-rwxrwxrwx. 1 root root 225K 10月 28 2016 leveldb-0.7.jar
-rwxrwxrwx. 1 root root 9.1K 10月 28 2016 leveldb-api-0.7.jar
-rwxrwxrwx. 1 root root 24K 10月 28 2016 libwrapper-linux-ppc-64.so
-rwxrwxrwx. 1 root root 12K 10月 28 2016 libwrapper-linux-x86-32.so
-rwxrwxrwx. 1 root root 15K 10月 28 2016 libwrapper-linux-x86-64.so
-rwxrwxrwx. 1 root root 479K 10月 28 2016 log4j-1.2.17.jar
-rwxrwxrwx. 1 root root 37K 10月 28 2016 log4j-1.2-api-2.5.jar
-rwxrwxrwx. 1 root root 144K 10月 28 2016 log4j-api-2.5.jar
-rwxrwxrwx. 1 root root 1.1M 10月 28 2016 log4j-core-2.5.jar
-rwxrwxrwx. 1 root root 23K 10月 28 2016 log4j-slf4j-impl-2.5.jar
-rwxrwxrwx. 1 root root 406K 10月 28 2016 mapdb-1.0.7.jar
-rwxrwxrwx. 1 root root 4.9K 10月 28 2016 minlog-1.2.jar
-rwxrwxrwx. 1 root root 410K 10月 28 2016 mongo-java-driver-2.11.4.jar
-rwxrwxrwx. 1 root root 1.8M 10月 28 2016 Mycat-server-1.6-RELEASE.jar
-rwxrwxrwx. 1 root root 128K 10月 28 2016 mysql-binlog-connector-java-0.4.1.jar
-rwxrwxrwx. 1 root root 1.2M 10月 28 2016 netty-3.7.0.Final.jar
-rwxrwxrwx. 1 root root 36K 10月 28 2016 objenesis-1.2.jar
-rwxrwxrwx. 1 root root 14K 10月 28 2016 reflectasm-1.03.jar
-rwxrwxrwx. 1 root root 470K 10月 28 2016 sequoiadb-driver-1.12.jar
-rwxrwxrwx. 1 root root 25K 10月 28 2016 slf4j-api-1.6.1.jar
-rwxrwxrwx. 1 root root 318K 10月 28 2016 univocity-parsers-2.2.1.jar
-rwxrwxrwx. 1 root root 439K 10月 28 2016 velocity-1.7.jar
-rwxrwxrwx. 1 root root 82K 10月 28 2016 wrapper.jar
-rwxrwxrwx. 1 root root 775K 10月 28 2016 zookeeper-3.4.6.jar
你可能感兴趣的:(MyCat)
mycat配置双主双从实现mysql读写分离
Zozzoooz
mycat读写分离 mysql 数据库 java docker
docker容器下mysql主从配置mycat配置双主双从实现mysql读写分离拉取mysql5.7dockerpullmysql:5.7运行mysql镜像mysqlM1主容器:dockerrun-p3301:3306--namemysql-master1-v/usr/local/mysql-master1/conf:/etc/mysql/conf.d-v/usr/local/mysql-mast
MHA+MYCAT 高可用架构
第九系艾文
linux Linux tools 服务器 数据库 mycat mha linux
架构图如下:本次是4服务器架构如下环境:centos7.2x64mariadb10.4MHA5.7MyCat1.6.7IP规划IP功能10.1.41.166VIP10.1.41.167master,mycat,mha.node10.1.41.168slave(master),mha.node10.1.41.165slave,mycat,keepalived10.1.41.169slave,myca
mycat双主高可用架构部署-MySQL5.7环境部署第一台
龙哥·三年风水
MySQL5.7.36 分布式 高可用 架构 mysql 分布式
MySQL5.7服务器IP是192.168.31.209及192.168.31.2101、192.168.31.209:3307实例部署a、配置文件mkdir-p/data/mysql/mysql3307/{data,logs}#创建MySQL数据及日志目录vi/data/mysql/mysql3307/my3307.cnf#配置文件整理[client]#password=your_passwor
中间件的学习理解总结
DCDDDDcccc
中间件 学习
目录一、定义与作用二、主要类型数据库中间件远程过程调用中间件面向消息的中间件事务处理中间件三、特点与优势独立性高效性可扩展性可靠性四、应用场景企业应用集成分布式系统电子商务移动应用开发五、数据库中间件功能细节:应用优势:六、远程过程调用中间件功能细节:应用优势:七、面向消息的中间件功能细节:应用优势:八、事务处理中间件功能细节:应用优势:数据库中间件MyCat:ShardingSphere:远程过
32次8.21(学习playbook-roles,脚本创建数据库和表,mycat读写分离)
祎安139
运维 数据库
1.roles目录介绍files:⽤来存放由copy模块或script模块调⽤的⽂件。tasks:⾄少有⼀个main.yml⽂件,定义各tasks。handlers:有⼀个main.yml⽂件,定义各handlers。templates:⽤来存放jinjia2模板。vars:有⼀个main.yml⽂件,定义变量。meta:有⼀个main.yml⽂件,定义此⻆⾊的特殊设定及其依赖关系。注意:在每个⻆
云计算33------学习playbook-roles,脚本创建数据库和表,mycat读写分离
是小梅吖~
云计算 学习 数据库
上午1、roles(角色)介绍roles(⻆⾊):就是通过分别将variables,tasks及handlers等放置于单独的⽬录中,并可以便捷地调⽤它们的⼀种机制。假设我们要写⼀个playbook来安装管理lamp环境,那么这个playbook就会写很⻓。所以我们希望把这个很⼤的⽂件分成多个功能拆分,分成apache管理,php管理,mysql管理,然后在需要使⽤的时候直接调⽤就可以了,以免重复
Mycat2.0实战2:mycat2.0安装和启动
baiyeooo
Mycat2.0实战 运维 dba mysql
以下操作均为windows下,Linux以后看情况再补充1、在哪里下载最新版本①进入官网:MyCat2②点击下载文件服务:Indexof/2.0/(mycat.org.cn)③选择最新的版本,下载我下载的是1.22的最新版本Indexof/2.0/1.22-release/(mycat.org.cn)下载安装模板:Indexof/2.0/install-template/(mycat.org.cn
MyCat实现单库分表+代理所有表
爱笑的人、
数据库
MyCAT支持水平分片与垂直分片:水平分片:一个表格的数据分割到多个节点上,按照行分隔。垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。MyCat通过定义表的分片规则来实现分片,每个表格可以绑定一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分配算法。安装mycat后解压tar-zxvfMycat-server-1.6.7.4-r
将Spring Cloud项目改造为Spring-cloud-kubernetes项目
公众号-芋道源码
中间件 java linux 数据库 spring boot
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天10:33更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务
呵呵,一个 bug 你改了两天?难吗?
Java基基
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eurek
mycat-encrypt-server如何支持模糊查询的
jljf_hh
数据库
最近在研究数据库加密,看到了mycat-encrypt-server项目,看了一下代码,说是支持加密字段的模糊查询:privatevoidparserBinaryExpression(Expressionexpression,Setcolumns,StringtableAlias,StringtableName){BinaryExpressionbinartex=(BinaryExpression
京东平台研发:领域驱动设计(DDD)实践总结
公众号-芋道源码
tdd 控制器 360 dbcp 分布式
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天8:55更新文章,每天掉亿点点头发...源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中
怎么用数据库中间件Mycat+SpringBoot完成分库分表?
Java圈子
一、背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。二、什么是分库分表简单来说,就是指通过某种特定的条
Mycat 配置文件rule.xml
小波同学
rule.xml配置文件定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。该文件里面主要有tableRule和function这两个标签。1、tableRule标签idfunc1name属性:指定唯一的名字,用于标识不同的表规则。rule标签:指定对物理表中的哪一列进行拆分和使用什么路由算法。columns指定要拆分的列名字。a
领导:谁再用 Redis 实现过期订单关闭,立马滚蛋!
公众号-芋道源码
redis java 数据库 缓存 开发语言
点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天10:33更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务
Springboot整合Mycat2
Lonely Faith
spring boot java spring
Springboot连接Mycat2环境准备:http://t.csdn.cn/zRO5v创建Springboot项目1.新建项目:配置好对应的选项:选择好对应的springboot版本,和项目自带的默认依赖:如果你的环境搭建的时候是按照上面的教程搭建,那么请选择MySQLDrive驱动配置Maven:如果下载速度慢,请在Maven的/conf/settings.xml文件中配置国内镜像源等待Ma
Docker 部署Mycat2
Lonely Faith
docker 数据库 java
Docker部署Mycat2分布式数据库中间件Mycat2简介Mycat2是Mycat社区开发的一款分布式关系型数据库(中间件)。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力。源码地址https://github.com/MyCATApache/Mycat2https://gitee.com/MycatOne/Mycat2官网h
iOS架构之路03 -- 静态库.a打包之包含资源文件
YanZi_33
上两篇文章分别介绍了静态库.a的手动打包与脚本化打包,并没有涉及到资源文件,一般静态库中肯定会包含资源文件的,资源文件通常包括图片,xib,json数据,plist数据等等,这些资源文件在静态库打包的时候会统一放在一个Bundle文件中,下面我们就来尝试涉及资源文件的静态库打包制作;在原来上一篇文章所建的工程基础上,进行如下操作:第一步:给静态库添加一个同工程名的Bundle添加名为MyCateg
RocketMQ 源码分析 —— 集成 Spring Boot
公众号-芋道源码
点击上方“芋道源码”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创|Java2020超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件TCC-Transaction源码解析Eureka和
myCat 数据切分方案分析
dylan丶QAQ
起因:学完mysql,了解一下mycat,对数据相关知识进一步了解。1.数据切分方案分析对于数据库来讲,他永远是系统中最关键的核心环节和瓶颈保护数据库:增加缓存(redis、ES)MySQL本身的分区表只是对磁盘进行了高效利用水平扩展,多数据中心(各个数据中心,互相是一个备份节点)如果数据库做到了分布式的架构?就需要有一个中间件,对数据进行二次加工合并2.垂直切分、水平切分方案分析2.1.垂直切分
数据库切片大对决:ShardingSphere与Mycat技术解析
一只牛博
数据库 数据库 ShardingSphere mycat
欢迎来到我的博客,代码的世界里,每一行都是一个故事数据库切片大对决:ShardingSphere与Mycat技术解析前言ShardingSphere与Mycat简介工作原理对比功能特性对比前言在数据库的舞台上,有两位颇受欢迎的明星,它们分别是ShardingSphere和Mycat。这两位巨星在数据库切片的世界里大放异彩,好像是一场引人入胜的数据库技术盛宴。在这场Sharding大战中,我们将揭开
Excel百万级数据导入导出,EasyExcel 才是 yyds
Java基基
excel
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创|Java2021超神之路,很肝~中文详细注释的开源项目RPC框架Dubbo源码解析网络应用框架Netty源码解析消息中间件RocketMQ源码解析数据库中间件Sharding-JDBC和MyCAT源码解析作业调度中间件Elastic-Job源码解析分布式事务中间件T
springboot配置数据库读写分离
zwb_jianshu
为什么要做数据库读写分离大多数互联网业务,往往读多写少,这时候,数据库的读会首先称为数据库的瓶颈,这时,如果我们希望能够线性的提升数据库的读性能,消除读写锁冲突从而提升数据库的写性能,那么就可以使用“分组架构”(读写分离架构)。用一句话概括,读写分离是用来解决数据库的读性能瓶颈的。解决方案代理、工具,如:MySQLProxy、Mycat项目内编码实现(本文中介绍这种)步骤添加依赖支持org.spr
mycat2快速搭建
w329636271
mycat
一.下载文件1.下载对应的tar安装包,以及对应的jar包tar包http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zipjar包http://dl.mycat.org.cn/2.0/1.21-release/(下载最新的jar包)下载所需的mycat2的fatjar一般大小为100mb的一个jar文件
socket IO java的使用
w329636271
因为项目中有用到socketio然后呢,老大只给了js版本的,但是需要在服务端也要用到,所以,就写了以下的测试代码.maven需要导入的io.socketsocket.io-client0.8.3测试的Demo代码:packageio.mycat.bigmem.buffer;importorg.json.JSONObject;importio.socket.emitter.Emitter;impo
ShardingSphere-Proxy5搭建使用
Echo_bf84
ShardingSphere-Proxy5搭建使用ApacheShardingSphere下的一个产品,定位为透明化的数据库代理端,与mycat类似,所有的分片都由其完成。ShardingSphere-Proxy5下载安装官网提供三种安装方式,这里主要记录两种二进制包安装官网下载二进制包apache-shardingsphere-5.2.0-shardingsphere-proxy-bin.tar
mysql面试:主从同步原理、分库分表(mycat)
鸡鸭扣
MySQL面试题 mysql 面试 数据库 后端 前端 java
主从同步mysql主从同步的核心是其二进制日志文件binlog,该文件中记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。复制分成三步:Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中。从库通过IOthread读取主库的二进制日志文件Binlog,写入到从库的中继日志RelayLog。从库再通过SQLth
MySQL- 运维-分库分表-Mycat
rch041126
MySQL mysql 数据库
一、Mycat概述1、安装2、概念介绍二、Mycat入门启动服务三、Mycat配置1、schema.xml2、rule.xml3、server.xml四、Mycat分片1、垂直分库2、水平分表五、Mycat管理及监控1、Mycat原理2、Mycat管理工具(1)、命令行(2)、Mycat-eye
ShardingSphere 5.x 系列【3】分库分表中间件技术选型
云烟成雨TD
Sharding Sphere 5.x spring boot sharding sphere 分库分表
有道无术,术尚可求,有术无道,止于术。本系列SpringBoot版本3.1.0本系列ShardingSphere版本5.4.0源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo文章目录1.前言2.MyCat3.ShardingSphere4.Dble5.Vitess6.大厂开源6.1Cobar6.2Atlas6.
数据库主从加读写分离
曹博Blog
数据库
1.规划节点mysql1------192.168.200.8------主数据库节点mysql2------192.168.200.13------从数据库节点mycat------192.168.200.21------数据库中间件节点2.基础准备使用OpenStack平台创建两台云主机进行试验,云主机使用提供的CentOS_7.5_x86_64_XD.qcow2镜像,flavor使用1核/2
面向对象面向过程
3213213333332132
java
面向对象:把要完成的一件事,通过对象间的协作实现。
面向过程:把要完成的一件事,通过循序依次调用各个模块实现。
我把大象装进冰箱这件事为例,用面向对象和面向过程实现,都是用java代码完成。
1、面向对象
package bigDemo.ObjectOriented;
/**
* 大象类
*
* @Description
* @author FuJian
Java Hotspot: Remove the Permanent Generation
bookjovi
HotSpot
openjdk上关于hotspot将移除永久带的描述非常详细,http://openjdk.java.net/jeps/122
JEP 122: Remove the Permanent Generation
Author Jon Masamitsu
Organization Oracle
Created 2010/8/15
Updated 2011/
正则表达式向前查找向后查找,环绕或零宽断言
dcj3sjt126com
正则表达式
向前查找和向后查找
1. 向前查找:根据要匹配的字符序列后面存在一个特定的字符序列(肯定式向前查找)或不存在一个特定的序列(否定式向前查找)来决定是否匹配。.NET将向前查找称之为零宽度向前查找断言。
对于向前查找,出现在指定项之后的字符序列不会被正则表达式引擎返回。
2. 向后查找:一个要匹配的字符序列前面有或者没有指定的
BaseDao
171815164
seda
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BaseDao {
public Conn
Ant标签详解--Java命令
g21121
Java命令
这一篇主要介绍与java相关标签的使用 终于开始重头戏了,Java部分是我们关注的重点也是项目中用处最多的部分。
1
[简单]代码片段_电梯数字排列
53873039oycg
代码
今天看电梯数字排列是9 18 26这样呈倒N排列的,写了个类似的打印例子,如下:
import java.util.Arrays;
public class 电梯数字排列_S3_Test {
public static void main(S
Hessian原理
云端月影
hessian原理
Hessian 原理分析
一. 远程通讯协议的基本原理
网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http 、 tcp 、 udp 等等, http 、 tcp 、 udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协
区分Activity的四种加载模式----以及Intent的setFlags
aijuans
android
在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。
这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置
Activity有四种加载模式:
standard
singleTop
hibernate几个核心API及其查询分析
antonyup_2006
html .net Hibernate xml 配置管理
(一) org.hibernate.cfg.Configuration类
读取配置文件并创建唯一的SessionFactory对象.(一般,程序初始化hibernate时创建.)
Configuration co
PL/SQL的流程控制
百合不是茶
oracle PL/SQL编程 循环控制
PL/SQL也是一门高级语言,所以流程控制是必须要有的,oracle数据库的pl/sql比sqlserver数据库要难,很多pl/sql中有的sqlserver里面没有
流程控制;
分支语句 if 条件 then 结果 else 结果 end if ;
条件语句 case when 条件 then 结果;
循环语句 loop
强大的Mockito测试框架
bijian1013
mockito 单元测试
一.自动生成Mock类 在需要Mock的属性上标记@Mock注解,然后@RunWith中配置Mockito的TestRunner或者在setUp()方法中显示调用MockitoAnnotations.initMocks(this);生成Mock类即可。二.自动注入Mock类到被测试类 &nbs
精通Oracle10编程SQL(11)开发子程序
bijian1013
oracle 数据库 plsql
/*
*开发子程序
*/
--子程序目是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用程序中多次调用
--PL/SQL有两种类型的子程序:过程和函数
--开发过程
--建立过程:不带任何参数
CREATE OR REPLACE PROCEDURE out_time
IS
BEGIN
DBMS_OUTPUT.put_line(systimestamp);
E
【EhCache一】EhCache版Hello World
bit1129
Hello world
本篇是EhCache系列的第一篇,总体介绍使用EhCache缓存进行CRUD的API的基本使用,更细节的内容包括EhCache源代码和设计、实现原理在接下来的文章中进行介绍
环境准备
1.新建Maven项目
2.添加EhCache的Maven依赖
<dependency>
<groupId>ne
学习EJB3基础知识笔记
白糖_
bean Hibernate jboss webservice ejb
最近项目进入系统测试阶段,全赖袁大虾领导有力,保持一周零bug记录,这也让自己腾出不少时间补充知识。花了两天时间把“传智播客EJB3.0”看完了,EJB基本的知识也有些了解,在这记录下EJB的部分知识,以供自己以后复习使用。
EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序。EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基
angular.bootstrap
boyitech
AngularJS AngularJS API angular中文api
angular.bootstrap
描述:
手动初始化angular。
这个函数会自动检测创建的module有没有被加载多次,如果有则会在浏览器的控制台打出警告日志,并且不会再次加载。这样可以避免在程序运行过程中许多奇怪的问题发生。
使用方法: angular .
java-谷歌面试题-给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数
bylijinnan
java
public class SearchInShiftedArray {
/**
* 题目:给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数。
* 请在这个特殊数组中找出给定的整数。
* 解答:
* 其实就是“旋转数组”。旋转数组的最小元素见http://bylijinnan.iteye.com/bl
天使还是魔鬼?都是我们制造
ducklsl
生活 教育 情感
----------------------------剧透请原谅,有兴趣的朋友可以自己看看电影,互相讨论哦!!!
从厦门回来的动车上,无意中瞟到了书中推荐的几部关于儿童的电影。当然,这几部电影可能会另大家失望,并不是类似小鬼当家的电影,而是关于“坏小孩”的电影!
自己挑了两部先看了看,但是发现看完之后,心里久久不能平
[机器智能与生物]研究生物智能的问题
comsci
生物
我想,人的神经网络和苍蝇的神经网络,并没有本质的区别...就是大规模拓扑系统和中小规模拓扑分析的区别....
但是,如果去研究活体人类的神经网络和脑系统,可能会受到一些法律和道德方面的限制,而且研究结果也不一定可靠,那么希望从事生物神经网络研究的朋友,不如把
获取Android Device的信息
dai_lm
android
String phoneInfo = "PRODUCT: " + android.os.Build.PRODUCT;
phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI;
phoneInfo += ", TAGS: " + android.os.Build.TAGS;
ph
最佳字符串匹配算法(Damerau-Levenshtein距离算法)的Java实现
datamachine
java 算法 字符串匹配
原文:http://www.javacodegeeks.com/2013/11/java-implementation-of-optimal-string-alignment.html------------------------------------------------------------------------------------------------------------
小学5年级英语单词背诵第一课
dcj3sjt126com
english word
long 长的
show 给...看,出示
mouth 口,嘴
write 写
use 用,使用
take 拿,带来
hand 手
clever 聪明的
often 经常
wash 洗
slow 慢的
house 房子
water 水
clean 清洁的
supper 晚餐
out 在外
face 脸,
macvim的使用实战
dcj3sjt126com
mac vim
macvim用的是mac里面的vim, 只不过是一个GUI的APP, 相当于一个壳
1. 下载macvim
https://code.google.com/p/macvim/
2. 了解macvim
:h vim的使用帮助信息
:h macvim
java二分法查找
蕃薯耀
java二分法查找 二分法 java二分法
java二分法查找
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月23日 11:40:03 星期二
http:/
Spring Cache注解+Memcached
hanqunfeng
spring memcached
Spring3.1 Cache注解
依赖jar包:
<!-- simple-spring-memcached -->
<dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>simple-s
apache commons io包快速入门
jackyrong
apache commons
原文参考
http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html
Apache Commons IO 包绝对是好东西,地址在http://commons.apache.org/proper/commons-io/,下面用例子分别介绍:
1) 工具类
2
如何学习编程
lampcy
java 编程 C++ c
首先,我想说一下学习思想.学编程其实跟网络游戏有着类似的效果.开始的时候,你会对那些代码,函数等产生很大的兴趣,尤其是刚接触编程的人,刚学习第一种语言的人.可是,当你一步步深入的时候,你会发现你没有了以前那种斗志.就好象你在玩韩国泡菜网游似的,玩到一定程度,每天就是练级练级,完全是一个想冲到高级别的意志力在支持着你.而学编程就更难了,学了两个月后,总是觉得你好象全都学会了,却又什么都做不了,又没有
架构师之spring-----spring3.0新特性的bean加载控制@DependsOn和@Lazy
nannan408
Spring3
1.前言。
如题。
2.描述。
@DependsOn用于强制初始化其他Bean。可以修饰Bean类或方法,使用该Annotation时可以指定一个字符串数组作为参数,每个数组元素对应于一个强制初始化的Bean。
@DependsOn({"steelAxe","abc"})
@Comp
Spring4+quartz2的配置和代码方式调度
Everyday都不同
代码 配置 spring4 quartz2.x 定时任务
前言:这些天简直被quartz虐哭。。因为quartz 2.x版本相比quartz1.x版本的API改动太多,所以,只好自己去查阅底层API……
quartz定时任务必须搞清楚几个概念:
JobDetail——处理类
Trigger——触发器,指定触发时间,必须要有JobDetail属性,即触发对象
Scheduler——调度器,组织处理类和触发器,配置方式一般只需指定触发
Hibernate入门
tntxia
Hibernate
前言
使用面向对象的语言和关系型的数据库,开发起来很繁琐,费时。由于现在流行的数据库都不面向对象。Hibernate 是一个Java的ORM(Object/Relational Mapping)解决方案。
Hibernte不仅关心把Java对象对应到数据库的表中,而且提供了请求和检索的方法。简化了手工进行JDBC操作的流程。
如
Math类
xiaoxing598
Math
一、Java中的数字(Math)类是final类,不可继承。
1、常数 PI:double圆周率 E:double自然对数
2、截取(注意方法的返回类型) double ceil(double d) 返回不小于d的最小整数 double floor(double d) 返回不大于d的整最大数 int round(float f) 返回四舍五入后的整数 long round