0X00 CentOS部署kafka

CentOS7搭建Kafka环境 - 简书Kafka是一个分布式流平台,基于Zookeeper的分布式消息系统;具有高吞吐量、高性能、实时及高可用等特点由服务器和客户端组成,通过高性能的TCP网络协议进行通信。 一、...https://www.jianshu.com/p/7b633fbf5552

0X01 部署Docker版Kafka

镜像:

Docker Hubhttps://registry.hub.docker.com/r/bitnami/kafka

命令:

docker pull bitnami/zookeeper:latest
docker pull bitnami/kafka:latest

docker-compose.yml:

version: "3"
services:zookeeper:image: 'bitnami/zookeeper:latest'ports:- '2181:2181'environment:- ALLOW_ANONYMOUS_LOGIN=yeskafka:image: 'bitnami/kafka:latest'ports:- '9092:9092'environment:- KAFKA_BROKER_ID=1- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181- ALLOW_PLAINTEXT_LISTENER=yesdepends_on:- zookeeper

持久化存储并且额外暴露9093端口的docker-compose.yml:

version: "3"
services:zookeeper:image: 'bitnami/zookeeper:latest'ports:- '2181:2181'environment:- ALLOW_ANONYMOUS_LOGIN=yeskafka:image: 'bitnami/kafka:latest'ports:- '9092:9092'- '9093:9093'volumes:- /home/docker/kafka/kafka_data:/bitnami/kafkaenvironment:- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181- ALLOW_PLAINTEXT_LISTENER=yes- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENTdepends_on:- zookeeper

0X02 执行kafka脚本

官方提供了很多脚本来帮助管理kafka,这些脚本可以在容器内找到:

docker exec CONTAINER_ID find / -name kafka*.sh

但是由于咱们使用的是docker版kafka,宿主机是没有java环境和相关依赖的,所以这些脚本不能拷贝到宿主机然后运行,那么我们就需要使用docker exec命令来运行,例如:

docker exec eeeb99126aa4 /opt/bitnami/kafka/bin/kafka-topics.sh --list --bootstrap-server 127.0.0.1:9092

0X03 常用命令

查看topics的详细描述
./kafka-topics.sh --describe --bootstrap-server 192.168.119.130:9092查看topcis列表
./kafka-topics.sh --list --bootstrap-server 192.168.119.130:9092启动zookeeper
./zookeeper-server-start.sh -daemon ../config/zookeeper.properties关闭zookeeper
./zookeeper-server-stop.sh启动kafka
./kafka-server-start.sh -daemon ../config/server.properties关闭kafka
./kafka-server-stop.sh查看topics里面的数据
kafka-console-consumer.sh --bootstrap-server 192.168.119.130:9092 --topic zfd --from-beginning

0X04 Kafka入门

1.基础概念

(1)kafka是开源的分布式事件流处理平台,讲人话:消息队列&消息持久化存储&分布式

(2)kafka三大关键功能:

1)发布(写入)和订阅(读取)事件流,包括从其他系统持续导入/导出数据 。

2)根据需要持久可靠地 存储事件流。

        3)在事件发生时或回顾性 地处理事件流。

(2)kafka如何工作?

Kafka 是一个分布式系统,由通过高性能TCP 网络协议进行通信的服务器客户端组成。它可以部署在本地和云环境中的裸机硬件、虚拟机和容器上。

        服务器:Kafka 作为一个或多个服务器的集群运行,可以跨越多个数据中心或云区域。其中一些服务器形成存储层,称为代理。其他服务器运行 Kafka Connect以将数据作为事件流持续导入和导出,以将 Kafka 与您现有的系统(如关系数据库以及其他 Kafka 集群)集成。为了让您实现关键任务用例,Kafka 集群具有高度可扩展性和容错性:如果其中任何一个服务器出现故障,其他服务器将接管它们的工作,以确保持续运行而不会丢失任何数据。

        客户端:它们允许您编写分布式应用程序和微服务,以并行、大规模和容错方式读取、写入和处理事件流,即使在网络问题或机器故障的情况下也是如此。Kafka 附带了一些这样的客户端,这些客户端由 Kafka 社区提供的 数十个客户端进行了扩充:客户端可用于 Java 和 Scala,包括更高级别的 Kafka Streams库,用于 Go、Python、C/C++ 和许多其他编程语言以及 REST API。

2.术语

(1)Event记录了世界或您的业务中“发生了某事” 的事实。在文档中也称为recordmessage。当您向 Kafka 读取或写入数据时,您以Event的形式执行此操作。从概念上讲,Event具有键、值、时间戳和可选的元数据标头。这是一个示例事件:

  • Event Key:“爱丽丝”
  • Event Value:“向 Bob 支付了 200 美元”
  • Event Timestamp:“2020 年 6 月 25 日下午 2:06”

(2)生产者是那些向 Kafka 发布(写入)事件的客户端应用程序,而消费者是订阅(读取和处理)这些事件的那些客户端应用程序。在 Kafka 中,生产者和消费者完全解耦并且彼此不可知,这是实现 Kafka 众所周知的高可扩展性的关键设计元素。例如,生产者永远不需要等待消费者。Kafka 提供了各种保证,例如一次性处理事件的能力。

(3)事件被组织并持久地存储在topics中。非常简化,topics类似于文件系统中的文件夹,事件是该文件夹中的文件。示例topics名称可以是“付款”。Kafka 中的topics始终是多生产者和多订阅者:一个topics可以有零个、一个或多个向其写入事件的生产者,以及零个、一个或多个订阅这些事件的消费者。topics中的事件可以根据需要随时读取——与传统的消息传递系统不同,事件在消费后不会被删除。相反,您可以通过每个主题的配置设置来定义 Kafka 应该将您的事件保留多长时间,之后旧事件将被丢弃。Kafka 的性能在数据大小方面实际上是恒定的,因此长时间存储数据是非常好的。

(4)topics分区的,这意味着一个topics分布在位于不同 Kafka 代理上的多个“桶”中。数据的这种分布式放置对于可伸缩性非常重要,因为它允许客户端应用程序同时从多个代理读取和写入数据。当一个新事件发布到一个topics时,它实际上是附加到主题的分区之一。具有相同event key(例如,客户或车辆 ID)的事件被写入同一个分区,并且 Kafka保证给定topics分区的任何消费者将始终以与写入事件完全相同的顺序读取该分区的事件。

       

         每个分区都是一个有序的,不可变的记录序列,不断附加到结构化的提交日志中。分区中的记录每个都分配了一个称为偏移的顺序ID号,它唯一地标识分区中的每个记录。

  Kafka集群持久保存所有已发布的Event - 无论是否已使用 - 使用可配置的保留期。例如,如果保留策略设置为两天,则在发布记录后的两天内,它可供使用,之后将被丢弃以释放空间。Kafka的性能在数据大小方面实际上是恒定的,因此长时间存储数据不是问题。

实际上,基于每个消费者保留的唯一元数据是该消费者在日志中的偏移或位置。这种偏移由消费者控制:通常消费者在读取记录时会线性地提高其偏移量,但事实上,由于该位置由消费者控制,因此它可以按照自己喜欢的任何顺序消费记录。例如,消费者可以重置为较旧的偏移量来重新处理过去的数据,或者跳到最近的记录并从“现在”开始消费。

  这些功能组合意味着Kafka 消费者consumers 非常cheap - 他们可以来来往往对集群或其他消费者没有太大影响。例如,您可以使用我们的命令行工具“tail”任何主题的内容,而无需更改任何现有使用者所消耗的内容。

  日志中的分区有多种用途。首先,它们允许日志扩展到超出适合单个服务器的大小。每个单独的分区必须适合托管它的服务器,但主题可能有许多分区,因此它可以处理任意数量的数据。其次,它们充当了并行性的单位 - 更多的是它。

(5)为了使您的数据具有容错性和高可用性,可以复制每个topics,甚至跨地理区域或数据中心,以便始终有多个代理拥有数据副本,以防万一出现问题,您想要对经纪人进行维护,等等。一个常见的生产设置是复制因子为 3,即始终存在三个数据副本。此复制在topics分区级别执行。

3.Producer & Consumer

(1)Producer

Producers 将数据发布到指定的topics。同时Producer 也能决定将此消息归属于哪个partition;比如基于"round-robin"方式或者通过其他的一些算法等。

(2)Consumer

  • 每个consumer属于一个consumer group,每个group中可以有多个consumer.发送到Topic的消息,只会被订阅此Topic的每个group中的一个consumer消费
  • 如果所有消费者实例具有相同的消费者组,则记录将有效地在使用者实例上进行负载平衡
  • 如果所有消费者实例具有不同的消费者组,则每个记录将广播到所有消费者进程

Docker Kafka相关推荐

  1. Docker Kafka 单机版安装

    一.安装 下载library/zookeeper并运行 docker run --name zookeeper -d -p 2181:2181 -v /etc/localtime:/etc/local ...

  2. docker kafka互通有问题_Docker搭建kafka集群

    拉取镜像 docker pull wurstmeister/kafka docker pull wurstmeister/zookeeper 启动镜像 docker run --name zookee ...

  3. docker+kafka+zookeeper+zipkin的安装

    1. 启动zookeeper容器 docker search zookeeper docker pull wurstmeister/zookeeper:3.4.13 #如果版本不存在就不加版本号 do ...

  4. Docker Kafka 数据清理

    一.删除没用的topic # 进入kafka docker exec -it ${containerId} /bin/bash # 进入kafka/bin cd opt/kafka_xxx/bin # ...

  5. docker zookeeper kafka kafka-manager 本地hbase hadoop

    最近项目需要节约成本进行开发,所以要把docker利用的淋漓尽致,暂时只有一台服务器可用. 规划如下:zookeeper开启三个,kafka开启三个,hbase和hadoop在本地开启,不用docke ...

  6. docker部署kafka,外部程序可以访问容器内的kafka

    1. 编写docker-compose文件 zk_kafka.yml version: '2'services:zookeeper:image: hyperledger/fabric-zookeepe ...

  7. ubuntu用Docker部署kafka消息服务

    ** 为了方便后续的配置,以下部署的时候IP都统一使用同一个IP ** 首先,先下载两个官方images: docker pull wurstmeister/kafka docker pull wur ...

  8. 修改docker内kafka的topic日志路径,修改server.properties的log.dirs参数

    docker下的kafka一般都是使用 wurstmeister/kafka, 安装过程参考:https://blog.csdn.net/boling_cavalry/article/details/ ...

  9. Docker搭建kafka

    docker简易搭建kafka 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题:想分析一下用户行为,一遍我能设计出更好的广告位,相对用户的搜索关键字尽心统计,分析出前卫的流 ...

最新文章

  1. 数据库系统DBS的特点
  2. 《系统集成项目管理工程师》必背100个知识点-41控制进度
  3. JAndFix: 基于Java实现的Android实时热修复方案
  4. mysql数据库基本操作总结与归纳
  5. 汽车电子传感器科普:激光雷达 毫米波雷达 超声波雷达
  6. HashTable 源码解读
  7. 重读经典:《Generative Adversarial Nets》
  8. php常用函数、算法,PHP常用函数和常量
  9. 朴素贝叶斯算法matlab实现以及EM算法
  10. CCF201812-4 数据中心(100分)【Kruskal算法】
  11. 20190928 On Java8 第二十三章 注解
  12. iptv网关服务器系统 自己刷,iptv网关服务器镜像系统
  13. 中国百家姓氏图腾大全
  14. cdr添加节点快捷键_CDR快捷键大全
  15. Windows找不到自带的照片查看器
  16. 总体参数的假设检验 R
  17. 【解局】瑞幸向上,盒马向下
  18. python画图颜色设置_python画图--输出指定像素点的颜色值方法
  19. 硕盟SM-H2V1 HDMI转VGA高清转换器
  20. 商城会员积分过期的实现方案

热门文章

  1. JSONObject与JSONArray的用法
  2. Photo Album: 阳台山
  3. (网络转载) 亲爱的,我们同居吧
  4. 【转】Vim 字符编码转换
  5. 基于NB-IOT无线红外通信电力参数远程仪器抄表方案
  6. LinkList *L , LinkList L, LinkList *L 和 LinkList *L区别及用法
  7. js中的闭包问题(持续更新)
  8. 选址问题java_邮局选址问题 (Java代码)
  9. MySQL实战第十五讲-日志和索引相关问题
  10. 【网络协议趣谈】UDP协议