什么是Kafka
Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。
最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画像分析以及服务器性能数据的一些监控
所以kafka一开始设计的目标就是作为一个分布式、高吞吐量的消息系统,所以适合运用在大数据传输场景。
Kafka是用来构建实时的管道和流式的应用,它可以水平的扩展,而且还有容错机制,性能很高.
Kafka是一个分布式的数据流式传输平台。
在流式计算中,Kafka一般用来缓存数据,Spark通过消费Kafka的数据进行计算。
1)Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
2)Kafka最初是由LinkedIn公司开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高吞吐量,能达到每秒发百分级别的消息、低等待(延迟很小,速度很快,就是我生产者前一秒刚发送消息,消费者后一秒就收到消息了)的平台。
3)Kafka是一个分布式消息队列(分布式意味着可以在集群里面搭建)。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。
4)无论是kafka集群,还是consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。
Kafka的特点
作为一个数据流式传输平台,kafka有以下三大特点:
类似于消息队列和商业的消息系统,kafka提供对流式数据的发布和订阅
kafka提供一种持久的容错(Kafka提供副本数来解决容错问题,防止因为磁盘坏了,数据丢了)的方式存储流式数据
kafka拥有良好的性能,可以及时地处理流式数据
基于以上三种特点,kafka在以下两种应用之间流行:
①需要在多个应用和系统间提供高可靠的实时数据通道
②一些需要实时传输数据及及时计算的应用
此外,kafka还有以下特点:
Kafka主要集群方式运行在一个或多个可跨多个数据中心的服务器上,大企业可能会有多个数据中心,比如说可能有华北数据中心,华南数据中心,Kafka可以横跨两个数据中心.数据中心之间可以互相同步数据.
Kafka集群将数据按照类别记录存储,这种类别在kafka中称为主题
每条记录由一个键,一个值和一个时间戳组成