概念
- message queue
- 解耦:降低发送方和接收方的依赖
- 异步:写入即执行完毕,执行成功再进行通知
- 削峰:高并发不能直接让数据库读写,将数据放在MQ积压,用更长的时间去处理数据
消息队列Kafka
使用场景
- 搜索服务,直播服务,订单服务,支付服务
- 搜索,点赞,评论,收藏
概念
生产者与消费者
生产者producer:消息发布者 消费者consumer:消息订阅者
主题与分区
主题topic:每一个主题对应一个消息队列 分区partition:设置多条队列进行处理
broker与集群
broker:一个kafka服务器 集群cluster:若干个broker组成一个集群,集群中的某个broker负责管理集群
redis的消息队列实现
向消息队列comment中添加键值对Tom-aaa *表示默认ID 返回消息时间戳
XADD comment * Tom aaa
删除消息
XDEL comment ID
查看所有消息
XRANGE comment - +
查看消息队列comment长度
XLEN comment
创建一个消费者组group1 id为0
XGROUP CREATE students group1 0
为这个消费者组group1创建一个消费者consumer1
XGROUP CREATECONSUMER students group1 consumer1
查看消费者组的信息
XINFO GROUPS comment
读取一个信息,整个消费组游标会下移
XREADGROUP GROUP group1 consumer1 count 1 STREAMS comment >
go-redis的实现
可以使用list列表去实现消息队列,或者消息订阅与发布