• Cobar分布式数据库的应用与实践


    最新文章:看我如何快速学习.Net(高可用数据采集平台)高并发数据采集的架构应用(Redis的应用)

    问题点:

          随着项目的增长,数据和数据表也成倍的增长,普通的单点数据库已经无法满足日常的增长的需要。为了能够给开发者提供透明化的数据库应用,也为了有益于项目的扩展、维护和应用,迫切需要分布式数据库的解决方案。

    解决方案:

       1.  Mysql Cluster :Mysql官方提供分布式集群的解决方案之一、具有较强的权威性。

       2. Cobar: Taobao提供的分布式数据库的解决方案,经过一定的实践证明、简单易用,并且可以自定义分割算法。

       3. 爱可生: MySQL分布式集群服务框架, 国内领先的开源数据库软件、数据平台整体解决方案和服务提供商。

       4. Percona XtraDB Cluster 5.6: Percona提供,基于Mysql的另一分支优化过的数据库集群的解决方案。

       5. 以及其它分布式数据库解决方案: 新浪、MySQL federated 引擎、Amoeba等。

       基于以上较多的分布式解决方案,还是选择了淘宝的Cobar、开源而且经过实践证明已经足够满足日常的需要。


    配置和应用:

         1.下载 :https://github.com/alibaba/cobar/wiki

        2. 安装:1). Cobar是基于Java开发的分布式数据库应用,所以安装Cobar首先要安装JAVA JRE。

                   2).  解压,拷贝过去,运行startup.sh即可。

        3.配置:

               1)Server.xml 服务器配置

    <user name="mysql">
        <property name="password">mysql</property>
        <property name="schemas">data_acquisition_server</property>
      </user>

    连接用户名、密码配置,客户端连接登入验证。schemas 主要对应schema.xml的定义。

              2) Schema.xml 数据节点、数据表拆分配置

    <!-- schema定义 -->
      <schema name="data_acquisition_server" dataNode="dnDataAcquisitionMaster">
        <table name="task" dataNode="dnDataAcquisitionChunk1,dnDataAcquisitionChunk2" rule="rule1" />
        <table name="task_upload" dataNode="dnDataAcquisitionChunk1,dnDataAcquisitionChunk2" rule="rule1" />
        <table name="task_source" dataNode="dnDataAcquisitionChunk1,dnDataAcquisitionChunk2" rule="rule1" />
      </schema>
    
      <!-- 数据节点定义,数据节点由数据源和其他一些参数组织而成。-->
      <dataNode name="dnDataAcquisitionMaster">
        <property name="dataSource">
          <dataSourceRef>dsServer[0]</dataSourceRef>
        </property>
      </dataNode>
      <dataNode name="dnDataAcquisitionChunk1">
        <property name="dataSource">
          <dataSourceRef>dsServer[1]</dataSourceRef>
        </property>
      </dataNode>
      <dataNode name="dnDataAcquisitionChunk2">
        <property name="dataSource">
          <dataSourceRef>dsServer[2]</dataSourceRef>
        </property>
      </dataNode>
    
      <!-- 数据源定义,数据源是一个具体的后端数据连接的表示。-->
      <dataSource name="dsServer" type="mysql">
        <property name="location">
          <location>127.0.0.1:3306/db_data_acquisition_master</location>
          <location>127.0.0.1:3306/db_data_acquisition_chunk1</location>
          <location>127.0.0.1:3306/db_data_acquisition_chunk2</location>
        </property>
        <property name="user">root</property>
        <property name="password">123456</property>
        <property name="sqlMode">STRICT_TRANS_TABLES</property>
      </dataSource>

             3) Rule.xml 数据拆分算法配置

    <!-- 路由规则定义,定义什么表,什么字段,采用什么路由算法 -->
      <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>

             4) 数据表创建

       数据库:db_data_acquisition_master、db_data_acquisition_chunk1、db_data_acquisition_chunk2

       数据表:1)db_data_acquisition_chunk1:task、task_source、task_upload

                 2)db_data_acquisition_chunk2:task、task_source、task_upload

      当前的拆分规则、所有的表必需要有id但不能是自增长的。

       4 客户端连接

              可以使用任一Mysql连接工具进行连接,端口号为:8066

    总结:

        现在的技术感觉越做越薄,多关注开源的解决方案,却成为必要的一项工作技能了。

  • 相关阅读:
    文件隐藏在一张图片里
    晶振
    主宰全球的10大算法
    java+mysql连接的优化
    排序剔除
    js数据类型
    字符实体
    表单
    定义样式表
    布局相关的属性
  • 原文地址:https://www.cnblogs.com/oshine/p/4235610.html
Copyright © 2020-2023  润新知