Docker下kafka学习,三部曲之一:极速体验kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,从本章开始我们先极速体验,再实战docker下搭建kafka环境,最后开发一个java web应用来体验kafka服务。

我们一起用最快的速度体验kafka的消息发布订阅功能:

新建一个docker-compose.yml文件,内容如下:

version: '2'
services:
  zk_server: 
    image: daocloud.io/library/zookeeper:3.3.6
    restart: always
  kafka_server: 
    image: bolingcavalry/kafka:0.0.1
    links: 
      - zk_server:zkhost
    command: /bin/sh -c '/usr/local/work/start_server.sh'
    restart: always
  message_producer: 
    image: bolingcavalry/kafka:0.0.1
    links: 
      - zk_server:zkhost
      - kafka_server:kafkahost
    restart: always
  message_consumer: 
    image: bolingcavalry/kafka:0.0.1
    links: 
      - zk_server:zkhost
    restart: always

打开终端,在docker-compose.yml所在目录下执行docker-compose up -d,由于需要从hub.docker.com下载镜像,所以需要等待几分钟,下载结束后会自动启动四个容器,如下图:

为了更好的观察效果,我们要打开三个终端对不同的容器做操作,在后面我们用编号来表达不同的终端,编号对应如下:

1号 : kafka server 2号 : 消息生产者(producer) 3号 : 消息消费者(consumer)

1号终端中输入以下命令,即可看到kafka server的实时输出信息:

docker logs -f dockerkafka_kafka_server_1

输入命令后看到的信息如下图,与zookeeper连接成功,启动成功:

2号终端中输入以下命令,进入消息生产者容器:

docker exec -it dockerkafka_message_producer_1 /bin/bash

再执行以下命令创建一个主题:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-topics.sh --create --zookeeper zkhost:2181 --replication-factor 1 --partitions 1 --topic test001

3号终端中输入以下命令,进入消息消费者容器:

docker exec -it dockerkafka_message_consumer_1 /bin/bash

执行以下命令可以查看当前kafka sever上的所有主题:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-topics.sh --list --zookeeper zkhost:2181

可以看到刚才在2号终端创建的主题,如下图:

继续在3号终端上执行以下命令,即可订阅主题为test001的消息:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-console-consumer.sh --zookeeper zkhost:2181 --topic test001 --from-beginning

此时回到1号终端,可以看到消息订阅者容器的连接信息,如下图:

现在主题也创建了,订阅也添加了,可以测试消息的发送和接收了:

在2号终端,执行以下命令,就可以进入发送消息的交互模式:

$WORK_PATH/$KAFKA_PACKAGE_NAME/bin/kafka-console-producer.sh --broker-list kafkahost:9092 --topic test001

此时已经进入了交互模式,继续输入一个字符串,例如hello world!,再输入回车键,即可发送内容为”hello world!”的消息,如下图:

现在回到3号终端,可以看到已经接收到了最新的消息,内容被打印出来了,如下图:

最后我们回到1号终端,能看到消息生产者的连接信息,如下图:

至此,我们快速体验了kafka的消息发布订阅功能,下一章我们再细说docker下kafka环境的搭建过程。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

linux下清除Squid缓存的方法记录

在日常运维工作中,只要用到squid缓存服务,就会常常被要求清理squid缓存。 比如公司领导要求删一篇新闻,新闻是生成的静态。运维人员把服务器上静态的新闻页面...

18510
来自专栏云计算教程系列

如何在Centos7上安装保护Redis

Redis是一个开源的内存数据结构存储,擅长缓存。Redis是一个非关系型数据库,以其灵活性,性能,可伸缩性和广泛的语言支持而闻名。

693
来自专栏逸鹏说道

Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件

异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www...

35413
来自专栏KaliArch

Kubernetes+Prometheus+Grafana部署笔记

Kubernetes(通常写成“k8s”)Kubernetes是Google开源的容器集群管理系统。其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应...

934
来自专栏LanceToBigData

MySQL集群(三)mysql-proxy搭建负载均衡与读写分离

前言 前面学习了主从复制和主主复制,接下来给大家分享一下怎么去使用mysql-proxy这个插件去配置MySQL集群中的负载均衡以及读写分离。 注意:这里比较坑...

3539
来自专栏挖掘大数据

如何高效地合并Spark社区PR到自己维护的分支

最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2...

2938
来自专栏性能与架构

快速搭建Storm集群环境

前言 Storm 是一个分布式计算框架,适用于大规模数据的实时计算。 对于分布式技术的学习,可能首先让人头大的就是集群环境的搭建,如何快速的搭建集群环境,让我们...

35410
来自专栏小樱的经验随笔

使用VMWareWorkstation10搭建学习环境笔记

第一节:介绍虚拟化技术 虚拟化技术 1.在一台计算机运行多个操作系统 2.教学环境 测试环境 3.和硬件无关 4.P to V   物理机->虚拟机(Physi...

5305
来自专栏smy

linux常用目录简介

简单归纳: /bin目录(binary)是二进制执行文件目录,主要用于具体应用 /sbin目录(system binary)是系统管理员专用的二进制代码存放目录...

3516
来自专栏张泽旭的专栏

【腾讯云的1001种玩法】hadoop 伪分布式搭建

Hadoop实现了一个分布式文件系统(简称HDFS)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high...

1.3K0

扫码关注云+社区