zoukankan      html  css  js  c++  java
  • 数据性能改善——分库分表中间件

    一、前言

    学习读写分离,这里记录下自己学习的路程,你读过之后对技术的认知可能不会有太多的提高,但是能看到我成长的轨迹。(只记录难点、重点知识点,以及方向的选择、自己的心境)

    读写分离指的是将数据库分为主从库,一个主库用于写数据,多个从库用来读数据,主从库之间通过某种机制进行数据间的同步。目前多数互联网业务的数据,读多写少,为了线性提升数据库读性能,减少读写锁的冲突而提高写性能,便有了读写分离的做法。但是不是任何情况都需要数据的读写分离,比如,一个订单系统,订单表里的数据量非常庞大,那么这种情况,该做的是对表进行水平切分,原来表里的2000w数据,拆分成4个表,每个表里500w,这样单表操作的压力就少了很多。因此,我们为了解决数据库架构问题时,一定要先分析数据库性能瓶颈是什么,再去想解决方法。

    二、技术选型

    选型这里,首先要前期调查。查询多方资料,分析优缺点,弄个小demo出来,然后选定。

    我呢,选择了Mycat和jdbc-sharding,两者进行调查,先去了官网,Mycat的官网有些随意,而jdbc-sharding官网更加正规(起码看起来是这样的),而且还加入了Apache 孵化器。此外,我还比对了git上两者的情况,查看了jdbc-sharding更新的频率和issue解决的数量、及时解决的程度等,认为jdbc-sharding更适合入手。

    因为我没实际做过分库分表,这回想学习一下,了解里面的原理。这样的话,需要开源框架的及时反馈。而且更新的频率快,也说明有人一直在维护。

    1.Mycat

     Mycat是数据库分库分表中间件。面对分库分表,可能比较蒙,查了很多资料,下面链接介绍了各个组件的概况:

    https://dbaplus.cn/news-11-1854-1.html

    官网地址:http://www.mycat.io/

    2.jdbc-sharding

     官网地址:https://shardingsphere.apache.org/document/current/cn/overview/

    2.1 HelloWorld

    开源框架的学习,hello-world当然是从它提供的demo开始。在这里,我不建议你去搜索别人的搭建文章,而是先去看官网的例子,它是最权威最规范的。

    地址:

    https://github.com/apache/incubator-shardingsphere-example

    请选择dev以外的版本下载(我用的是tag 3.1.0版本)

    然后按照他的要求一步步做就可以了。在这里要注意的是,你的mysql数据库最好是5.X版本的,如果是8版本的话,会报错。

    (P.S. 我用的mysql 8 进行验证的,结果跑错,弄了好久也没弄出,最后下载mysql5.6,重新尝试,OK)

     未完待续。。。

     (2019.06.02)

    参考资料:

    https://baijiahao.baidu.com/s?id=1614304400276051465&wfr=spider&for=pc

  • 相关阅读:
    Java多线程知识-Callable和Future
    C#程序集Assembly学习随笔(增补版,附图)_AX
    C#程序集Assembly学习随笔(第一版)_AX
    【.Net】 C#访问修饰符
    访问修饰符(C# 编程指南)
    Restful API 架构与设计参考原则
    RESTful API 设计指南
    WebService的两种方式SOAP和REST比较
    公众号
    es6(const、let)
  • 原文地址:https://www.cnblogs.com/lihao007/p/10802036.html
Copyright © 2011-2022 走看看