本文基于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模拟测试7~13

    苟且Rank#1.第二次分机房结束. 得到了喘息一会的权利. 在最后两场考试中大脸skyh慷慨舍弃264分让出Rank#1的故事也十分感人 然而还是有很多东西值得思考. 虽说是反思,但是还是有一些地方 ...

  2. CSS(5)---通俗讲解盒子模型

    CSS(5)---盒子模型 盒子模型四个关键字:内容(content).填充(padding).边框(border).边界(margin), CSS盒子模式都具备这些属性. 一.概念 1. 概念 盒子 ...

  3. Tomcat性能调优实战

    今日帮朋友做了tomcat性能调优的实际操作,心得记录一下. 服务器:Windows2017 配置:CPU 4 内存 8G Tomcat8.0+版本. 压力测试工具:apache-jmeter-4.0 ...

  4. Project Euler 52: Permuted multiples

    可以看到数字125874的两倍251748和它有着完全相同的数字,只是顺序不同而已.求一个最小的正整数\(x\),使得\(2x,3x,4x,5x,6x\)都有完全相同的数字. 分析:此题的思路比较直接 ...

  5. 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。

    描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...

  6. SysTick系统定时器

    1.SysTick定时器介绍 SysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个 外设,被嵌入在 NVIC 中.它是一个24 位向下递减的定时器,每计数一 次所需时间为 ...

  7. JavaScript中BOM与DOM的使用

    BOM: 概念:Browser Object Model 浏览器对象模型 将浏览器的各个组成部分封装成对象. 组成: Window:窗口对象 Navigator:浏览器对象 Screen:显示器屏幕对 ...

  8. C# II: Class ViewModelBase and RelayCommand in MVVM

    好久不写WPF和MVVM,新建一个Project后,想起来ViewModelBase和RelayCommand没有.以下Code摘自MSDN上的Article:Patterns - WPF Apps ...

  9. C++中对C的扩展学习新增语法——函数重载

    函数重载 1.函数重载语法 1.同一个作用域(全局作用域.命名空间作用域.类作用域) 2.参数个数不同 3.参数类型不同 4.参数顺序不同 代码实现: 当函数名字一样的时候,通过参数类型.参数个数.参 ...

  10. PHP Laravel 6.2 中用于用户登录的新密码确认流程

    Laravel 发布了 v6.2 版本,它添加了一个新的密码确认功能,该功能使你可以要求已登录的用户重新输入密码,然后才能访问路由. 在你执行敏感操作的时候,这个功能就类似GitHub确认对话框.在 ...