Kafka基本概念1.1 Kafka的介绍Apache Kafka是分布式发布-订阅消息系统(消息中间件)。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。就像是一个放鸡蛋的篮子。生产者生产鸡蛋放到篮子中,消费者从篮子中消费鸡蛋。1.2消息系统1.2.1Kafka的优势Kafka就是一个分布式的用于消息存储的消息队列。一般用于大数据的流式处理中。一些常见的中间件:ActiveMQ,IBMMQ,RabbitMQ,ZMQ 但都不是分布式的。Apache Kafka与传统消息系统相比,有以下不同:它是分布式系统,易于向外扩展。它同时为发布和订阅提供高吞吐量。它支持多订阅者,当失败时能自动平衡消费者。它将消息持久化到磁盘,因此可用于批量消费,允许多个消费者消费数据。1.2.2消息队列的两种模式点对点模式(一对一,消费者主动拉取数据,消息收到后清除)。发布订阅模式(一对多,消费者消费数据之后不会删除,数据可以被多个消费者使用)。有两种消费方式,一种是消费者主动拉取操纵,好处是速度可以自己控制,坏处是要维护一个常轮询,不断询问队列是否有新数据产生;另一种是消息队列推送数据,消费者的消费能力不一样,没法根据不同的消费者提供不同的推送速度。1.3 Kafka的角色术语解释Broker安装了kafka的节点Topic每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处),发送消息必须有主题。PartitionPartition是物理上的概念,每个Topic包含一个或多个Partition.Producer负责发布消息到Kafka brokerConsumer消息消费者,向Kafka broker读取消息的客户端Consumer Group每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)当consumer去消费数据的时候,会有一个偏移量(offset),一个分区的数据,一个consumer只能消费一次。replicapartition 的副本,保障 partition 的高可用leaderreplica 中的一个角色, producer 和 consumer 只跟 leader 交互followerreplica 中的一个角色,从 leader 中复制数据,数据备份,如果leader挂掉,顶替leader的工作controllerKafka 集群中的其中一个服务器,用来进行 leader election 以及各种 failoverKafka中存储的消息,被消费后不会被删除,可以被重复消费,消息会保留多长,由kafka自己去配置。默认7天删除。背后的管理工作由zookeeper来管理。1.4 Kafka的特性高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。(2)可扩展性:kafka集群支持热扩展。(3)持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。(4)容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)。(5)高并发:支持数千个客户端同时读写。1.5 Kafka集群的安装登录Kafka的官网http://kafka.apache.org/。Kafka是Java和Scala语言开发的。所以安装Kafka之前必须要保证先安装JDK。Kafka依赖于Zookeeper的选举机制,所以安装Kafka之前还要保证Zookeeper已经被安装好了。下载安装包:注意选择kafka的版本,以及scala的版本。首先进到software目录当中,如下图所示:然后将安装包上传上来解压之后的效果如下图所示,并把原始kafka文件名重命名一下:重命名之后的效果如下图所示:解压过后的目录如下图所示:上传安装包到集群中,并解压。利用已有的3台机器:node01、node02、node03修改配置:·cd config·vi server.properties声明Kafka集群对应的一个编号,0、1、2分别代表node01、node02、node03。所以此时不用改,一会分发给node02、node03的时候要把这个编号改过来。0: node011: node022: node03·需要修改的第二个地方是修改为:(去掉注释,把主机名称改了)·第三个修改的地方为添加以下语句:在这里添加:·修改日志的存放路径:(Kafkadata目录不需要提前创建,它可以自动创建好。)在这里找这个路径:·分区数量修改为3:·Zookeeper集群中的端口号需要修改:·全部修改完之后保存并退出:全部修改语句如下所示(以node01为样例):broker.id=0 从0 开始 ,0 1
课堂总结。
最新推荐文章于 2025-04-28 09:38:40 发布