3.3 KiB
3.3 KiB
- 消息队列
- https://www.bilibili.com/video/BV1yT411H7YK
- RabbitMQ
- 使用场景
- 异步发送 验证码,短信,邮件
- MySQL与Redis,ES之间数据的同步
- 分布式事务
- 削峰填谷
- 消息不丢失
- 消息重复消费
- 死信交换机/延迟队列
- 消息堆积
- 高可用机制
- DOING 消息顺序消费 :LOGBOOK: CLOCK: [2023-10-09 Mon 21:25:36] :END:
- 使用场景
- Kafka
- 消息不丢失
- 消费的顺序性
- 即时消息单对单聊天和群聊,保证发送方和接收方消费顺序一致性
- 充值和消费的消息要顺序发送
- 只提供一个分区,从而避免跨分区消费消息
- 设置同一个分区存储号
- 设置同一个key,保证哈希值相同
- 高可用机制
- 数据存储和清理
- 存储机制
- topic名称,分区号,对应文件夹名称
- 文件分段存储,多个segment
- .index
- .log
- .timeindex
- 删除无用文件更加方便,提高磁盘利用率
- 查找数据更加便捷
- 清理机制
- 清理策略
- 根据消息的保留时间,如果超过指定时间,就会触发清理过程,默认168h
- 根据topic存储数据大小,所占日志文件超过一定阈值,开始删除最早的消息
- 清理策略
- 存储机制
- 高性能设计
- 消息分区:不受单台服务器限制
- 顺序读写:磁盘顺序读写,提高读写效率
- 页缓存:把磁盘中的数据缓存到内存,将对磁盘的访问变为对内存的访问
- 零拷贝:减少上下文切换及数据拷贝
- 通过系统直接将页缓存中的数据拷贝到网卡中,减少内核态和用户态的切换
- 消息压缩:减少磁盘IO和网络IO
- 分批发送:消息打包分批发送,减少网络开销



