Kafka 分布式消息系统的应用场景如下。
1.消息队列
比起大多数的消息系统来说,Kafka 有更好的吞吐量、内置的分区、冗余及容错性,这让Kafka 成为一个很好的大规模消息处理应用的解决方案。消息系统一般吞吐量相对较低,但是需要更小的端到端延时,并常常依赖于Kafka 提供的强大的持久性保障。在这个领域,Kafka 足以媲美传统消息系统,如ActiveMR 或RabbitMQ。
2.行为跟踪
Kafka 的另一个应用场景是跟踪用户浏览页面、搜索及其他行为,以发布-订阅的模式实时记录到对应的Topic 里。这些结果被订阅者拿到后,就可以做进一步的实时处理或实时监控,或放到adoop、离线数据仓库里处理。
3.元信息监控
作为操作记录的监控模块来使用,即汇集记录一些操作信息,这里可以理解为运维性质的数据监控。
4.日志收集(www.xing528.com)
日志收集方面,其实开源产品有很多,包括Scribe、Apache Flume。很多人使用Kafka代替日志聚合(log aggregation)。日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或HDFS)进行处理。然而Kafka 忽略掉文件的细节,将其更清晰地抽象成一个个日志或事件的消息流。这就让Kafka 处理过程延迟更低,更容易支持多数据源和分布式数据处理。比起以日志为中心的系统比如Scribe 或者Flume 来说,Kafka 提供同样高效的性能和由于复制导致的更高的耐用性保证,以及更低的端到端延迟。
5.流处理
这个场景可能比较多,也很好理解。保存收集流数据,以供之后对接的Storm 或其他流式计算框架进行处理。很多用户会将那些从原始Topic 来的数据进行阶段性处理、汇总、扩充,或者以其他方式转换到新的Topic 下再继续后面的处理。例如,一个文章推荐的处理流程,可能是先从RSS 数据源中抓取文章的内容,然后将其丢入一个叫作“文章”的Topic 中,后续操作可能是对这个内容进行清理,比如恢复正常数据或者删除重复数据,最后再将内容匹配的结果返还给用户。这就在一个独立的Topic 之外,产生了一系列的实时数据处理的流程。Strom 和Samza 是非常著名的实现这种类型数据转换的框架。
6.事件源
事件源是一种应用程序设计的方式。该方式的状态转移被记录为按时间顺序排序的记录序列。Kafka 可以存储大量的日志数据,这使得它成为一个对这种方式的应用来说绝佳的后台。
7.持久性日志
Kafka 可以为一种外部的持久性日志的分布式系统提供服务。这种日志可以在节点间备份数据,并为故障节点数据回复提供一种重新同步的机制。Kafka 中日志压缩功能为这种用法提供了条件。在这种用法中,Kafka 类似于Apache BookKeeper 项目。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。