kafka 是一个分布式的数据流平台算法
数据流平台有3个关键特性:缓存
kafka 一般用于两大类应用:服务器
简单的说并发
总的来讲分布式
kafka是一个提供(实时)读写数据流的分布式中间件,并提供对记录流的持久化功能高并发
消息队列(Messaging)oop
可代替传统消息队列:解耦,缓存消息性能
网站活动跟踪(Website Activity Tracking)网站
用户网站的活动(page views, searches, other)根据类型被发布到不一样的topic,这些被发布到topics中的数据能够做为数据源被应用在不一样的场景:实时处理程序,实时监控,被加载至 Hadoop 或离线数据仓库进行数据的离线处理和报告等。日志
由于活动信息量很是大,主要用到如下特性
kafka一般用于监控一些可操做的数据(operational monitoring data)。涉及从分布式应用程序中汇总统计信息,而后生成集中的数据源
许多人使用kafka来替代日志聚合解决方案。日志收集系统一般从服务器收集物理日志文件,并将其载入一个中心系统(文件服务器或HDFS)进行处理。与Scribe(Facebook开源的日志收集系统),Flume(Flume最先是Cloudera提供的日志收集系统,目前是Apache下的一个孵化项目,Flume支持在日志系统中定制各种数据发送方,用于收集数据)等以日志为中心的系统相比,kafka 具有一样出色的性能,更强的耐用性(副本机制)和更低的端到端延迟
处理由多个阶段组成的处理管道中的数据。从一个topic中消费,而后汇总,转换为新的topic供后续处理。如新闻推荐:抓取数据发布到topic1->读取数据,格式化,去重->topic2->读取数据推荐给用户
Event Sourcing就是基于时间记录一个对象的全部事件,进而根据一系列事件来获得其状态(记录事件而非状态,有点像binlog)。Kafka 能够存储很是多的日志数据,为基于 event sourcing 的应用程序提供强有力的支持
kafka 能够从外部为分布式系统提供日志提交功能。该日志有助于在节点之间复制数据,并充当故障节点恢复其数据的从新同步机制,kafka的日志压缩(不是压缩算法,而是日志的清理,合并机制)特性支持这一用法。