分库分表落地解决方案

简介: 随着系统不断的运行,当数据库的数据开始超过千万、上亿时,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为单位操作,第二个是根据路由表来查找表编号。

目录
相关文章
|
26天前
|
运维 Cloud Native 容灾
核心系统转型问题之单元化架构对于自研可控场景该如何支持
核心系统转型问题之单元化架构对于自研可控场景该如何支持
|
28天前
|
运维 容灾 中间件
核心系统转型问题之实现异地多活单元化能力如何解决
核心系统转型问题之实现异地多活单元化能力如何解决
|
28天前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
|
26天前
|
运维 Cloud Native 容灾
核心系统转型问题之云原生分布式核心,业务敏捷该如何实现
核心系统转型问题之云原生分布式核心,业务敏捷该如何实现
|
28天前
|
运维 Cloud Native
核心系统转型问题之提升云原生分布式转型的效率如何解决
核心系统转型问题之提升云原生分布式转型的效率如何解决
|
28天前
|
存储 容灾 Cloud Native
应用多活技术问题之支撑应用构建多活架构能力如何解决
应用多活技术问题之支撑应用构建多活架构能力如何解决
|
运维 容灾 安全
解决方案架构师郭援非:OceanBase助力金融ECIF“大机下移”分布式
随着“以客户为中心”逐渐成为金融业的战略重心,整合企业各系统分散客户信息的ECIF(Enterprise Customer Information Facility,企业级客户整合系统)应运而生。 ECIF 通过整合企业现有业务系统中的所有客户信息,实时保留客户的最新信息,为各应用系统以联机交易的方式提供实时的、完整的、共享的、一致的客户信息,建立起企业级的客户信息识别系统,在全企业范围内为客户信息的使用和管理提供服务,已成为金融业“以客户为中心”的战略性基础系统。
497 0
解决方案架构师郭援非:OceanBase助力金融ECIF“大机下移”分布式
|
运维 负载均衡 Kubernetes
技术方案(开源方案)选型的考量和方法论
技术方案(开源方案)选型的考量和方法论
|
存储 SQL 消息中间件
如何做一个好的大数据平台架构
如何做一个好的大数据平台架构
577 0
如何做一个好的大数据平台架构
|
消息中间件 关系型数据库 程序员
业务中台数据一致性方案
随着业务的发展,微服务架构逐渐成为当下业务中台的主流架构形式,它不但解决了各个应用之间的解耦问题,同时也解决了单体应用的性能问题实现可扩展可动态伸缩的能力。如下图所示,业务中台就是将平台的通用能力进行下沉,避免重复建设,形成底座平台能力,上层的各个应用服务都是基于中台能力进行快速构建。但是随着应用规模的扩大,原本在单体应用中不是问题的问题,在微服务架构中可能就是比较严重的问题,本文所要探讨的服务之间的数据一致性便是其中最具代表性的问题。本文将结合常见的电商下单场景来说明业务中台数据一致性方案。
业务中台数据一致性方案