Apache Kafka是一个分布式发布,订阅消息系统,并且也是一个强大的队列,可以处理高并的数据,并使您能够将消息从一个端点传递到另一个端点。Kafka非常适合处理离线和在线消息消费。 Kafka消息可以持久化的保留在磁盘上,并在群集内复制以防止数据丢失。 Kafka构建在ZooKeeper同步服务之上,用Raft协议保证集群的高可用, 它与Apache Storm和Spark非常好地集成,用于实时流式数据分析。
![09a3b5b59a881657aef35d51ecf085bd.png](https://img-blog.csdnimg.cn/img_convert/09a3b5b59a881657aef35d51ecf085bd.png)
![f02a32436fb13f5ebdaafa389cc2cb5e.png](https://img-blog.csdnimg.cn/img_convert/f02a32436fb13f5ebdaafa389cc2cb5e.png)
![09351c86ea0e6e2b5ec360301bc8b63c.png](https://img-blog.csdnimg.cn/img_convert/09351c86ea0e6e2b5ec360301bc8b63c.png)
现在非常流行的框架(如Storm,Spark Streaming)从topic中读取数据,实时对其进行处理,并将处理后的数据写入新topic中,供用户和应用程序使用。
4.mysql数据库数据同步后端应用可以将数据先写入kafka,让后让kafka异步写入mysql数据库,这样非常可以抗高峰,便于扩展。日志解析组件可以直接解析binlog日志,然后解析后的数据写入kafka,后端的服务(例如ElasticSearch,hadoop,hbase等)可以自由订阅需要的数据。
下面来看看kafka的架构图
![aace8df40ff75a5710d97a3b0722fe21.png](https://img-blog.csdnimg.cn/img_convert/aace8df40ff75a5710d97a3b0722fe21.png)
在此图中,可以看到kafka主要由4部分组成,生产者(producer),zookeeper,代理(broker),消费者(consumer)。下面非常介绍4个组件的功能和作用
1. 生产者
负责发布消息到Kafka Broker。
2. zookper
kafka与Zookeeper级联,通过Zookeeper管理级联配置,选举Leader,并管理和协调生产者和消费者去使用broker。
3. Broker
Kafka集群包含一个或多个服务实例,这些服务实例被称为Broker。是Kafka当中具体处理数据的单元。Kafka支持Broker的水平扩展。一般Broker数据越多,集群的吞吐力就越强。
4. 消费者
从Kafka Broker读取消息的客户端