走进大数据丨 Kafka(一)
kafka概述
Kafka是一个分布式,分区的,多副本的,多订阅者,基于zookeeper协调的的分布式日志系统,常见可用于web/nginx日志,消息服务等等。
Kafka设计目标
1.以时间复杂度为O(1)的方式提供消息持久化的能力,即使对TB级以上的数据也能保证长时间的访问性能。
2.高吞吐量,即使是非常普通的硬件kafka也可以支持每秒数百万的消息。
3.支持通过Kafka服务器和消费集群分区消息。
4.支持Hadoop并行加装数据。
消息系统介绍
一个消息系统负责将数据从一应用传递到另一个数据,应用只需关注于数据,无需关注数据在两个或者多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。
有两种主要的消息传递模式:点对点传递模式,发布-订阅模式。大部分消息系统选用发布-订阅模式。Kafka就是一种发布-订阅模式。
点对点消息传递模式
在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或者多个消费者消费队列里的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条消息将从消息队列里删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。这种架构描述示意图如下:
生产者发送一条消息到queue,只有一个消费者能收到。
发布-订阅模式
在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以可以消费该topic内所有的数据,同一条数据可以被多个消费者消费,数据消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。该模式示例图如下:
发送者发送到topic的消息,只有订阅了topic的订阅者才可会收到消息。