美文网首页
MySQL-lesson12-分布式架构 Mycat

MySQL-lesson12-分布式架构 Mycat

作者: noodlesbook | 来源:发表于2020-02-11 16:33 被阅读0次

    1、何为数据切分?

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

    • 切分模式:
      A.垂直切分:针对产品功能拆分,现实是不同业务量是不一样的,没有考虑到用户行为;浪费了硬件,没有达到应该发挥的能力,有局限性。
      B.水平切分:基于一个表的拆分,数据是均匀拆分到多个节点,可以并发读写数据;如果是业务上热点表;热点访问会被均匀拆分开,不管是读还是写。

    • 以上两种切分模式共同缺点:
      1、引入分布式事务的问题
      2、跨节点Join的问题
      3、跨节点合并排序分页问题

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

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

    • A.客户端模式,在每个应用程序模块中配置管理自己需要的一个或多个数据源,直接访问各个数据库,在模块内完成数据的整合。
      优点:相对简单,无性能损耗。
      缺点:不够通用,数据库连接的处理复杂,对业务不够透明,处理复杂。

    • B.通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明。
      优点:通用,对应用透明,改造少。
      缺点:实现难度大,有二次转发性能损失。

    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、安装部署

    相关文章

      网友评论

          本文标题:MySQL-lesson12-分布式架构 Mycat

          本文链接:https://www.haomeiwen.com/subject/txvxfhtx.html