首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

数据库系列: 主流分库分表中间件介绍(图文总结)

编程知识
2024年08月02日 08:15

相关文章

数据库系列:MySQL慢查询分析和性能优化
数据库系列:MySQL索引优化总结(综合版)
数据库系列:高并发下的数据字段变更
数据库系列:覆盖索引和规避回表
数据库系列:数据库高可用及无损扩容
数据库系列:使用高区分度索引列提升性能
数据库系列:前缀索引和索引长度的取舍
数据库系列:MySQL引擎MyISAM和InnoDB的比较
数据库系列:InnoDB下实现高并发控制
数据库系列:事务的4种隔离级别
数据库系列:RR和RC下,快照读的区别
数据库系列:MySQL InnoDB锁机制介绍
数据库系列:MySQL不同操作分别用什么锁?
数据库系列:业内主流MySQL数据中间件梳理
数据库系列:巨量数据表的分页性能问题

1 介绍

物理服务机的CPU、内存、存储设备、连接数等资源有限,某个时段大量连接同时执行操作,会导致数据库在处理上遇到性能瓶颈。为了解决这个问题,行业先驱门充分发扬了分而治之的思想,对大库表进行分割,
然后实施更好的控制和管理,同时使用多台机器的CPU、内存、存储,提供更好的性能。而分治有两种实现方式:垂直拆分和水平拆分。

  • 垂直拆分(Scale Up)分为垂直分库和垂直分表,主要按功能模块拆分,以解决各个库或者各个表之间的资源竞争。比如分为订单库、商品库、用户库...这种方式,多个数据库之间的表结构是不同的。
  • 水平拆分(Scale Out)又分为库内分表和分库分表,来解决单表中数据量增长出现的压力,这些数据库中的表结构完全相同。

详细可以参考笔者的这两篇文章:
MySQL全面瓦解28:分库分表
MySQL全面瓦解29:分库分表之Partition功能详解

2 常见主流中间件介绍

既然已经是实现了分库分表的方案,那么就需要有便捷的组件来支持管理.
分库分表中间件是数据库架构中用于解决高并发、大数据量等问题的关键组件。这些中间件通过数据分片、路由、负载均衡等功能,提高了数据库的性能和扩展性。以下是一些常见的分库分表中间件介绍:

2.1 ShardingSphere

概述

  • ShardingSphere是一款开源的分布式数据库中间件,提供了分库分表、读写分离、分布式事务等功能。
  • 它支持多种数据库,如MySQL、PostgreSQL、Oracle、SQL Server等,并且可以与现有的数据库系统无缝集成。

架构与原理

ShardingSphere由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar三个主要组件组成。

  • Sharding-JDBC:用于实现分库分表功能的模块,它可以在应用层通过简单的配置实现透明的分库分表操作。
  • Sharding-Proxy:用于实现数据库代理功能的模块,它可以将数据库请求路由到不同的数据库节点上,实现读写分离和负载均衡。
  • Sharding-Sidecar(规划中):定位为Kubernetes的云原生数据库代理,以Sidecar的形式代理所有对数据库的访问。

image

其原理是通过数据分片和路由来实现分库分表。数据分片是将数据划分为多个片段,每个片段存储在不同的数据库实例或数据表中;路由则是根据数据的分片规则将请求路由到对应的数据库实例或数据表上。

优势与适用场景

  • 灵活的扩展性:支持水平扩展和垂直扩展,可以根据业务需求灵活调整数据库的规模和性能。
  • 高可用性:支持主从复制和多活架构,提供高可用的数据库访问和数据保护。
  • 简化开发和维护:提供了简单易用的接口和配置,可以减少开发人员的工作量和维护成本。
  • 适用于高并发访问、大数据量存储、跨地域部署等场景。

2.2 MyCAT

概述

  • MyCAT是一个开源的分布式数据库中间件,基于Java编写,支持MySQL协议,可以作为MySQL的代理服务器使用。
  • 它支持分库分表、读写分离、全局序列号等功能,并且具有跨语言、跨平台、跨数据库的通用性。

架构与原理

  • MyCAT采用代理模式来实现数据库的路由和分片。
  • 它包括MyCAT-Server和MyCAT-DataNode两个主要部分。MyCAT-Server用于接收客户端的数据库请求,并将请求路由到不同的数据库节点上;MyCAT-DataNode则用于实际存储数据的数据库节点。

image

优势与适用场景

  • 易于部署和使用:对于项目来说是透明的,如果遇到升级之类的操作,只需要在中间件层面进行即可。
  • 适用于大规模MySQL集群的管理和扩展问题。
  • 但是,MyCAT的SQL支持相对较弱,可能需要对SQL语句进行一定的改写和优化。

2.3 Vitess

概述

  • Vitess是由YouTube开发的一个开源分布式数据库中间件,主要用于解决大规模MySQL集群的管理和扩展问题。

架构与原理

  • Vitess提供了数据分片、读写分离、水平扩展等功能,并且具有强大的负载均衡和故障恢复能力。
  • 它通过vtgate(Vitess的查询路由器)来实现对数据库的访问控制和负载均衡。

优势与适用场景

  • 适用于大规模MySQL集群的场景,具有强大的水平扩展和负载均衡功能。
  • 但是,Vitess对于非MySQL数据库的支持较弱,可能不适用于其他类型的数据库系统。

2.4 其他中间件介绍

除了上述三种常见的分库分表中间件外,还有其他一些中间件如Cobar(已逐渐被淘汰)、TDDL(淘宝分布式数据层)、Atlas(Qihoo 360开源)等。这些中间件在特定的历史时期或特定的业务场景下有一定的应用价值,但随着技术的发展和市场的变化,它们的使用范围和影响力逐渐减弱。

3 总结

在选择分库分表中间件时,需要根据具体的业务需求、技术栈、性能要求等因素进行综合考虑。ShardingSphere、MyCAT和Vitess是当前较为流行和成熟的中间件选择,它们各自具有不同的优势和适用场景。同时,也需要关注中间件的发展动态和社区支持情况,以便在后续的技术升级和维护中获得更好的支持。

From:https://www.cnblogs.com/wzh2010/p/18031229
本文地址: http://shuzixingkong.net/article/688
0评论
提交 加载更多评论
其他文章 jpa+querydsl的平替国产easy-query最好用的orm
jpa+querydsl的平替国产easy-query最好用的orm 一款国产最强java orm,完美支持可控强类型dsl,外加完美支持对象模型筛选拉取的orm,拥有非常智能的include(s)一对多、一对一、多对多、多对一实现的orm 地址github: https://github.com/
用了组合式 (Composition) API 后代码变得更乱了,怎么办?
组合式 (Composition) API 的一大特点是“非常灵活”,但也因为非常灵活,也可能导致我们的代码变得愈发混乱,最终到达无法维护的地步。
用了组合式 (Composition) API 后代码变得更乱了,怎么办? 用了组合式 (Composition) API 后代码变得更乱了,怎么办? 用了组合式 (Composition) API 后代码变得更乱了,怎么办?
还在为找开源项目发愁么?或许这个项目能帮助你
大家好,我是晓凡。 有很多小伙伴尤其是在校大学生或者想转软件开发的小伙伴,经常会问:准备找工作了,没有项目经验怎么办呢? 这时候上网找开源项目学习,就是一个获取项目经验比较靠谱的途径。 这时候又有小伙伴问了,去哪找开源项目呢? 当然是全球最大的的同性交友网站 GitHub 上找了。 这时候又有小伙伴
还在为找开源项目发愁么?或许这个项目能帮助你 还在为找开源项目发愁么?或许这个项目能帮助你 还在为找开源项目发愁么?或许这个项目能帮助你
产品、开发、测试人手一份:升级上线检查清单大全
在软件开发过程中,尤其是在准备将新功能或修复后的版本上线之前,进行详尽的自测和上线前检查是至关重要的。以下是一个从多个维度综合考量的上线升级检查清单(Checklist),旨在帮助团队确保软件质量、稳定性和安全性: 1、代码质量与构建检查 代码审查已完成 所有代码变更已通过单元测试,特别是与升级相关
浅析前端数据埋点监控:用户行为与性能分析的桥梁
总的来说,前端埋点技术不仅是提升用户体验和产品运行效率的利器,更是实现数据驱动决策的重要工具。随着各类专业工具的出现,如腾讯有数、百度统计和微软Clarity,企业可以根据需求选择最适合的工具进行数据分析和优化,从而在竞争激烈的市场中保持领先地位。通过深入理解用户行为和性能数据,企业能够做出更明智的
浅析前端数据埋点监控:用户行为与性能分析的桥梁 浅析前端数据埋点监控:用户行为与性能分析的桥梁 浅析前端数据埋点监控:用户行为与性能分析的桥梁
.NET8 Blazor 从入门到精通:(一)关键概念
目录Blazor 的关键概念项目模板Razor 语法依赖注入注入配置HeadOutlet 组件@code 分离Blazor 调试CSS 隔离调用JavaScript 最近在学习 Blazor ,在B站上找了一个国外的课程边看边学习。嗯,原价¥1503的课程,大概200多美元,课程链接如下: B站(大
.NET8 Blazor 从入门到精通:(一)关键概念 .NET8 Blazor 从入门到精通:(一)关键概念 .NET8 Blazor 从入门到精通:(一)关键概念
Netty的源码分析和业务场景
Netty 是一个高性能、异步事件驱动的网络应用框架,它基于 Java NIO 构建,广泛应用于互联网、大数据、游戏开发、通信行业等多个领域。以下是对 Netty 的源码分析、业务场景的详细介绍: 源码概述 Netty 的核心组件:Netty 的架构设计围绕着事件驱动的核心思想,主要包括 Chann
SourceGenerator 生成db to class代码优化结果记录
优化 上一次实验 代码写的较为随意,本次穷尽所学,优化了一把, 不过果然还是没 比过 Dapper aot, 虽然没使用 Interceptor, 但理论上其优化不该有这么大差距 知识差距不少呀,都看不懂 Dapper aot 利用了什么姿势领先, 有大神们能教教吗? 优化点 减少类型判断 提前 做