kafka消息队列入门

程序员卷不动了 2023-02-13 PM 221℃ 0条
消息队列 Kafka入门
1、消息队列概括

一、应用场景

消息队列是分布式系统中的重要组件,主要解决应用解耦,异步消息,流量削峰登问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有:rocketmqrabbitmqkafkazoreMq

二、消息队列模型

消息队列存在两种模型:队列模型和发布订阅模型

队列模型,也称点对点模型,多个消费者共同消费一个队列,每条消息只发送给一个消费者

点对点

订阅发布模式,多个消费者订阅主题,每个消费会发布给所有消费者

发布订阅模式

两种模式下的优缺点:

  • 队列模式中多个消费者共同消费一个队列,效率高
  • 发布定于模式中,一个消息可以被多次消费能支持冗余的消费(假如两个消费者共同消费一个消息,防止其中某个消费者挂,同时业务也会有多次处理的问题)
2、kafka安装

docker-compose安装方式

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper   ## 镜像
    container_name: zookeeper
    ports:
      - "2181:2181"                 ## 对外暴露的端口号
  kafka:
    image: wurstmeister/kafka       ## 镜像
    container_name: kafka
    volumes:
        - /etc/localtime:/etc/localtime ## 挂载位置(kafka镜像和宿主机器之间时间保持一直)
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.2.163         ## 修改:宿主机IP
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181       ## 卡夫卡运行是基于zookeeper的
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_LOG_RETENTION_HOURS: 120
      KAFKA_MESSAGE_MAX_BYTES: 10000000
      KAFKA_REPLICA_FETCH_MAX_BYTES: 10000000
      KAFKA_GROUP_MAX_SESSION_TIMEOUT_MS: 60000
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_DELETE_RETENTION_MS: 1000
  kafka-manager:
    image: sheepkiller/kafka-manager                ## 镜像:开源的web管理kafka集群的界面
    container_name: kafka-manager
    environment:
        ZK_HOSTS: zookeeper:2181                         ## 修改:宿主机IP
    ports:
      - "9009:9000"                                 ## 暴露端口 9000这个端口冲突太多
3、kafka概念

kafka是一个分布式、高吞吐量、高扩展性的消息队列系统。

  • message:消息实体,是通信的基本单位,每个producer可以向一个topic发布一些消息
  • producer:生产者,也就是向kafka服务器发送消息
  • consumer:消费者,读取kafka中的消息
  • consumer group:消费者组,一个topic中的消息,在同一个消费者组中只有一个消费者能消费
  • topic:话题,kafka中用于区分不同类别消息的名称,由producer指定
  • partition:分区,topic物理上的分组,一个topic可以分为多个partition,每个parition都是一个有序的队列
  • broker:服务集群,已发布的消息保持在一组服务器中
标签: kafka, 消息队列

非特殊说明,本博所有文章均为博主原创。

评论啦~