kafka是Apache旗下的一个分布式流数据平台。
什么是流数据平台呢?简单的说应该具备以下三个能力:
1、可以发布和订阅记录(流);
2、具有容错的记录存储能力;
3、当有记录数据出现的时候,可以进行处理。
Kafka主要应用于2大类应用:
1、在系统或应用之间实时、可靠的传输数据流;
2、用于构建实时的转换、处理流式数据的应用。
首先我们了解下关于Kafka的几个概念:
kafka既然是分布式的,一定是可以运行在一个集群之上,可以是1台或者以上的主机;
kafka把数据(很多的记录)按照类别进行存储,这个类别在kafka中叫做topic,即主题的意思。(就像报纸一样,不同的出版社要出版不同主题的报纸,不同的人也会有订阅不同报纸的需求,试想下报纸要是不分类别,对于看报纸的人和出版商来说都是一种折磨。)
每条记录由一个主键,一个值和一个时间戳组成。
kafka的几个核心的API:
Producer api:即生产者,可以理解为出版社,确切的说使用了这个接口的应用程序相当于一个出版社,可以把消息发布到不同的主题当中,像出版了不同的报纸一样。
Consumer api:消费者,对应的可以理解为看报纸的人,使用这个接口可以实现主题的订阅,并对得到的记录进行处理;这里的主题可以是多个,就像一个人当然可以订阅多份报纸。
Stream api:送报纸的(嘿嘿),这个接口可以接收生产者发送来的数据,经过加工转换之后,再传递给消费者。类似于送报纸的叔叔,在拿到报纸之后改了里面的一些内容,再送给订报纸的人。
Connector api:叫它监视者可能更合适,这个接口可以构建一个生产者或者消费者来将topic和现有的应用连接起来。例如,一个连接了关系型数据库的connector可以捕获到一个表里面的每一个变化或更新。
网友评论