分库分表的一般做法 中间件的形态

简介: 【7月更文挑战第14天】

分库分表的一般做法

一般会使用三种算法:

  1. 哈希分库分表:根据分库分表键算出一个哈希值,根据这个哈希值选择一个数据库。最常见的就是数字类型的字段作为分库分表键,然后取余。比如在订单表里,可以按照买家的ID除以8的余数进行分表
  2. 范围分库分表:将某个数据按照范围大小进行分段。比如说根据ID,[0,1000)在一张表,[1000,2000)在另外一张表。最常见的应该是按照日期进行分库分表,比如每个月一张表
  3. 中间表:引入一个中间表来记录数据所在的目标表。一般是记录主键到目标表的映射关系。

这三者并不互斥,也就是说可以考虑使用哈希分库分表,同时引入一个中间表;也可以先进行范围分库分表,再引入一个中间表。

分库分表中间件的形态

  1. SDK形态:通过依赖的形式引入代码里,比如Java的依赖ShardingSphere
  2. Proxy形态:独立部署的分库分表中间件,对于所有的业务方来说,就像一个普通的数据库,业务方的查询发送过去后,就会执行分库分表,发起实际的查询,再把查询结果返回给业务方。ShardingSphere也支持这种形态。

  3. Sidecar形态:提供了一个分库分表的Sidecar,但是现在并没有非常成熟的产品

    Sidecar是一种分库分表中间件的形态。它是一个理论上的概念,指的是一个独立的组件,为应用程序提供分库分表的功能。在这种形态下,Sidecar作为应用程序的伴随服务运行,类似于服务网格中的Sidecar容器,它与应用程序实例部署在一起,但作为独立的进程运行。

其中,SDK形态的性能最好,但是和语言强耦合。
Proxy形态性能最差,因为所有的数据库查询都发送给它了,很容易成功性能瓶颈。尤其单机部署Proxy的话,还面临着单节点故障的问题。优点是跟编程语言无关,部署一个Proxy之后可以给使用不同编程语言的业务使用。同时,业务方可以轻易地从单库单表切换到分库分表。

目录
相关文章
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
1081 2
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
消息中间件 存储 网络协议
消息中间件RabbitMQ---概述和概念 【一】
该文章提供了对消息中间件RabbitMQ的全面概述,包括其核心概念、工作原理以及与AMQP和JMS的关系。
消息中间件RabbitMQ---概述和概念 【一】
|
消息中间件 监控 负载均衡
中间件RabbitMQ性能瓶颈
【7月更文挑战第13天】
1103 11
|
消息中间件 编解码 Docker
Docker部署RabbitMQ消息中间件
【7月更文挑战第4天】Docker部署RabbitMQ消息中间件
641 3
|
消息中间件 NoSQL Kafka
消息中间件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之间的区别
消息中间件(RocketMQ、RabbitMQ、ActiveMQ、Redis、kafka、ZeroMQ)以及之间的区别
|
消息中间件 Java Spring
实现Spring Boot与RabbitMQ消息中间件的无缝集成
实现Spring Boot与RabbitMQ消息中间件的无缝集成
|
消息中间件 Java Spring
实现Spring Boot与RabbitMQ消息中间件的无缝集成
实现Spring Boot与RabbitMQ消息中间件的无缝集成
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
14911 1

热门文章

最新文章