分库分表落地解决方案

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

目录
相关文章
|
Kubernetes Linux Windows
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
889 0
|
Kubernetes Linux iOS开发
使用kubectl连接远程Kubernetes(k8s)集群
在自己本机当中安装kubectl并远程连接Kubernetes(k8s)集群。覆盖了Windows、MacOS和Linux操作系统,步骤超详细,在后面还有关于MacOS和Linux命令自动补全
1592 1
使用kubectl连接远程Kubernetes(k8s)集群
|
设计模式 机器学习/深度学习 SQL
软考高级系统架构设计师通关经验分享
为什么考系统架构设计师是国家设立的计算机技术与软件专业技术资格考试(简称软考)中的一个高级科目,属于工程师高级职称系列,具有一定含金量。浙江省每年通过软考高级的人数约为1000+人,其中系统架构设计师科目的通过人数约为200+人。从学习角度来说,通过准备系统架构设计师的考试的过程,可以查漏补缺,并且了解一些系统架构设计相关的基础知识,实现一定程度上的自我提升;从目的性的角度来说,通过考试,可以在一
14628 4
软考高级系统架构设计师通关经验分享
|
Arthas 测试技术
Arthas下载与启动
Arthas下载与启动
992 0
|
存储 NoSQL Redis
Redis从入门到精通之底层数据结构快表 - QuickList详解
Redis中的快表(QuickList)是一种特殊的数据结构,用于存储一系列的连续节点,每个节点可以是一个整数或一个字节数组。快表是Redis中的底层数据结构之一,常用于存储有序集合(Sorted Set)等数据类型的底层实现。在本文中,我们将深入了解Redis中的快表,包括快表的结构和操作等。
2317 116
Redis从入门到精通之底层数据结构快表 - QuickList详解
|
传感器 编解码 监控
线程池有哪些拒绝策略?
本文介绍了Java线程池的四种拒绝策略:AbortPolicy(默认策略,抛出异常)、CallerRunsPolicy(调用者运行任务)、DiscardPolicy(丢弃任务,不抛异常)和DiscardOldestPolicy(丢弃最旧任务,尝试提交当前任务)。每种策略都有其适用的业务场景,并通过代码示例进行了说明。选择合适的策略取决于具体的应用需求和对任务处理的优先级。
571 0
|
SQL 关系型数据库 Java
分库分表:中间件方案对比
分库分表:中间件方案对比
3157 96
分库分表:中间件方案对比
|
人工智能 智能设计 云计算
阿里云logo设计入口
阿里云logo智能设计一键生成海量LOGO可供选择,阿里云百科分享阿里云LOGO设计生成网址链接以及使用方法,智能LOGO设计,仅需3步,10秒生成,AI匹配海量logo,商用无忧:
8998 1
阿里云logo设计入口
|
SpringCloudAlibaba Java Nacos
springboot整合nacos做配置中心的一次问题排查
这里先把问题陈述一下:**springboot整合nacos做配置中心,使用@NacosConfigurationProperties注解注入bean属性,当nacos前台客户端没有配置这个bean的属性,项目
1512 0
|
SQL 存储 关系型数据库
10个索引失效的坑,你踩中几个
10个索引失效的坑,你踩中几个
724 1
10个索引失效的坑,你踩中几个