我刚学kafka的时候,对这几个概念有时候会混淆,尤其是配置的时候经常搞不清楚它们的区别。这篇文章打算做一个梳理。
脚本 kafka]$ bin\kafka-console-producer.sh 命令选项
kafka-console-producer.sh 脚本通过调用 kafka.tools.ConsoleProducer 类加载命令行参数的方式,在控制台生产消息的脚本。
集群管理 (1)启动 broker $ bin/kafka-server-start.sh daemon <path>/server.properties (2)关闭 broker $ bin/kafka-server-stop.sh topic 管理 kafka-topics.sh 脚本 # 创建主题 $ bin/kafka-topics.sh --create --zookeeper localhost:2181 --partitions 64 --replication-factor 3 --topi
Options: Kafka,ActiveMQ,RabbitMQ, WebSphere MQ*(IBM),RocketMQ(阿里系) ...
Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic, Topic即主题,通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的Topic中的消息 Consumer即消费者,消费者通过与kafka集群建立长连接的方式,不断地从集群中拉取消息,然后可以对这些消息进行处理。
创建一个名字为“test”的Topic,这个topic只有一个partition,并且备份因子也设置为1。当producer发布一个消息到某个指定的Topic,这个Topic如果不存在,就自动创建。
topic: 消息以为类别记录,Kafka将消息种子(Feed)分类, 每一类的消息称之为一个。
本文所有命令,博主均全部操作验证过,保证准确性; 非复制粘贴拼凑文章; 如果想了解更多工具命令,可在评论区留下评论,博主会择期加上;
2.4.1、创建topics 以管理员权限新开一个命令提示窗口,进入D:\bigdata\kafka\2.12-3.5.1\bin\windows目录,执行以下命令,创建topics:
zookeeper:http://www.apache.org/dyn/closer.cgi/zookeeper/
进入实战之前先熟悉一下topic的相关命令,使用终端命令查询创建一个新topic,用于后期实战; 特别注意:以下命令全部依据kafka文件目录中操作; 如果尚未安装kafka,请移步《centos7系统安装kafka》
JMX 的全称为 Java Management Extensions。顾名思义,是管理 Java 的一种扩展,通过 JMX 可以方便我们监控 Kafka 的内存,线程,CPU 的使用情况,以及生产和消费消息的指标。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
4.2 生产有key消息 加上属性--property parse.key=true
前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景。天冷了,不愿意伸手,最近没怎么写博客了,还请见谅。
这个专题的主要目的是debug kafka,并从中学习到kafka的架构原理,以及底层实现,提升抽象思维、汲取优秀设计思想、实现场景复用,当然也能实现与面试官侃大山。
在消息发送的过程中,涉及到了两个线程——main 线程和== Sender 线程==。在 main 线程中创建了一个双端队列 RecordAccumulator(32M内存)。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 RecordAccumulator 中拉取消息发送到 Kafka Broker。
由于Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK.
retention.ms=10000设定消息过期时间为10秒,过期后消息会自动删除
脚本 作用 kafka-server-start.sh kafka启动 kafka-server-stop.sh kafka停止 kafka-topics.sh 查看创建删除topic kafka-c
截至2019年7月8日 最新版本为 2.3.0 2.12为编译的scala版本 2.3.0为kafka版本
本文讲如何安装启动kafka,并进行测试,其中zookeepr是kafka自带的,本文基本按照官网文档进行安装启动的,并提出可能会出现的问题。官方文档:http://kafka.apache.org/quickstart 本文虚拟机系统:centos7,不过其他版本的Linux系统是一样的~
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134196.html原文链接:https://javaforall.cn
"麻烦先找下我们的小马甲——公共服务",这句话还没发出去,对方已经先把环境信息给发了过来。
producer: 生产者,负责发布消息到kafka cluster(kafka集群)中。生产者可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等。
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目
Kafka的topic所有分区会分散在不同Broker上,所以该topic的5个分区会被分散到3个Broker上,其中有两个Broker得到两个分区,另一个Broker只有1个分区,如图所示:
前短时间在腾讯云上买了一个linux 服务器,决心把kafka这一模快的知识补充起来啦。所以就搞起来。
Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进行拉数据进行同步,从而保证数据的冗余,防止数据丢失的目的。如图:
定义:Kafka是一个基于zookeeper协调的分布式、多副本的(replica)、支持分区的(partition)系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写的项目。
传统单体应用逐渐被SOA架构、微服务体系架构所替代,如此一来系统数目爆炸级增长,原来在一个系统之间的数据交互演变成跨系统、跨区域。
1.2 生产有key消息 加上属性--property parse.key=true
注意:云服务器需要设置安全策略放行2181与9092端口,否则访问失败 注意:124.71.65.6 替换为自己的服务器地址
官网:https://kafka.apache.org/quickstart 中文官网:https://kafka.apachecn.org/1/#apache-kafka
高吞吐量、低延迟每个topic可以分多个partition, consumer group 对partition进行consume操作。
启动Kafka:kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties 创建一个叫test的话题,有两个分区,每个分区3个副本:kafka-topics.sh --zookeeper localhost:2181 --create --topic test --replication-factor 3 --partitions 2 查看创建的topic:kafka-topics.sh --zookeeper localhost:2
Kafka是一种高吞吐量的分布式发布订阅消息系统,使用Scala编写。 对于熟悉JMS(Java Message Service)规范的同学来说,消息系统已经不是什么新概念了(例如ActiveMQ,RabbitMQ等)。 Kafka拥有作为一个消息系统应该具备的功能,但是确有着独特的设计。可以这样来说,Kafka借鉴了JMS规范的思想,但是确并没有完全遵循JMS规范。 kafka是一个分布式的,分区的消息(官方称之为commit log)服务。它提供一个消息系统应该具备的功能,但是确有着独特的设计。 首先,让我们来看一下基础的消息(Message)相关术语: Topic: Kafka按照Topic分类来维护消息 Producer: 我们将发布(publish)消息到Topic的进程称之为生产者(producer) Consumer: 我们将订阅(subscribe)Topic并且处理Topic中消息的进程称之为消费者(consumer) Broker: Kafka以集群的方式运行,集群中的每一台服务器称之为一个代理(broker)。 因此,从一个较高的层面上来看,producers通过网络发送消息到Kafka集群,然后consumers来进行消费,如下图:
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。--百度百科
1.下载Kafka:http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz
消息队列是一种在应用程序之间进行通信的技术,允许将消息从一个应用程序发送到另一个应用程序,而无需明确的连接这些应用程序。消息队列中的消息被存储在一种称为队列的数据结构中,这些消息在队列中保留,直到被消费者接收。这使得消息的发送者和接收者能够异步地通信,而不必等待对方的响应,从而提高了系统的可伸缩性和弹性。消息队列还可以通过实现各种模式(例如发布/订阅模式、请求/响应模式等)来支持不同类型的应用程序通信。
Storm,Spark Streaming,Flink流处理的三驾马车各有各的优势.
Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用,主要是由 Scala 和 Java 编写。
Kafka在0.10.0.0版本以前的定位是分布式,分区化的,带备份机制的日志提交服务。而kafka在这之前也没有提供数据处理的顾服务。大家的流处理计算主要是还是依赖于Storm,Spark Streaming,Flink等流式处理框架。
--bootstrap-server,连接的Kafka Broker主机名称和端口号。
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 优势:
领取专属 10元无门槛券
手把手带您无忧上云