本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示。本例搭建的示例包含Zookeeper + Kafka + Kafka-manger

#获取镜像

·         zookeeper镜像:zookeeper:3.4.9

·         kafka镜像:wurstmeister/kafka:0.10.2.0

·         kafka-manager镜像:kafka-manager:latest

# 建立Zookeeper容器

这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器。

docker run --name some-zookeeper \

--restart always \

-p 2181:2181 \

-d zookeeper

默认的,容器内配置文件在,/conf/zoo.cfg,数据和日志目录默认在/data 和 /datalog,需要的话可以将上述目录映射到宿主机的可靠文件目录下。

参考:https://hub.docker.com/_/zookeeper/

# 建立kafka节点

这里同样只做一个简单的单点kafka

docker run --name kafka \

-p 9092:9092 \

-e KAFKA_ADVERTISED_HOST_NAME=kafka01 \

-e KAFKA_CREATE_TOPICS="test:1:1" \

-e KAFKA_ZOOKEEPER_CONNECT=100.100.16.231:2181 \

-d  wurstmeister/kafka

参考: https://hub.docker.com/r/wurstmeister/kafka/

# 创建Kafka管理节点

kafka-manager有图形化UI,可以方便的监控集群状态,调整队列配置

docker run -itd \

--restart=always \

--name=kafka-manager \

-p 9000:9000 \

-e ZK_HOSTS="100.100.16.231:2181" \

sheepkiller/kafka-manager

容器启动以后访问主机的9000端口,http://xxx:9000

首次进入需要添加集群

配置好以后,通过Zookeeper该管理节点可以读取到整个Kafka集群的信息,并且我们可以通过JMX直接看到集群的健康状态

# 读写验证

读写验证的方法有很多,这里我们用kafka容器自带的工具来验证,首先进入到kafka容器的交互模式:

docker exec -it kafka /bin/bash

创建一个主题:

/opt/kafka/bin/kafka-topics.sh --create --zookeeper 100.100.16.231:2181 --replication-factor 1 --partitions 1 --topic my-test

查看刚创建的主题:

/opt/kafka/bin/kafka-topics.sh --list --zookeeper 100.100.16.231:2181

发送消息:

/opt/kafka/bin/kafka-console-producer.sh --broker-list  100.100.16.231:9092 --topic my-test

This is a message

This is another message

读取消息:

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 100.100.16.231:9092 --topic my-test --from-beginning

参考:https://kafka.apache.org/quickstart

作者:华为云享专家 菊花茶

基于Docker搭建分布式消息队列Kafka的更多相关文章

  1. 分布式消息队列 Kafka

    分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐.可扩展.分布式等特点 适用场景 活动数据 ...

  2. [转载] 基于Redis实现分布式消息队列

    转载自http://www.linuxidc.com/Linux/2015-05/117661.htm 1.为什么需要消息队列?当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消 ...

  3. Kafka 消息队列系列之分布式消息队列Kafka

    介绍 ApacheKafka®是一个分布式流媒体平台.这到底是什么意思呢?我们认为流媒体平台具有三个关键功能:它可以让你发布和订阅记录流.在这方面,它类似于消​​息队列或企业消息传递系统.它允许您以容 ...

  4. 分布式消息队列kafka

    下载地址:http://kafka.apache.org/downloads.html 先启动zookeeper服务器 bin/zookeeper-server-start.sh config/zoo ...

  5. 分布式消息队列kafka系列介绍 — 核心API介绍及实例

    原文地址:http://www.inter12.org/archives/834 一 PRODUCER的API 1.Producer的创建,依赖于ProducerConfig public Produ ...

  6. 【docker构建】基于docker构建rabbitmq消息队列管理服务

    1. 拉取镜像 # 可以在官网查看版本 [root@VM_0_10_centos wordpress]# docker pull rabbitmq:3.7.7-management 2. 根据拉取的镜 ...

  7. 深入浅出理解基于 Kafka 和 ZooKeeper 的分布式消息队列

    消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件. 本场 Chat 主要内容: Kafk ...

  8. Kafka 和 ZooKeeper 的分布式消息队列分析

    1. Kafka 总体架构 基于 Kafka-ZooKeeper 的分布式消息队列系统总体架构如下: 如上图所示,一个典型的 Kafka 体系架构包括若干 Producer(消息生产者),若干 bro ...

  9. Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇

    目前业界流行的分布式消息队列系统(或者可以叫做消息中间件)种类繁多,比如,基于Erlang的RabbitMQ.基于Java的ActiveMQ/Apache Kafka.基于C/C++的ZeroMQ等等 ...

随机推荐

  1. NOIP模拟21+22

    模拟21确实毒瘤...考场上硬刚T3 2.5h,成功爆零 T1.数论 看这题目就让人不想做,考场上我比较明智的打完暴力就弃掉了,没有打很久的表然后找规律. 正解貌似是乱搞,我们考虑一个比较显然的结论: ...

  2. 三分钟学会Redis在.NET Core中做缓存中间件

    大家好,今天给大家说明如何在.NET Core中使用Redis,我们在想要辩论程序的好与坏,都想需要一个可视化工具,我经常使用的是一位国内大牛开发的免费工具,其Github地址为: https://g ...

  3. 如何编译安装Linux内核

    操作系统环境 VMware workstation15 Pro ubuntu18.04 LTS 待编译内核5.3.10版本 内核下载地址 kernel.org 环境配置 在正式编译前需要安装部分软件. ...

  4. servlet三大组件

    servlet大致可以分为三个:简单servlet.过滤servlet.监听servlet servlet: servlet的创建 创建一个类并实现Servlet接口. 重写service方法. 在服 ...

  5. Junit使用方法

    Junit使用方法 步骤: 定义 一个测试类(测试用例) 建议 测试类名:被测试类名+Test 包名:xxx.xxx.xxx.test 测试方法 建议: 方法名:test测试的方法名 返回值: voi ...

  6. java编程思想第四版第十四章 类型信息习题

    fda dfa 第三题u package net.mindview.typeinfo.test4; import java.util.ArrayList; import java.util.Array ...

  7. 使用Spring安全表达式控制系统功能访问权限

    一.SPEL表达式权限控制 从spring security 3.0开始已经可以使用spring Expression表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限.Spring ...

  8. jsp页面使用EL表达式 使用Jstl标签库中的标签,需要引入jstl.jar和standard.jar

    spring boot 中使用jstl 首先在pom中加入 <dependency> <groupId>jstl</groupId> <artifactId& ...

  9. ReentreantLock:重入锁

    ReentreantLock:重入锁 参考:https://www.cnblogs.com/nullzx/p/4968674.html 一). ReentrantLock与synchronized的区 ...

  10. 一文带你深入了解 redis 复制技术及主从架构

    主从架构可以说是互联网必备的架构了,第一是为了保证服务的高可用,第二是为了实现读写分离,你可能熟悉我们常用的 MySQL 数据库的主从架构,对于我们 redis 来说也不意外,redis 数据库也有各 ...