1.高吞吐量:单机每秒处理十万级的消息量。即使存储了许多TB的消息,它也保持稳定的性能。
2.高性能:单节点支持上千个客户端,并保证零停机和零数据丢失。
3.持久化数据存储:将消息持久化到磁盘。通过将数据持久化到硬盘以及replication防止数据丢失。
4.分布式系统: 易于向外扩展。所有的Producer、Broker和Consumer都会有多个,均为分布式的。无需停机即可扩展机器。多个Producer、Consumer可能是不同的应用。
5.可靠性: Kafka是分布式,分区,复制和容错的。
6.客户端状态维护:消息被处理的状态是在Consumer端维护,而不是由server端维护。当失败时能自动平衡。
7.支持online和offline的场景。
8.支持多种客户端语言。Kafka支持Java、.NET、PHP、Python等多种语言。
Kafka 最常见的应用场景就是作为消息队列。 Kafka 提供了一个可靠且可扩展的消息队列,可以处理大量数据。
Kafka 可以实现不同系统间的解耦和异步通信,如订单系统、支付系统、库存系统等。在这个基础上 Kafka 还可以缓存消息,提高系统的可靠性和可用性,并且可以支持多种消费模式,如点对点或发布订阅。
公司可以用Kafka可以收集各种服务的Log,典型就是 ELK(Elastic-Logstash-Kibana)。Kafka 有效地从每个实例收集日志流。
图片
流式处理是 Kafka 在大数据领域的重要应用场景之一,其与流处理框架(如Spark Streaming、Storm、Flink等)框架进行集成。主要内容包括:
Kafka作为流式处理平台的数据源或数据输出:Kafka可以作为流数据的中介,将实时数据发送到Kafka中,同时也可以从Kafka中读取数据进行处理和分析。 推荐系统的工作流程:以淘宝、京东等线上商城网站的推荐系统为例,描述了推荐系统的工作流程。主要包括:
图片
与日志分析系统类似,我们需要收集系统指标以进行监控和故障排除。不同之处在于,指标是结构化数据,而日志是非结构化文本。指标数据被发送到 Kafka 中,并在 Flink 中进行聚合。下图展示了常见监控报警系统的工作流程:
图片
CDC(Change data capture) 将数据库更改流式传输到其他系统,以便进行复制或缓存/索引更新。例如,在下图中,事务日志被发送到 Kafka,并由 ElasticSearch、Redis 和辅助数据库引入。
图片
Kafka 可以用来作为老系统升级到新系统过程中的消息传递中间件(Kafka),以此来降低迁移风险。 在下图中,为了升级下图中的订单服务,我们更新了旧版订单服务,以使用 Kafka 的输入并将结果写入 ORDER 主题。新的订单服务使用相同的输入,并将结果写入 ORDERNEW 主题,对帐服务比较 ORDER 和 ORDERNEW。如果它们相同,则新服务通过测试。
图片
生产者: 创建消息,将消息发布到Kafka的topic中。broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的 segment 文件中 一般情况下,一个消息会被发布到一个特定的主题上。
消费者读取消息。
一个独立的Kafka 服务器被称为broker。
broker 为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。
broker 是集群的组成部分。每个集群都有一个broker 同时充当了集群控制器的角色(自动从集群的活跃成员中选举出来)控制器负责管理工作,包括将分区分配给broker 和监控broker 在集群中,一个分区从属于一个broker,该broker 被称为分区的首领。
图片
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
物理上不同Topic的消息分开存储。
Topic就好比数据库的表,尤其是分库分表之后的逻辑表。
图片
本文链接:http://www.28at.com/showinfo-26-88393-0.htmlKafka六大使用场景以及核心概念,你知道几个?
声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。