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