🧅【简约入门】消息队列,以kafka开始

435 阅读2分钟

本文共516字

简介

“消息队列”是在消息的传输过程中保存消息的容器。

应用场景

  • 解耦 我的服务通过api调用其他服务,忽然其他的服务不需要了,我还要把不需要的服务去掉。或者某天有人让我加上一个服务地址,不止开发麻烦,还影响性能,所以要把这个服务的api做成一个消息发出去,有人要获取消息就自己连我的消息队列就可以。
  • 削峰 当服务有大流量进来时候,容易把Redis,MySQL打挂掉。所以需要把流量做成向管道一样,每次过得水都一样多,这样服务消费能力一般情况都不会挂掉。
  • 异步 如果是个订单服务,下个单还要等待支付,支付之后还要等待积分计算一系列的操作, 那链路长导致的访问过慢,但是我们发现上面的流程其实可以同时做,你支付成功后,同时积分计算也可以。那就开始下单就进入消息队列,支付和积分同时执行消费,提高效率。

概念

  • 生产者 发送消息的组件
  • 消费者 消费消息的组件
  • 队列 消息存放的组件,像是现实生活中的容器

kafka

组件

  • Topic :主题;消息根据Topic进行归类
  • partition: 分区
  • producer:生产者
  • consumer:消费者
  • broker:每个kafka实例(server)
  • offset:消息偏移量

快速安装

kafka可以通过官网下载:https://kafka.apache.org/downloads 找到安装包:kafka_2.11-2.2.2.tgz。 解压后,进入bin目录执行命令./kafka-server-start.sh   ../config/server.properties 启动服务

测试一下

  • 创建toppic ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic wqy

  • kafka生产者客户端命令 ./kafka-console-producer.sh --broker-list localhost:9092 --topic wqy

  • kafka消费者客户端命令 ./kafka-console-consumer.sh  --bootstrap-server localhost:9092 --from-beginning --topic wqy

  • 删除topic: ./kafka-topics.sh --zookeeper localhost:2181 --delete --topic wqy