rabitmq 异常处理, redis主从异常

rabitmq 异常处理:
1,首先rabbitmq重启后queue和Exchange会被清除,包括数据,为了避免此类发生需要使用持久化技术
1,服务器异常:采用永久话的队列存储,这样就算服务器崩溃了,重新启动还会有队列信息
channel.queue_declare(queue = 'hello',durable=True)
采用永久消息的持久化
chanel.basic_publish(exchange='',
routing_key='name1',
body ='HELLO WORD!',
properties=pika.BasicProperties(
delivery_mode=2)#彻底将队列中的信息持久化。
)
2,消费者挂掉,需要指定 no_ack=False 说明,消费完了消息就会通知给queue,然后才删除
channel.basic_consume(callback,
queue='hello',
no_ack=True)
redis 主从异常:
1,什么是 RDB:
在 Redis 运行时,RDB 程序将当前内存中的数据库快照保存到磁盘文件中,在 Redis 重启动时, RDB 程序可以通过载入 RDB 文件来还原数据库的状态
2,从Redis 死机:
1)在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据
2),主从断线后恢复的情况下实现增量复制,不是 RDB操作,主节点和从节点分别维护一个复制偏移量(offset),offset用于判断主从节点的数据库状态是否一致:如果二者offset相同,则一致;如果offset不同,则不一致,此时可以根据两个offset找出从节点缺少的那部分数据。例如,如果主节点的offset是1000,而从节点的offset是500,那么部分复制就需要将offset为501-1000的数据传递给从节点。而offset为501-1000的数据存储的位置
3,主服务器死机:
1),第一步,在从数据库中执行SLAVEOFNO ONE命令,断开主从关系并且提升为主库继续服务;
2),第二步,将主库重新启动后,执行SLAVEOF命令,将其设置为其他库的从库,这时数据就能更新回来
posted @ 2018-12-21 00:09  十七楼的羊  阅读(378)  评论(0编辑  收藏  举报