简介
按照官方的说法,Kafka是一个分布式流平台。实际使用中kafak主要作为一个中间人,提供数据异步处理的能力,同时可以对数据进行不同的处理。比如不同的消费者,对数据进行不一样的逻辑处理
主要部件
- Topic(主题):就是同一类消息的名称,例如数据库的一个表里面保存了同一种类型的数据,同一个主题处理的也是同一类的消息
- Server(服务器):就是一台机器,实体机虚拟机都可以,有单独的ip,一个集群有很多台服务器组成
- Partition(分区):核心概念,就是一个主题可以有多个分区,分布在不同的服务器上。这里举一个例子,有一条叫做Kafka(主题)的高速公路,这条高速公路有2条道(分区),这样在车流量小的时候没什么问题,但是如果车流量很大可能就会堵车,但是如果有8条道(分区),可以提高单位时间内的车流量。每个分区就相当于一条车道,可以并行的处理数据,大大提高数据的流量。
- zookeeper,主要作为数据协同者,主要是整个集群信息的管理,比如一个主题(Topic)有几个分区在哪些服务上,一个分区的leader是谁等等事情。
- 生产者:就是往kafka中推送数据的应用
- 消费者:就是从kafak中拉取数据进行处理的应用
其他特性
高可用:每个分区有一个leader和若干个副本,并且leader和副本分布在不同的服务器上,就算一台服务器挂了,影响也不大。leader主要负责读写,副本只是做数据的复制和备份,在leader挂了之后及时顶替leader继续提供服务。
可扩展,高性能:由于可以进行水平扩展,当服务器压力比较大的时候,可以通过添加服务器,扩展分区来减小每台服务器的压力,提高性能。