登录
  • 欢迎访问悠扬的技术博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站😉

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

ShardingSphere 悠扬 4180次浏览 已收录

区别

  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如何选择(未完待续)

混合架构

   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依然可用。

三、痛点和选型

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

版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Mycat与ShardingSphere如何选择(未完待续)
喜欢 (3)
支付宝[]
分享 (0)
悠扬
关于作者:
10年以上工作经验:6年以上微服务架构设计搭建经验。 曾任岗位:项目经理、架构师。 擅长领域:大数据、数据库,架构设计,资源优化。 获得业绩: 1.实用新型发明专利1个,修改Apache Sharding源码设计实现分库分表程序增强方案。 2.开源项目一个:https://gitee.com/zsiyang/ruoyi-vue-atomikos (加入开源生态圈)。 3.个人技术博客地址:https://www.nxhz1688.com