Cobar 再体验——系统初窥
来源:互联网 发布:农村淘宝申请报名网址 编辑:程序博客网 时间:2024/06/05 15:07
上一篇讲述了Cobar的一些系统设计理念。这一篇主要从初次实践体验,本文体验的Cobar版本为 1.2.7(下载的压缩包有些文件需要修改,下面会提到),下载地址
一、Cobar 体验步骤
1. 解压cobar-server-1.2.7.tar.gz 文件,有bin conf lib 有三个目录,各自文件目录作用就不说了,已经很明显了。说说conf目录下的三个文件
在配置schema 和 rule 和 server文件之前,我们需要了解Cobar各大配置的逻辑层次:
上图是官方文档的描述,描述的还是比较清晰的,笔者补充下(若有错误,欢迎指正提出)
dataSource 就是一个实际的数据库连接,如果一个Mysql实例多个数据库,那也就多个dataSource,不同实例的多个数据库,同样也是多个dataSource。
schema 就是Cobar 的逻辑schema,在启动Cobar后,我们连接Cobar后,show databases 就是显示Cobar的schema,可以看做是Cobar的逻辑数据库。
2. 本地Mysql 环境准备,笔者在本地一个Mysql实例创建三个数据库,dbtest1 数据库有 tb1,tb3,dbtest2数据库和dbtest3数据库均有tb2。Cobar配置规则为:tb2需要分表,tb1和tb3不需要分表。
建表语句如下:
#创建dbtest1drop database if exists dbtest1;create database dbtest1;use dbtest1;#在dbtest1上创建tb1create table tb1(id int not null,gmt datetime);use dbtest1;#在dbtest1上创建tb3create table tb3(id int not null,gmt datetime);#创建dbtest2drop database if exists dbtest2;create database dbtest2;use dbtest2;#在dbtest2上创建tb2create table tb2(id int not null,val varchar(256));#创建dbtest3drop database if exists dbtest3;create database dbtest3;use dbtest3;#在dbtest3上创建tb2create table tb2(id int not null,val varchar(256));
3. 配置相关文件:
schema 文件
<!DOCTYPE cobar:schema SYSTEM "schema.dtd"><cobar:schema xmlns:cobar="http://cobar.alibaba.com/"> <!-- schema定义 --> <schema name="dbtest" dataNode="dnTest1"> <table name="tb2" dataNode="dnTest2,dnTest3" rule="rule1" /> </schema> <!-- 数据节点定义,数据节点由数据源和其他一些参数组织而成。--> <dataNode name="dnTest1"> <property name="dataSource"> <dataSourceRef>dsTest[0]</dataSourceRef> </property> </dataNode> <dataNode name="dnTest2"> <property name="dataSource"> <dataSourceRef>dsTest[1]</dataSourceRef> </property> </dataNode> <dataNode name="dnTest3"> <property name="dataSource"> <dataSourceRef>dsTest[2]</dataSourceRef> </property> </dataNode> <!-- 数据源定义,数据源是一个具体的后端数据连接的表示。--> <dataSource name="dsTest" type="mysql"> <property name="location"> <location>127.0.0.1:3306/dbtest1</location> <location>127.0.0.1:3306/dbtest2</location> <location>127.0.0.1:3306/dbtest3</location> </property> <property name="user">root</property> <property name="password">whq</property> <property name="sqlMode">STRICT_TRANS_TABLES</property> </dataSource></cobar:schema>
rule文件
<!DOCTYPE cobar:rule SYSTEM "rule.dtd"><cobar:rule xmlns:cobar="http://cobar.alibaba.com/"> <!-- 路由规则定义,定义什么表,什么字段,采用什么路由算法 --> <tableRule name="rule1"> <rule> <columns>id</columns> <algorithm><![CDATA[ func1(${id}) ]]></algorithm> </rule> </tableRule> <!-- 路由函数定义 --> <function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong"> <property name="partitionCount">2</property> <property name="partitionLength">512</property> </function></cobar:rule>
server 文件
<!DOCTYPE cobar:server SYSTEM "server.dtd"><cobar:server xmlns:cobar="http://cobar.alibaba.com/"> <!-- 系统参数定义,服务端口、管理端口,处理器个数、线程池等。 --> <!-- <system> <property name="serverPort">8066</property> <property name="managerPort">9066</property> <property name="initExecutor">16</property> <property name="timerExecutor">4</property> <property name="managerExecutor">4</property> <property name="processors">4</property> <property name="processorHandler">8</property> <property name="processorExecutor">8</property> <property name="clusterHeartbeatUser">_HEARTBEAT_USER_</property> <property name="clusterHeartbeatPass">_HEARTBEAT_PASS_</property> </system> --> <!-- 用户访问定义,用户名、密码、schema等信息。 --> <user name="root"> <property name="password">whq</property> <property name="schemas">dbtest</property> </user> <!-- <user name="root"> <property name="password"></property> </user> --> <!-- 集群列表定义,指定集群节点的主机和权重,用于集群间的心跳和客户端负载均衡。 --> <!-- <cluster> <node name="cobar1"> <property name="host">127.0.0.1</property> <property name="weight">1</property> </node> </cluster> --> <!-- 隔离区定义,可以限定某个主机上只允许某个用户登录。 --> <!-- <quarantine> <host name="1.2.3.4"> <property name="user">test</property> </host> </quarantine> --></cobar:server>
4. 启动Cobar,进入bin目录,启动 startup.bat(具体启动脚本因系统而异,该脚本需要修正cobar-server和log4j的版本,源文件有误)
5. 连接Cobar server,
mysql.exe -h127.0.0.1 -uroot -pwhq -P8066 -Ddbtest
6. 插入数据,验证Cobar分布式功能:
mysql>insert into tb1 (id, gmt) values (1, now()); mysql>insert into tb2 (id, val) values (1, "part1"); mysql>insert into tb2 (id, val) values (2, "part1"), (513, "part2");
查看后端实际物理数据库,验证tb2数据是否实现分表,而tb1和tb3没有分表。
0 0
- Cobar 再体验——系统初窥
- Cobar 初体验——系统概要设计
- cobar
- cobar
- 阿里巴巴分布式数据库解决方案——Cobar中间件配置详解
- 随身系统——Puppy Linux 4.00 初体验
- 机房收费系统初体验——SQL语句解析
- 机房收费系统初体验——心路历程
- 【MSF笔记】入侵XP系统——MSF初体验
- WAMP之初体验——文章发布系统
- Web应用初体验——登录登出验证系统
- 淘宝MySQL分布式处理系统Cobar部署
- macOS系统初体验
- log4j 系统日志初体验
- SDUTACM打字系统初体验
- 分布式系统研发初体验
- 阿里巴巴分布式数据库解决方案——Cobar中间件配置详解 (转)
- 淘宝分布式关系数据库处理系统---Cobar配置说明
- 什么是白牌机什么是ONIE (by quqi99)
- Android Support v4、v7、v13的区别和应用场景
- 欢迎使用CSDN-markdown编辑器
- ArcGIS、Super、MapMapInfo比较
- Linux系统的学习心得
- Cobar 再体验——系统初窥
- tomcat的缓存配置状况
- Android学习笔记之广播接收器(Broadcast Receiver)
- jquery DOM操作
- 函数调用过程中,函数参数的入栈顺序
- C++中将基类的析构函数定义为虚函数
- hdu 5094 Maze bfs+状态压缩
- 使用GSon根据节点名称读取json数组
- HTML基础4--浮动