zoukankan      html  css  js  c++  java
  • 消息队列之--Kafak

    序言

    消息丢失如何解决?

    解耦

    异步

    并行

    Docker安装Kafak

    1.下载镜像

    # zookeeper镜像
    docker pull wurstmeister/zookeeper
    # kafka镜像
    docker pull wurstmeister/kafka
    # kafka管理镜像
    docker pull sheepkiller/kafka-manager

    2.运行容器

    启动zookeeper

    docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

    查看zookeeper启动日志

    docker logs -f zookeeper 

    安装kafka

    docker run -d --name kafka 
    --env KAFKA_ADVERTISED_HOST_NAME=localhost 
    --env KAFKA_ZOOKEEPER_CONNECT=192.168.229.129:2181 
    --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.229.129:9092 
    --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 
    --env KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" 
    --net=host wurstmeister/kafka

    查看kafka启动日志

    docker logs -f kafka

    验证:
    进入kafka容器

    docker exec -it kafka /bin/bash
    # 进入kafka的bin目录
    cd /opt/kafka_2.12-2.2.0/bin/

    新建一个test主题,并以生产者身份进行消息生产

    ./kafka-topics.sh --create --zookeeper 192.168.229.129:2181 --replication-factor 1 --partitions 1 --topic test
    ./kafka-console-producer.sh --broker-list 192.168.229.129:9092 --topic test
    >hello # 发送一条消息并回车
    >world

    打开一个新的ssh连接,同样进入kafka容器,模拟消费者接收消息

    docker exec -it kafka /bin/bash
    # 进入kafka的bin目录
    cd /opt/kafka_2.12-2.2.0/bin/
    # 以消费者身份接收消息
    ./kafka-console-consumer.sh --bootstrap-server 192.168.229.129:9092 --topic test --from-beginning
    hello # 成功接收到消息
    world

    不断在生产者端发送消息,消费者端可以不断的接收到消息。kafka安装成功!

    同样,在zookeeper可视化工具,刷新后可以看到kafka的相关数据节点:

    安装kafkamanager

    docker run -d --name kafka-manager -e ZK_HOSTS="192.168.229.129:2181" --net=host sheepkiller/kafka-manager
    firewall-cmd --add-port=9000/tcp

    http://192.168.229.1:9001

    点对点模式

    Kafka 是支持消费者群组的,也就是说 Kafka 中会有一个或者多个消费者,如果一个生产者生产的消息由一个消费者进行消费的话,那么这种模式就是点对点模式

    发布订阅模式

    如果一个生产者或者多个生产者产生的消息能够被多个消费者同时消费的情况,这样的消息队列成为发布订阅模式的消息队列

     

    资料

    http://www.tracefact.net/tech/058.html

    http://kafka.apache.org/

    https://www.cnblogs.com/cxuanBlog/p/11949238.html

    https://www.jianshu.com/p/e642793cd5de

  • 相关阅读:
    request实现登录
    python之对象
    python基础之迭代与解析
    python基础之函数
    linux expect命令使用入门
    Python socket
    1
    蓝牙
    SQL查询语句
    iOS常用小知识纪录
  • 原文地址:https://www.cnblogs.com/cnki/p/11823852.html
Copyright © 2011-2022 走看看