分库分表/哨兵模式/RabbitMQ/Redis持久化

随着数据规模的扩大,采用分库分表策略以提升性能,如TDDL、sharding-jdbc等中间件。哨兵模式用于监控Redis,当主服务器宕机时自动切换到从服务器。RabbitMQ用于解耦、异步处理和削峰,通过消息唯一标识防止重复消费。Redis持久化包括RDB和AOF,RDB适合全量备份,AOF记录增量操作,二者结合确保数据安全。Redis Sentinel和Cluster分别提供高可用性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.分库分表:公司数据到达一定规模的时候,进行分库分表
某些表到达一定规模后,建立索引也无法性能提升,这时我们会考虑把单表拆分
应用层依赖类中间件
这类分库分表中间件的特点就是和应用强耦合,
需要应用显示依赖相应的jar包(以Java为例),比如知名的TDDL、
当当开源的sharding-jdbc、蘑菇街的TSharding、携程开源的Ctrip-DAL等。

2。哨兵模式
哨兵 -》独立运行的进程

@通过发送命令,让Redis服务器返回监控状态,包括主服务器和从服务器。
@当哨兵监测到master宕机,自动将slave切换成master,通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。

一个哨兵进程对Redis服务器监控,可能会出现问题,可使用多个哨兵进行监控。各个哨兵之间会进行监控,形成了多哨兵模式。

3.。RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件;
(缺点:消息队列挂了,系统挂了,复杂性提高,消息重复消费)
可以用它来:解耦、异步、削峰。
1.解耦,(系统之间的代码不用调来调去)
2.异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度
3.削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常

如何保证RabbitMQ不被重复消费?
因为网络传输等等故障,确认信息没有传送到消息队列,导致消息队列不知道自己已经消费过该消息了,再次将消息分发给其他的消费者。
针对以上问题,一个解决思路是:保证消息的唯一性
比如:在写入消息队列的数据做(唯一标示),消费消息时,根据唯一标识判断是否消费过
那么如何持久化呢?
将queue的持久化标识durable设置为true,则代表是一个持久的队列
发送消息的时候将deliveryMode=2
这样设置以后,即使rabbitMQ挂了,重启后也能恢复数据

4.Redis持久化(RDB(默认) 和AOF )
RDB的原理是什么?
你给出两个词汇,fork和cow。fork是指re

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值