kafka 认识
LinkedIn 开源—Apache 2011开源,2012年基金会毕业,正式开源。
一:特点
消息的发布和订阅流记录,类似消息队列;数据流存储平台;数据产生时进行处理。用在数据的处理上、传输上。面向于数据流的生产、转换、存储、消费,不仅仅是消息队列。
二:基本概念
Producer:消息和数据的生产者,向kafka的topic发布消息的进程、代码、服务;
Consumer:消息和数据的消费者,订阅数据(Topic)并且处理其发布的消息的进程、代码、服务;
Consumer Group:逻辑概念,对于同一个topic,会广播给不同的group,一个group中,只要一个consumer可以消费改消息。
Broker:物理概念,Kafka集群中的每个Kafka节点;
Topic:逻辑概念,Kafka消息队列的类别,对数据进行区分、隔离;
Partition:物理概念,Kafka下数据存储的基本单元。一个Topic数据,会被分散存储到多个Partition,每一个Partition是有序的;
Replication:同一个Partition可能会有多个Replication,多个Replication之间数据是一样的;
Replication Leader:一个Partition的多个Replication上,需要一个Replication Leader(领导者)负责该Partition上Producer和Consumer交互;
Replication Manager:负责管理当前broker所有分区和副本的信息,处理KafkaController发起的一些请求,副本状态的切换、添加、读取消息等;
三:zookeeper关系
强依赖于zookeeper,broker信息、topic信息、partitiosn的分布都存在了zookeeper上,如下图所示。
四:用到了零拷贝技术
文件传输到网络的公共数据路径:
(1)操作系统将数据从磁盘读入到内核空间的页缓存;
(2)应用程序将数据从内核空间读入到用户空间缓存中;
(3)应用程序将数据写回内核空间到socket缓存中;
(4)操作系统将数据从socket缓存区复制到网卡缓存区,以便将数据经网络发出。
零拷贝过程:
(1)操作系统将数据从磁盘读入到内核空间的页缓存;
(2)将数据的位置和长度的信息描述符增加至内核空间(socket缓冲区);
(3)操作系统将数据从内核拷贝到网卡缓冲区,以便将数据经网络发出。
文件传输到网络的公共数据路径演变如下图所示

五:kafka配置解释
#原始数据kafka读取
kafka.consumer.servers=IP:9092,IP:9092(kafka消费集群ip+port端口)
kafka.consumer.enable.auto.commit=true(是否自动提交)
kafka.consumer.session.timeout=20000(连接超时时间)
kafka.consumer.auto.commit.interval=100
kafka.consumer.auto.offset.reset=latest(实时生产,实时消费,不会从头开始消费)
kafka.consumer.topic=result(消费的topic)
kafka.consumer.group.id=test(消费组)
kafka.consumer.concurrency=10(设置消费线程数)
#协议转换后存储kafka
kafka.producer.servers=IP:9092,IP:9092(kafka生产集群ip+port端口)
kafka.producer.topic=result(生产的topic)
kafka.producer.retries=0
kafka.producer.batch.size=4096
kafka.producer.linger=1
kafka.producer.buffer.memory=40960
提过:负载均衡:nginx、lvs、f5负载均衡器、日志收集 Apache flume、ELK

浙公网安备 33010602011771号