一、简介
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
我们知道流处理平台有以下三种特性:
1)可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。
2)可以储存流式的记录,并且有较好的容错性。
3)可以在流式记录产生时就进行处理。
二、场景
1、构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue)
2、构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过kafka stream topic和topic之间内部进行变化)
三、设计
Kafka将消息以topic为单位进行归纳:
1、将向Kafka topic发布消息的程序称为producer。
2、将预订topics并消费消息的程序成为consumer。
3、Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker。
producers通过网络将消息发送到Kafka集群,集群向消费者提供消息。
除了上述的三个组件broker、producer和consumer之外,还需要zookeer的支持。
zookeeper是强一致性的,所以其主要作用是为集群分布式一致性提供服务,以及在早期kafka版本保存消息相关元数据。
关于zk的简介可以参考:https://www.jianshu.com/p/60c4eb2bf13a
四、特性
1)多生产者
2)多消费者:这与别的消息系统不同,别的消息系统(mq)消息一旦被一个消费者消费掉之后,别的消费者是无法在获取的。
3)持久化:信息保存在磁盘中。这里有一个问题,磁盘问什么还会那么快?
参考下面这篇文章:https://www.jianshu.com/p/927487c21893
4)可扩展性
5)高性能
以上是关于kafka的简介,我们简单聊到这里,后面的文章会谈的更加具体。
网友评论