Kafka 在分布式系统中的 7 大应用场景

这篇具有很好参考价值的文章主要介绍了Kafka 在分布式系统中的 7 大应用场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kafka 介绍

Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性。Kafka 的核心组件包括生产者(Producer),消费者(Consumer),主题(Topic),分区(Partition),副本(Replica),日志(Log),偏移量(Offset)和代理(Broker)。Kafka 的主要特点有:

  • 数据磁盘持久化:Kafka 将消息直接写入到磁盘,而不依赖于内存缓存,从而提高了数据的持久性和容错性。
  • 零拷贝:Kafka 利用操作系统的零拷贝特性,减少了数据在内核空间和用户空间之间的复制,降低了 CPU 和内存的开销。
  • 数据批量发送:Kafka 支持生产者和消费者批量发送和接收数据,减少了网络请求的次数和开销。
  • 数据压缩:Kafka 支持多种压缩算法,如 gzip,snappy,lz4 等,可以有效地减少数据的大小和传输时间。
  • 主题划分为多个分区:Kafka 将一个主题划分为多个分区,每个分区是一个有序的消息队列,分区之间可以并行地读写数据,提高了系统的并发能力。
  • 分区副本机制:Kafka 为每个分区设置多个副本,分布在不同的代理节点上,保证了数据的冗余和一致性。其中一个副本被选为领导者(Leader),负责处理该分区的读写请求,其他副本为追随者(Follower),负责从领导者同步数据,并在领导者失效时进行故障转移。

Kafka 最初是为分布式系统中海量日志处理而设计的。它可以通过持久化功能将消息保存到磁盘直到过期,并让消费者按照自己的节奏提取消息。与它的前辈不同(RabbitMQ、ActiveMQ),Kafka 不仅仅是一个消息队列,它还是一个开源的分布式流处理平台。

Kafka 的应用场景

Kafka 作为一款热门的消息队列中间件,具备高效可靠的消息异步传递机制,主要用于不同系统间的数据交流和传递。下面给大家介绍一下 Kafka 在分布式系统中的 7 个常用应用场景

  • 日志处理与分析
  • 推荐数据流
  • 系统监控与报警
  • CDC(数据变更捕获)
  • 系统迁移
  • 事件溯源
  • 消息队列

1. 日志处理与分析

日志收集是 Kafka 最初的设计目标之一,也是最常见的应用场景之一。可以用 Kafka 收集各种服务的日志,如 web 服务器、服务器日志、数据库服务器等,通过 Kafka 以统一接口服务的方式开放给各种消费者,例如 Flink、Hadoop、Hbase、ElasticSearch 等。这样可以实现分布式系统中海量日志数据的处理与分析。

下图是一张典型的 ELK(Elastic-Logstash-Kibana)分布式日志采集架构。

  1. 购物车服务将日志数据写在 log 文件中。
  2. Logstash 读取日志文件发送到 Kafka 的日志主题中。
  3. ElasticSearch 订阅日志主题,建立日志索引,保存日志数据。
  4. 开发者通过 Kibana 连接到 ElasticSeach 即可查询其日志索引内容。
Kafka 在分布式系统中的 7 大应用场景

 

2. 推荐数据流

流式处理是 Kafka 在大数据领域的重要应用场景之一。可以用 Kafka 作为流式处理平台的数据源或数据输出,与 Spark Streaming、Storm、Flink 等框架进行集成,实现对实时数据的处理和分析,如过滤、转换、聚合、窗口、连接等。

淘宝、京东这样的线上商城网站会通过用户过去的一些行为(点击、浏览、购买等)来和相似的用户计算用户相似度,以此来给用户推荐可能感兴趣的商品。

下图展示了常见推荐系统的工作流程。

  1. 将用户的点击流数据发送到 Kafka 中。
  2. Flink 读取 Kafka 中的流数据实时写入数据湖中其进行聚合处理。
  3. 机器学习使用来自数据湖的聚合数据进行训练,算法工程师也会对推荐模型进行调整。

这样推荐系统就能够持续改进对每个用户的推荐相关性。

Kafka 在分布式系统中的 7 大应用场景

 

3. 系统监控与报警

Kafka 常用于传输监控指标数据。例如,大一点的分布式系统中有数百台服务器的 CPU 利用率、内存使用情况、磁盘使用率、流量使用等指标可以发布到 Kafka。然后,监控应用程序可以使用这些指标来进行实时可视化、警报和异常检测。

下图展示了常见监控报警系统的工作流程。

  1. 采集器(agent)读取购物车指标发送到 Kafka 中。
  2. Flink 读取 Kafka 中的指标数据进行聚合处理。
  3. 实时监控系统和报警系统读取聚合数据作展示以及报警处理。
Kafka 在分布式系统中的 7 大应用场景

 

4. CDC(数据变更捕获)

CDC(数据变更捕获)用来将数据库中的发生的更改以流的形式传输到其他系统以进行复制或者缓存以及索引更新等。

Kafka 中有一个连接器组件可以支持 CDC 功能,它需要和具体的数据源结合起来使用。数据源可以分成两种:源数据源( data source ,也叫作“源系统”)和目标数据源( Data Sink ,也叫作“目标系统”)。Kafka 连接器和源系统一起使用时,它会将源系统的数据导人到 Kafka 集群。Kafka 连接器和目标系统一起使用时,它会将 Kafka 集群的数据导人到目标系统。

下图展示了常见 CDC 系统的工作流程。

  1. 源数据源将事务日志发送到 Kafka。
  2. Kafka 的连接器将事务日志写入目标数据源。
  3. 目标数据源包含 ElasticSearch、Redis、备份数据源等。
Kafka 在分布式系统中的 7 大应用场景

 

5. 系统迁移

Kafka 可以用来作为老系统升级到新系统过程中的消息传递中间件(Kafka),以此来降低迁移风险。

例如,在一个老系统中,有购物车 V1、订单 V1、支付 V1 三个服务,现在我们需要将订单 V1 服务升级到订单 V2 服务。

下图展示了老系统迁移到新系统的工作流程。

  1. 先将老的订单 V1 服务进行改造接入 Kafka,并将输出结果写入 ORDER 主题。
  2. 新的订单 V2 服务接入 Kafka 并将输出结果写入 ORDERNEW 主题。
  3. 对账服务订阅 ORDER 和 ORDERNEW 两个主题并进行比较。如果它们的输出结构相同,则新服务通过测试。
Kafka 在分布式系统中的 7 大应用场景

 

6. 事件溯源

事件溯源是 Kafka 在微服务架构中的重要应用场景之一。可以用 Kafka 记录微服务间的事件,如订单创建、支付完成、发货通知等。这些事件可以被其他微服务订阅和消费,实现业务逻辑的协调和同步。

简单来说事件溯源就是将这些事件通过持久化存储在 Kafka 内部。如果发生任何故障、回滚或需要重放消息,我们都可以随时重新应用 Kafka 中的事件。

7. 消息队列

Kafka 最常见的应用场景就是作为消息队列。 Kafka 提供了一个可靠且可扩展的消息队列,可以处理大量数据。

Kafka 可以实现不同系统间的解耦和异步通信,如订单系统、支付系统、库存系统等。在这个基础上 Kafka 还可以缓存消息,提高系统的可靠性和可用性,并且可以支持多种消费模式,如点对点或发布订阅。

参考资料

  • https://levelup.gitconnected.com/top-8-kafka-use-cases-distributed-systems-d47fc733c7c1
  • https://blog.bytebytego.com/p/ep76-netflixs-tech-stack
  • Apache Kafka Benefits & Use Cases。https://www.confluent.io/learn/apache-kafka-benefits-and-use-cases/

总结

自此本文介绍了 Kafka 在分布式系统中的 7 大应用场景,感谢大家阅读。

关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!文章来源地址https://www.toymoban.com/news/detail-711092.html

到了这里,关于Kafka 在分布式系统中的 7 大应用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式系统中的区块链应用

    作者:禅与计算机程序设计艺术 分布式系统正在成为越来越多的企业级应用的架构模式。越来越多的应用从单机数据库扩展到分布式系统,通过无缝集成服务框架,实现了数据可靠性、服务高可用、容错等目标。但是传统的分布式系统没有引入更加先进的技术,如区块链技术

    2024年02月12日
    浏览(38)
  • 分享8个分布式Kafka的使用场景

    Kafka 最初是为海量日志处理而构建的。它保留消息直到过期,并让消费者按照自己的节奏提取消息。与它的前辈不同,Kafka 不仅仅是一个消息队列,它还是一个适用于各种情况的开源事件流平台。 下图显示了典型的 ELK(Elastic-Logstash-Kibana)堆栈。Kafka 有效地从每个实例收集日

    2024年02月08日
    浏览(30)
  • plumelog介绍与应用-一个简单易用的java分布式日志系统

    官方文档:http://www.plumelog.com/zh-cn/docs/FASTSTART.html 无代码入侵的分布式日志系统,基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志 基于elasticsearch作为查询引擎 高吞吐,查询效率高 全程不占应用程序本地磁盘空间,免维护;对于项目透明,不影响项目本身运行

    2024年02月10日
    浏览(26)
  • 【Spring Boot+Kafka+Mysql+HBase】实现分布式优惠券后台应用系统(附源码)

    需要全部代码请点赞关注收藏后评论区留言私信~~~ 分布式优惠券后台应用系统服务于两类用户群体,一类是商户,商户可以根据自己的实际情况即进行优惠券投放,另一类是平台消费用户,用户可以去领取商户发放的优惠券 分布式优惠券后台应用系统采用SpringBoot作为主体开

    2024年02月10日
    浏览(28)
  • websocket在分布式场景的应用方案

    websocket简介 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它可以在客户端和服务器之间建立持久连接,使得服务器可以主动向客户端推送数据,而不需要客户端不断地向服务器发送请求。 WebSocket 协议的优点包括: 实时性:WebSocket 可以实现实时通信,数据传输的

    2024年02月13日
    浏览(25)
  • Rabbitmq----分布式场景下的应用

    如果单机模式忘记也可以看看这个快速回顾rabbitmq,在做学习 消息队列在使用过程中,面临着很多实际问题需要思考: 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消

    2024年02月08日
    浏览(31)
  • Redis在分布式场景下的应用

    缓存的基本作用是在高并发场景下对应服务的保护缓冲 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: redis由于高强度性能采用内存 但是意味着丢失的风险 单结点redis并发能力有限 分布式服务中数据过多 依赖内存的redis 明显单机不能满足 如果发生故障

    2024年02月08日
    浏览(34)
  • Seata-DTX|分布式事务金融场景案例介绍

    文|魏陈豪 (花名:无陈 Sam) 蚂蚁集团 SOFAStack 产品专家 本文   2966   字 阅读 8   分钟 序言 今天给大家带来一篇 Seata-DTX [1]  商业版分布式事务在金融行业如何保证事务一致性的实践介绍。从一个全局视角出发看看一致性的保证、分别有哪些节点,事务组件在其中处在一个

    2024年02月11日
    浏览(27)
  • ZooKeeper的应用场景(命名服务、分布式协调通知)

    命名服务(NameService)也是分布式系统中比较常见的一类场景,在《Java网络高级编程》一书中提到,命名服务是分布式系统最基本的公共服务之一。在分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等一这些我们都可以统称它们为名字(Name),

    2024年02月12日
    浏览(25)
  • 分布式应用之Zookeeper和Kafka

    1.定义 2.特点 3.数据结构 4.选举机制 第一次选举 非第一次选举 5.部署 1.概念 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。 2.消息队列型 3.Web应用型(代理服务器) 1.为什么需要MQ 2.消息队列作用 3.消息队列模式 ①点对

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包