开发学院

您的位置:首页>教程>正文

教程正文

Apache Kafka 简介

  关于大数据的使用场景,我们面临两大挑战。第一个挑战是如何收集大量数据,第二个挑战是分析收集的数据。为了克服这些挑战,我们必须要有一个信息系统。

  Apache Kafka是为分布式海量通信系统而设计的。Kafka作为一个更传统的信息代理的替代者性能更高。与其他消息传递系统相比,Kafka具有更好的吞吐量、内置分区、复制和固有的容错能力,这使得它非常适合大规模的消息处理应用。

什么是消息传递系统?

  消息传递系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,而不必担心如何共享数据。分布式消息传递基于可靠消息队列的概念。消息在客户端应用程序和消息传递系统之间异步排队。有两种类型的消息传递模式可用:一种是点对点的,另一种是发布-订阅(pub-sub)消息传递系统。大多数消息传递模式遵循pub-sub。

点对点消息传递系统

  在点对点系统中,消息保存在队列中。一个或多个消费者可以消费队列中的消息,但是一个特定的消息最多只能由一个消费者消费。一旦消费者读取队列中的消息,它就会从队列中消失。该系统的典型例子是订单处理系统,其中每个订单将由一个订单处理器处理,但是多个订单处理器也可以同时工作。下图描述了结构。

001.jpg

发布-订阅消息系统

  在发布-订阅系统中,消息被保存在一个主题中。与点对点系统不同,消费者可以订阅一个或多个主题,并消费该主题中的所有消息。在发布-订阅系统中,消息生产者称为发布者,消息消费者称为订阅者。一个现实生活中的例子是碟形电视,它发布不同的频道,如体育、电影、音乐等。任何人都可以订阅他们自己的一组频道,只要他们订阅的频道可用,就可以获得这些频道。

002.jpg

Kafka是什么?

  Apache Kafka是一个分布式发布-订阅消息传递系统和一个健壮的消息队列,可以处理海量数据,使您能够将消息快速从一个端点传递到另一个端点。Kafka适合离线和在线信息消费。Kafka式的消息被保存在磁盘上,并在集群中复制,以防止数据丢失。Kafka是建立在zookeeper同步服务之上的。它与Apache Storm和Spark集成得非常好,可用于实时流数据分析。

优势

  Kafka的一些优势如下

  •   可靠性:Kafka是分布式的、分区的、复制的和容错的。

  •   扩展性:Kafka式消息系统无需停机即可轻松扩展..

  •   持久性:Kafka使用分布式提交日志,这意味着消息尽可能快地保存在磁盘上,因此它是持久的。

  •   性能:Kafka对于发布和订阅消息都有很高的吞吐量。即使存储了许多TB的消息,它也能保持稳定的性能。

  Kafka速度非常快,保证零停机时间和零数据丢失。

用例

  Kafka可以用在许多用例中。其中一些列举如下:

  度量:Kafka通常用于运营监控数据。这包括聚集来自分布式应用程序的统计数据,以产生操作数据的集中馈送。

  日志聚合方案:Kafka可以在整个组织中使用,从多个服务中收集日志,并以标准格式提供给多个消费者。

  流处理:流行的框架,如 Storm和Spark可以从一个主题中读取数据,对其进行处理,并将处理后的数据写入一个新的主题,以便用户和应用程序使用。Kafka的强大耐用性在流处理领域也非常有用。

Kafka的需求

  Kafka是处理所有实时数据馈送的统一平台。Kafka支持低延迟的消息传递,并保证机器出现故障时有一定的容错能力。它有能力处理大量不同的消费者。Kafka速度非常快,每秒执行200万次写操作。Kafka将所有数据保存到磁盘上,这实际上意味着所有的写入都将进入操作系统的页面缓存。这使得将数据从页面缓存传输到网络套接字非常有效。