kafka知识导图笔记-【千锋教育】程序设计基础学习笔记

2024-07-03
| 1页
| 84人阅读
| 0人下载
教辅

内容正文:

kafka 介绍 简介:Kafka是一个分布式的,可划分的,冗余 备份的持久性的日志服务。它主要用于处理活跃 的流式数据。 消息系统术语:消息归纳topic,发布消息 producers,消费消息consumer,集群服务 broker。 关系图 图片链接 总结:两个作用,1.降低系统组网复杂度。2.降 低编程复杂度。 Kafka独特设计在什么地方? 1.同时为发布和订阅提供高吞吐量。据了解, Kafka每秒可以生产约25万消息(50 MB),每 秒处理55万消息(110 MB)。 2.可进行持久化操作。将消息持久化到磁盘,因 此可用于批量消费,例如ETL,以及实时应用程 序。通过将数据持久化到硬盘以及replication防 止数据丢失。 3.分布式系统,易于向外扩展。所有的 producer、broker和consumer都会有多个,均 为分布式的。无需停机即可扩展机器。 4.消息被处理的状态是在consumer端维护,而 不是由server端维护。当失败时能自动平衡。 5.支持online和offline的场景。 kafka架构 架构 producer,broker,consumer关系图 Kafka的整体架构非常简单,是显式分布式架 构,producer、broker(kafka)和consumer都 可以有多个。 Producer,consumer实现Kafka注册的接口, 数据从producer发送到broker,broker承担一个 中间缓存和分发的作用。 broker分发注册到系统中的consumer。broker 的作用类似于缓存,即活跃的数据和离线处理系 统之间的缓存。 部件 Partition Topic物理上的分组,一个topic可以分为多个 partition,每个partition是一个有序的队列。 partition中的每条消息都会被分配一个有序的id (offset)。 Topic 特指Kafka处理的消息源(feeds of messages) 的不同分类。 Message 消息,是通信的基本单位,每个producer可以向 一个topic(主题)发布一些消息。 Producers 消息和数据生产者,向Kafka的一个topic发布消 息的过程叫做producers。 Consumers 消息和数据消费者,订阅topics并处理其发布的 消息的过程叫做consumers。 Broker 缓存代理,Kafa集群中的一台或多台服务器统称 为broker。 消息发送图 流程图 Kafka如何搭建及创建topic、发送消 息、消费消息? Topics 和Logs topic细节图 一个topic是对一组消息的归纳。对每个topic, Kafka 对它的日志进行了分区 log implementation 每个分区都由一系列有序的、不可变的消息组 成,这些消息被连续的追加到分区中。分区中的 每个消息都有一个连续的序列号叫做offset,用来 在分区中唯一的标识这个消息。 实际上每个consumer唯一需要维护的数据是消 息在日志中的位置,也就是offset.这个offset有 consumer来维护:一般情况下随着consumer不 断的读取消息,这offset的值不断增加,但其实 consumer可以以任意的顺序读取消息,比如它 可以将offset设置成为一个旧的值来重读之前的 消息。 Producers Producer将消息发布到它指定的topic中,并负责 决定发布到哪个分区。 通常简单的由负载均衡机制随机选择分区,但也 可以通过特定的分区函数选择分区。使用的更多 的是第二种。 Consumers 队列模式和发布-订阅模式 队列模式中,consumers可以同时从服务端读取 消息,每个消息只被其中一个consumer读到。 发布-订阅模式中消息被广播到所有的consumer 中。 Consumers可以加入一个consumer 组,共同竞 争一个topic,topic中的消息将被分发到组中的 一个成员中。 如果所有的consumer都在一个组中,这就成为 了传统的队列模式,在各consumer中实现负载 均衡。 如果所有的consumer都不在不同的组中,这就 成为了发布-订阅模式,所有的消息都被分发到 所有的consumer中。 集群关系图 优点 相比传统的消息系统,Kafka可以很好的保证有 序性。 Kafka可以在多个consumer组并发的情况下提供 较好的负载均衡。 环境搭建 下载解压 https://www.apache.org/dyn/closer.cgi? path=/kafka//kafka_.tgz tar -xzf kafka_2.9.2-0.8.1.1.tgz cd kafka_2.9.2-0.8.1.1 启动服务 Kafka用到了Zookeeper,所有首先启动 Zookper。 bin/zookeeper-server-start.sh config/zookeeper.properties 启动kafka bin/kafka-server-start.sh config/server.properties 测试 创建topic 创建一个叫做“test”的topic,它只有一个分区, 一个副本。 bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 -- partitions 1 --topic test 通过list命令查看创建的topic bin/kafka-topics.sh --list --zookeeper localhost:2181 发送消息 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 启动consumer Kafka也有一个命令行consumer可以读取消息并 输出到标准输出: bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning kafka开发环境搭建 maven项目  org.apache.kafka kafka_2.10 0.8.0 参数配置 package com.sohu.kafkademon; public interface KafkaProperties { final static String zkConnect = "10.22.10.139:2181"; final static String groupId = "group1"; final static String topic = "topic1"; final static String kafkaServerURL = "10.22.10.139"; final static int kafkaServerPort = 9092; final static int kafkaProducerBufferSize = 64 * 1024; final static int connectionTimeOut = 20000; final static int reconnectInterval = 10000; final static String topic2 = "topic2"; final static String topic3 = "topic3"; final static String clientId = "SimpleConsumerDemoClient"; } producer,consumer等 学习总结来源 http://www.aboutyun.com/thread-12882-1- 1.html http://blog.jobbole.com/75328/ http://www.cnblogs.com/likehua/p/3999538. html

资源预览图

kafka知识导图笔记-【千锋教育】程序设计基础学习笔记
1
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。