Cobar 再体验——系统初窥

    上一篇讲述了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不需要分表。
建表语句如下:        
  
  #创建dbtest1
drop database if exists dbtest1;
create database dbtest1;
use dbtest1;
#在dbtest1上创建tb1
create table tb1(
id int not null,
gmt datetime);
use dbtest1;
#在dbtest1上创建tb3
create table tb3(
id int not null,
gmt datetime);
#创建dbtest2
drop database if exists dbtest2;
create database dbtest2;
use dbtest2;
#在dbtest2上创建tb2
create table tb2(
id int not null,
val varchar(256));
#创建dbtest3
drop database if exists dbtest3;
create database dbtest3;
use dbtest3;
#在dbtest3上创建tb2
create 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没有分表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值