消息队列 | 青训营

39 阅读1分钟

概念

  • 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列表去实现消息队列,或者消息订阅与发布