• Mycat与ShardingSphere如何选择(未完待续)


    区别

    MycatSharding-JDBCSharding-ProxySharding-Sidecar
    官方网站官方网站官方网站官方网站官方网站
    源码地址GitHubGitHubGitHubGitHub
    官方文档Mycat 权威指南官方文档官方文档官方文档
    开发语言JavaJavaJavaJava
    开源协议GPL-2.0/GPL-3.0Apache-2.0Apache-2.0Apache-2.0
    数据库MySQL
    Oracle
    SQL Server
    PostgreSQL
    DB2
    MongoDB
    SequoiaDB
    MySQL
    Oracle
    SQLServer
    PostgreSQL
    任何遵循 SQL92 标准的数据库
    MySQL/PostgreSQLMySQL/PostgreSQL
    连接数
    应用语言任意Java任意任意
    代码入侵需要修改代码
    性能损耗略高损耗低损耗略高损耗低
    无中心化
    静态入口
    管理控制台Mycat-webSharding-UISharding-UISharding-UI
    分库分表单库多表/多库单表✔️✔️✔️
    多租户方案✔️
    读写分离✔️✔️✔️✔️
    分片策略定制化✔️✔️✔️✔️
    分布式主键✔️✔️✔️✔️
    标准化事务接口✔️✔️✔️✔️
    XA强一致事务✔️✔️✔️✔️
    柔性事务✔️✔️✔️
    配置动态化开发中✔️✔️✔️
    编排治理开发中✔️✔️✔️
    数据脱敏✔️✔️✔️
    可视化链路追踪✔️✔️✔️
    弹性伸缩开发中开发中开发中开发中
    多节点操作分页
    去重
    排序
    分组
    聚合
    分页
    去重
    排序
    分组
    聚合
    分页
    去重
    排序
    分组
    聚合
    分页
    去重
    排序
    分组
    聚合
    跨库关联跨库 2 表 Join
    ER Join
    基于 caltlet 的多表 Join
    IP 白名单✔️
    SQL 黑名单✔️
    存储过程✔️

    一、ShardingSphere

    • ShardingSphere-JDBC
    • ShardingSphere-Proxy
    • ShardingSphere-Sidecar(TODO)

    Mycat与ShardingSphere如何选择(未完待续)

    混合架构

       ShardingSphere-JDBC 采用无中心化架构,适用于 Java 开发的高性能的轻量级 OLTP 应用;ShardingSphere-Proxy 提供静态入口以及异构语言的支持,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。
       Apache ShardingSphere 是多接入端共同组成的生态圈。 通过混合使用 ShardingSphere-JDBC 和 ShardingSphere-Proxy,并采用同一注册中心统一配置分片策略,能够灵活的搭建适用于各种场景的应用系统,使得架构师更加自由地调整适合与当前业务的最佳系统架构。

    Mycat与ShardingSphere如何选择(未完待续)

    这里的代理服务,是单机

    Sharding-Proxy整合Haproxy实现高可用

    这里Haproxy负载了多MySQL节点,不是多Sharding-Proxy服务节点,如果用NGINX服务反向代理做负载均衡能否实现Proxy代理服务高可用

    Apache ShardingSphere Proxy 负载均衡小练习

    这个是结合zookper来处理的高可用,里面有服务注册,和节点注册,需要研究看看

    二、Mycat

    HaProxy+Keepalived+Mycat高可用集群配置

    Mycat与ShardingSphere如何选择(未完待续)

    集群部署图理解:
    1、keepalived和haproxy必须装在同一台机器上(如192.168.46.161机器上,keepalived和haproxy都要安装),keepalived负责为该服务器抢占vip(虚拟ip),抢占到vip后,对该主机的访问可以通过原来的ip(192.168.46.161)访问,也可以直接通过vip(192.168.46.180)访问。
    
    2、192.168.46.162上的keepalived也会去抢占vip,抢占vip时有优先级,配置keepalived.conf中的(priority 150 #数值愈大,优先级越高,192.168.46.162上改为120,master和slave上该值配置不同)决定。但是一般哪台主机上的keepalived服务先启动就会抢占到vip,即使是slave,只要先启动也能抢到。
    
    3、haproxy负责将对vip的请求分发到mycat上。起到负载均衡的作用,同时haproxy也能检测到mycat是否存活,haproxy只会将请求转发到存活的mycat上。
    
    4、如果一台服务器(keepalived+haproxy服务器)宕机,另外一台上的keepalived会立刻抢占vip并接管服务。如果一台mycat服务器宕机,haporxy转发时不会转发到宕机的mycat上,所以mycat依然可用。

    三、痛点和选型

    功能MyCatShardingShpere
    联合查询最多支持2表(Share Join)不支持
    高可用HaProxy+Keepalived+Mycatzk方式需要调研
    动态建表不支持不支持
    侵入性除多表联合查询外,不需要修改代码,
    要么修改mycat相关源码,
    要么查出相关数据,使用java代码做关联
    需要修改代码
    代码集成不需要集成到服务需要集成到服务中
    故障转移节点自判断,会有误判断操作,若多节点下,
    单节点服务存在误判断,其他节点与服务不知道,此时会出现多点写入,若按照时间分片,此时数据错乱。
    sharding-ui界面下线,非自动

    Mycat与ShardingSphere如何选择(未完待续)

  • 相关阅读:
    MySql学习笔记02——MySql的简单介绍
    牛客网—栈的压入、弹出序列
    Nginx 40 问!
    Spring Boot Actuator介绍
    [ 云计算 华为云 ] 解决办法:如何更换华为云云耀云服务器L实例的镜像 | 文末送书
    react18-学习笔记6-基础类型-原始数据类型
    CSDN编程竞赛·第六期-赛后感受
    7年阿里测试经验之谈 —— 用UI自动化测试实现元素定位
    科目三: 变道与超车
    .NET MVC第二章、控制器使用
  • 原文地址:https://blog.csdn.net/vc33569/article/details/133178385