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

区别

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

一、ShardingSphere

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

Mycat与ShardingSphere如何选择(未完待续)_第1张图片

混合架构

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

Mycat与ShardingSphere如何选择(未完待续)_第2张图片

这里的代理服务,是单机

Sharding-Proxy整合Haproxy实现高可用

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

Apache ShardingSphere Proxy 负载均衡小练习

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

二、Mycat

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

Mycat与ShardingSphere如何选择(未完待续)_第3张图片

集群部署图理解:
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依然可用。

三、痛点和选型

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

Mycat与ShardingSphere如何选择(未完待续)_第4张图片

你可能感兴趣的:(Apache,ShardingSphere,数据库)