摘要:
JMM本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量的访问方式。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。 JMM关于同步的规定 线程解锁前,必须把共享变量的值刷新回主内存 线程加锁前,必须读取主内存的最新值到自己的工作内存 加锁解锁是同 阅读全文
摘要:
怎么保证MQ的高可用 RocketMQ 采用的双主双从同步写的方法。 每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下: 优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与 阅读全文
摘要:
怎么保证消息的不丢失 原因 消息生产者没有成功发送到MQ Broker 消息发送给MQ Broker后,Broker 宕机后导致内存中的消息数据丢失 消费者获取到消息,但消费者还没有来得及处理宕机了,但此时MQ中的消息已经删除,消费者重启后不能再消费之前的消息 解决思路 消息发送者发送给MQ Bro 阅读全文
摘要:
怎么保证消息的幂等性 出现非幂等性的情况 1、生产者已把消息发送到mq,在mq给生产者返回确认消息的时候网络中断,故生产者未收到确定信息,生产者认为消息未发送成功,但实际情况是,mq已成功接收到了消息,在网络重连后,生产者会重新发送刚才的消息,造成mq接收了重复的消息 2、消费者在消费mq中的消息时 阅读全文
摘要:
MQ怎么解决消息堆积的问题 网上普通回答 修复consumer的问题,确保其恢复消费速度,然后将现有consumer都停止 临时建立好原先10倍或者20倍的queue数量 然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立 阅读全文