学习Apache Kafka

1. Apache Kafka

挑战:①收集海量数据;②分析。

分析包括:用户行为数据、应用程序的性能跟踪、以日志形式显示的动态数据、事件信息…

kafka可处理实时信息并很快地将其路由到多个消费者。提供了生产者之间信息的无缝集成,不需阻塞消费,生产者不需关心消费者是谁。

它是一个开源的、分布式的、分区的和基于复制 日志提交的发布-订阅消息传递系统。

①持久性消息传递: 保证消息不丢失,提供O(1)常量时间性能的磁盘设计,支持大容量存储(TB)。信息持久化到硬盘,且在集群中复制,以防数据丢失;
高吞吐量: 每秒处理数百MB的读和写操作;
分布式: 以集群为中心,在kafka服务器上进行消息分区(在每个分区维护ordering semantics),并在集群上分发消费。集群可弹性、透明地增长,而不需停机;
多客户端: 支持简单集成来自不同平台的客户端(Java、NET、PHP、Ruby、Python);
实时: 由生产者线程生成的消息对消费者线程立即可见(该特性对基于事件的系统非常重要,eg.复杂事件处理(CEP)系统)

提供了一种实时的发布-订阅解决方案,还支持Hadoop中的并行数据加载。

在生产方面,有不同类型的生产者: eg.
①前端web应用程序生成的日志;
②生成web分析日志的生产者代理;
③生成转换日志的生产者适配器;
④生成调用跟踪日志的生产者服务。

在消费方面: eg.
①离线消费者,正在使用消息并将其存储在Hadoop或传统数据仓库,用于离线分析;
②接近实时的消费者,正在消费信息并将其存储在NoSQL(eg.HBase或Cassandra),用于近实时分析;
③像Spark或Storm,可在内存中过滤消息,为相关组触发警报事件。

2. Why do we need Kafka?

数据通常包括用户活动、事件登录、页面访问、点击、社交网络活动,如“赞”、“分享”和“评论”、操作
和系统指标(由于高吞吐量(每秒数百万条消息),所以通常由日志记录&传统日志聚合解决方案处理——面向离线分析eg.hadoop)
对构建实时处理系统非常局限。

实时分析包括:
①基于搜索的相关性、基于受欢迎程度、共同发生或情感分析的建议、向大众投放广告、从垃圾邮件或未经授权的数据抓取、发送高温警报的设备传感器、任何异常的用户行为或应用程序的黑客行为。

从生产系统收集的这些多组数据的实时使用情况,由于收集和处理的数据量大而成为一个挑战。

kafka目标是通过提供一种机制来统一线下和线上处理:
Hadoop系统中的并行负载以及在一组机器上的分区实时消耗的能力(处理流式数据很有用)。
从架构的角度来看,它更接近于传统的消息传递系统,如ActiveMQ或RabitMQ。

参考:Learning Apache Kafka Second Edition

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值