kafka学习笔记-01-介绍kafka

1.kafka介绍

1.1 开始之前

翻译内容来自以下站点:link.

Kafka起源LinkedIn 于2011年成为了apache的开源项目,2012年成为了apache顶级项目。kafka由java,sala编写,基于容错的消息发布-订阅系统,具备速度快,可扩展,分布式的特性。本指南将带领您通过部署kafka集群探索kafka实现机制,安装运行,最终通过大数据技术集成的实时应用案例得出我们的学习结论。
本教程的适合人群是为那些渴望使用kafka消息系统并且专业长期从事大数据分析的从业人士准备,本指南将给予您足够的内容来理解如何使用kafka集群。学习本教程之前,您一定要对java,scala,分布式信息系统,以及linux环境有一定了解。

1.2 kafka简介

大数据场景中使用大规模数据会面临两个主要挑战:第一个是如何去收集大规模数据,第二个是如何去分析如此大规模的数据,克服这些挑战您一定会需要一个消息传递系统。
kafka为分布式,高吞吐量而设计,倾向于去代替传统的消息传递代理机制。相比于其他消息传递应用,kafka有着更优越的吞吐量,内置分区,复制,容错继承,使得其自身适用于大规模消息处理应用。

1.3 何为数据传递系统?

消息系统负责传递数据从一个应用到另一个应用,所以应用设计本身可以把精力都放在数据业务上,而不用浪费精力去思考如何传递数据的问题。分布式数据传递都是基于高可用的消息队列理念,数据在客户端应用与消息中间件应用是异步的。两种数据传递的模式是可用的,一种是点对点另一种是发布-订阅模式的消息传递机制。而大多数应用都是基于后者,发布-订阅模式。

1.3.1 点对点消息传递系统

在点对点的消息中间件中,数据在队列中是一直存在的,一个或多个消费者可以消费队列中的数据,但是每一个数据只能被最大限度的一个消费者消费。一旦消费者获取了队列中的数据,这条数据将从队列中被永久移除,最典型的系统案例就是订单处理系统,多个订单处理器可以同时工作,但是每一条订单数据只会被其中一个处理器消费。在下图的模型中就清晰描述了所谓点对点传递数据的模型。
kafka学习笔记-01-介绍kafka_第1张图片

1.3.2发布-订阅消息传递模型

在消息订阅发布系统中,数据在topic中是持续存在的,并不像点对点系统,消费者一旦订阅了一个或多个topic,可以消费所有已订阅的topic中的所有数据。在订阅-发布系统中,消息的生产者叫做发布者,消息的消费者叫做订阅者。一个典型案例就是电视,不同的频道发布不同的内容,如运动,电影,音乐等。但是每个人可以订阅他们自己指定的频道,无论何时这些订阅频道数据都是可用的。
kafka学习笔记-01-介绍kafka_第2张图片

1.4什么是kafka

kafka是一个分布式的发布-订阅消息中间件系统,拥有强大的消息队列可以在各个数据节点之间处理以及传递大规模数据。kafka适用于所有的离线场景在线场景的消息消费,数据
会在集群磁盘持久保存和多副本备份防止数据丢失,kafka构建在zookeeper异步服务上。以非常好的适应性集成apache storm,spark等实时数据分析应用。

1.4.1 好处:

1.可靠性:分布式,内置分区,多副本,容错
2.可扩展:轻松扩展并不增加延迟
3.持久性:kafka在磁盘尽可能的持久化分布式提交日志
4.性能:kafka在发布和订阅消息都有非常高的吞吐量,持续稳定的性能甚至可以达到tb级别的存储

1.4.2 使用案例

  • 指标(metrics):kafka常用做运行监控数据,涉及到分布式系统产生的运营数据集中供应统计。
  • 日志汇总方案(log aggregation solution)kafka也可以跨域收集多个服务器的日志数据并统一格式提供给多个消费者。
  • 流式处理:受欢迎的框架如storm和spark从topic读,处理数据并把结果写在一个新的topic上,使得他们可用于用户和其他应用。kafka强大的耐用性在内容的流式处理也非常出色的。

1.4.3总结

1.4.3 kafka是一个处理所有实时数据源的统一平台,支持消息低延迟推送和宕机时的容错保证。有能力处理多种消费者的大规模数据,performance 200writes/sec。所有数据持久化在磁盘,意味着所有的写都要去操作系统的缓存页。这使得他非常有效的传递缓存页的数据到网络端口。

你可能感兴趣的:(kafka学习笔记-01-介绍kafka)