MySQL-lesson12-分布式架构 Mycat

2020-02-11  本文已影响0人  noodlesbook

1、何为数据切分?

简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面以达到分散单库(主机)负载的效果。

切分原则:
1、尽量不拆分,架构是进化而来的,不是一蹴而就的;
2、最大可能的找到最合适的切分维度
3、由于数据库中间件对数据Join实现的优劣难以把握,而且实现高性能难度极大,业务读取尽量少使用多表Join
4、尽量通过数据冗余,分组避免数据跨库多表Join.
5、尽量避免分布式事务
6、单表切分数据1000万以内

1.1 针对数据源管理,目前主要有两种思路:

1.2 企业级的分布式策略

要达到的目的:

  1. 数据量要均匀
  2. 业务访问要均匀
  3. 高可用策略
  4. 降低耦合
  5. 具备单节点的所有SQL功能
  6. 可选择多种分片策略

2、MyCAT基础架构图

image.png

2.1 Mycat功能特性

支持Mysql集群,可以作为proxy使用
自动故障切换,高可用性
支持读写分离,支持Mysql双主多从、一主多从的模式

2.2 Mycat原理

拦截用户发过来的SQL语句,首先对SQL语句做了一些特定的分析,比如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

2.3 Mycat应用场景

1、单纯的读写分离,此时配置最为简单,支持读写分离、主从切换、分库分表,对于超过1000万的表进行分片,最大支持1000亿的单表分片
2、多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化
3、报表系统,借助于Mycat分表能力,处理大规模报表的统计

3、安装部署

上一篇下一篇

猜你喜欢

热点阅读