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

posted @ 2019-09-25 16:26  刘杨钊  阅读(187)  评论(0)    收藏  举报