kafka
介绍
kafka是一个分布式数据发布订阅平台。
特点
应用消息系统
概念
核心API
主题和日志
主题就是一个类别(或目录)记录哪些记录被发布。kafka主题是多订阅者,也即是一个主题可以有0个、1个或多个
消费者订阅主题的数据(即记录)。对于每个主题,kafka cluster维护一个分区日志。每个分区是一个有序的只能追加的有结构
的日志。分区的每条记录都分配一个序号(offset)来唯一标识。
分布式
地理复制
生产者
消费者
多租户
保证
快速开始
启动服务
创建主题
发送消息
消费消息
集群模式配置
启动
其他操作
通过查看topic状态可以发现topic是否复制到多节点,leader节点和follower节点等
应用场景
消息系统
kafka最常见就是应用与消息系统(解耦数据处理),相比于传统的消息系统(ActiveMQ和RabbitMQ),kafka有更高的吞吐量,
内置的分区,消息复制和容错性。一般来说消息系统的吞吐量不会很大,但是需要kafka提供强持久化来保证消息不丢失。
网站活动追踪
kafka也经常通过实时的发布订阅,重建用户活动轨迹pipeline。这意味着网页浏览、搜索和用户其他行为都会发布到中央主题,这些
可以满足实时监控,或者将数据导入hadoop出用户行为报表等。
数据统计
kafka经常用于数据统计,可以聚合来自分布式应用程序的统计数据,产生操作数据的集中式概要。
日志收集
许多开发用kafka来收集日志。日志收集通常就是收取物理日志文件然后将他们存放在一个中心系统(如文件系统、HDFS等)处理。kafka
提取日志文件的摘要,然后将摘要作为消息流发送和处理。这更好的支持低延迟处理和更容易支持多数据源、分布式数据处理。对比日志
处理系统(如Scribe、Flume),kafka提供相同的性能,更强的持久化,以及端对端更低延迟。
流式处理
kafka也可以以流式方式处理数据,原始数据由topic消费,然后聚合、增强以及转换为其他topic或者远程程序处理。比如:推荐的文章
从RSS获取,然后发布至""acticles"的主题,远端处理程序可以复制这些内容然后发布到新的主题,最终程序会将这些文章推荐给用户。
类似于上面的处理流程线可以为每一个主题创建实时的数据流。在0.10.0版本后kafka提供了kafka Streams(一个更轻量级但是更强大的
API包)。
事件源
事件源是基于应用的可以基于时间线的事件处理链,kafka支持存储很大数据级日志,可以支持它更好的做事件源处理。
提交日志
kafka也可以作为分布式系统的日志提交记录,这些日志记录可以作为结点间复制的根据,或者同步服务挂掉结点的数据等。
kafka生态
kafka生态包括流式处理系统、Hadoop集成、监控和发布等工具,可参考https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem
配置
broker配置
更多配置见http://kafka.apache.org/documentation/#brokerconfigs
broker配置更新
从1.1开始,kafka broker的部分配置可以动态修改(不重启)
动态的配置(pre-broker和cluster-wide)存放在zookeeper,静态配置存储在server.properties
密码配置
SSL配置
默认主题配置
日志配置
更新线程配置
连接配置
监听器配置
topic配置
更多配置见http://kafka.apache.org/documentation/#topicconfigs
producer配置
详见http://kafka.apache.org/documentation/#producerconfigs
consumer配置
详见http://kafka.apache.org/documentation/#consumerconfigs
connect配置
详见http://kafka.apache.org/documentation/#connectconfigs
streams配置
详见http://kafka.apache.org/documentation/#streamsconfigs
adminClient配置
详见http://kafka.apache.org/documentation/#adminclientconfigs
领取专属 10元无门槛券
私享最新 技术干货