分库分表落地解决方案

简介: 随着系统不断的运行,当数据库的数据开始超过千万、上亿时,mysql数据库将承受更大的压力。数据是企业生存的根本,数据库的健康状况将直接决了定企业的竞争力。 解决思路 为了更好的缓解数据库压力,使得系统更高效的运行,落地的解决方案有:1、分库(也叫垂直拆分,即:每个模块对应一个单独的数据库)。2、分表(也叫水平拆分,即:一张表的数据拆分存储到多张表里)。 引入的新问题 1、数

随着系统不断的运行,当数据库的数据开始超过千万、上亿时,mysql数据库将承受更大的压力。数据是企业生存的根本,数据库的健康状况将直接决了定企业的竞争力。

解决思路

为了更好的缓解数据库压力,使得系统更高效的运行,落地的解决方案有:1、分库(也叫垂直拆分,即:每个模块对应一个单独的数据库)。2、分表(也叫水平拆分,即:一张表的数据拆分存储到多张表里)。

引入的新问题

1、数据库分离的同时,也引入了分布式事物的问题。2、表的水平拆分的同时,也带来了很多的挑战,比如:分页查询、表数据的后续扩展、数据的存储和检索策略。

落地解决方案

1、分布式事物的解决方案也有很多,比如:TCC、MQ事物消息等。这里提出方案的是事物补偿,且仅有事务补偿没有回滚。具体做的时候需要注意:将执行一个操作所涉及到的所有校验条件全部提到服务编排层的最前面(包括试算)。若所有的校验条件都通过了,则认为后续执行的业务逻辑一定是通过的。如果执行报错,那么,通过消息队列做三次补偿,补偿仍然失败,手工介入处理。

2、RPC调用、事物补偿引入了并发场景下的接口幂等性问题,这里给出三种解决方案是:a.乐观锁,ID和版本号,update version … where version

3、分表的同时带来了数据的存储和检索问题,这里给的解决方案是:a.根据业务组ID(全局分配唯一)取模运算,比如:10张表,那么,就是取10的模来决定存储的表编号,并存入路由表。业务组的ID是指一个更大的管理单位,比如:某个商户的ID、企业的ID。b.增加路由表,根据业务组ID查找路由表,找到表编号。c.对于没有业务组关联的信息,例如:用户信息,也是直接采用取模的计算方式。对于一些特殊场景的userId,也可以存储到路由表里,检索的时候,优先检索路由表。这里有两个重要的概念第一个是按照业务组ID为单位操作,第二个是根据路由表来查找表编号。

目录
相关文章
|
2月前
|
消息中间件 监控 Cloud Native
云原生架构下的数据一致性挑战与解决方案####
在数字化转型加速的今天,云原生架构以其轻量级、弹性伸缩和高可用性成为企业IT架构的首选。然而,在享受其带来的灵活性的同时,数据一致性问题成为了不可忽视的挑战。本文探讨了云原生环境中数据一致性的复杂性,分析了导致数据不一致的根本原因,并提出了几种有效的解决策略,旨在为开发者和企业提供实践指南,确保在动态变化的云环境中保持数据的完整性和准确性。 ####
|
5月前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
|
5月前
|
运维 Cloud Native
核心系统转型问题之提升云原生分布式转型的效率如何解决
核心系统转型问题之提升云原生分布式转型的效率如何解决
|
存储 负载均衡 Java
Java开发中应对海量数据的分库分表方案探究
在实际的Java开发中,当面临海量数据存储和处理的情况时,单一数据库可能无法满足性能和扩展需求。这时,分库分表方案成为一种常用的解决方案。本文将介绍分库分表的基本概念,并探究其在Java开发中的具体应用和实践。
285 0
|
存储 算法 数据库
一次难得的分库分表实践(上)
一次难得的分库分表实践
|
SQL 调度 数据库
也谈分库分表在实际应用的实践(下)
也谈分库分表在实际应用的实践(下)
239 0
也谈分库分表在实际应用的实践(下)
|
消息中间件 中间件 数据库
也谈分库分表在实际应用的实践(上)
也谈分库分表在实际应用的实践(上)
158 0
也谈分库分表在实际应用的实践(上)
|
消息中间件 关系型数据库 程序员
业务中台数据一致性方案
随着业务的发展,微服务架构逐渐成为当下业务中台的主流架构形式,它不但解决了各个应用之间的解耦问题,同时也解决了单体应用的性能问题实现可扩展可动态伸缩的能力。如下图所示,业务中台就是将平台的通用能力进行下沉,避免重复建设,形成底座平台能力,上层的各个应用服务都是基于中台能力进行快速构建。但是随着应用规模的扩大,原本在单体应用中不是问题的问题,在微服务架构中可能就是比较严重的问题,本文所要探讨的服务之间的数据一致性便是其中最具代表性的问题。本文将结合常见的电商下单场景来说明业务中台数据一致性方案。
业务中台数据一致性方案
|
SQL 运维 中间件
分库分表在大厂的实践
分库分表在大厂的实践
229 0
分库分表在大厂的实践
|
消息中间件 存储 Dubbo
一次难得的分库分表实践(下)
一次难得的分库分表实践