数据性能改善——分库分表中间件

一、前言

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

读写分离指的是将数据库分为主从库,一个主库用于写数据,多个从库用来读数据,主从库之间通过某种机制进行数据间的同步。目前多数互联网业务的数据,读多写少,为了线性提升数据库读性能,减少读写锁的冲突而提高写性能,便有了读写分离的做法。但是不是任何情况都需要数据的读写分离,比如,一个订单系统,订单表里的数据量非常庞大,那么这种情况,该做的是对表进行水平切分,原来表里的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

原文地址:https://www.cnblogs.com/lihao007/p/10802036.html