收集客户互动和订单并立即做出反应,如零售、酒店和旅游业以及移动应用程序。
实时跟踪和监控汽车、卡车、车队和货运,如物流和汽车行业。
连接、存储公司不同部门产生的数据并使其可用。
作为数据平台、事件驱动架构和微服务的基础。
持续捕获和分析来自物联网设备或其他设备(如工厂和风电场)的传感器数据。
监测医院护理中的患者并预测病情变化,以确保在紧急情况下及时治疗。
复制数据库提交日志到远程系统。
合并数据库更新。
恢复系统。
实时处理支付和金融交易,例如在证券交易所、银行和保险中。
Kafka的数据单元称为消息。
消息可以包含一个可选的元数据,就是键。键被用于决定消息被分配到哪个分区,例如键的摘要值相同的消息存入同一个分区。
为了提高效率,消息会被分为批次写入Kafka。批次包含了一组属于同一个主题,同一个分区的消息。
对Kafka来说,不论任何消息都作为字节数组存储。但是对不同的应用程序来说,消息是有不同的格式的。所以需要在消息的处理过程中用消息模式来描述消息的格式。常见的模式有JSON,XML,AVRO等。
主题用来分类消息。
主题被非为若干个分区,一个分区就是一个提交日志。
一个分区又被分为多个段(segmnet),一个段就是一个日志文件。
一个分区可以被复制多分,并部署在不同的服务器上。实现数据的冗余和伸缩。
流是一组从生产者移动到消费者的数据。
Kafka的客户端有两种类型:生产者和消费者。生产者创建消息。
消费者读取消息。消费者订阅不同的主题,并按照写入顺序读取。消费者通过偏移量来区分已经读取过的消息。
一种元数据,递增的长整形。Kafka写入消息时指定,并保存在一个内部主题(_consumer_offsets)中,保证消费者关闭后,读取状态不变。
一个消费者群组包含多个消费者,属于同一个群组的消费者共同读取一个主题时,Kafka能保证一个分区同时只被同一个消费者群组中的一个消费者读取。但是其他群组的消费者还可以读取这个分区。
一个单独的Kafka服务器被称为broker。它接收生产者的消息,设置偏移量,并保存到磁盘;它同时响应消费者的请求,并返回已发布的消息。
多个broker组成一个集群。
每个集群都有一个broker充当控制器的角色,通过选举产生生。它的职责为:
一个分区从属于一个broker,称为分区首领。
一个分区的其他副本被分配给不同的broker,这些broker被称为追随者。
消息在Kafka中默认保留7天或者数据量达到1G。
有些数据只需要保留最新的值,例如指标,所以可以把主题配置生紧凑型日志,只有最有一条指定键的消费会被保留下来。
使用多集群的原因:
Kafka提供了一个叫做MirrorMaker的数据镜像工具,用来在不同的集权之间同步数据。
Kafka使用ZooKeeper维护集权的成员信息,它起到了两个重要作用: