领航分布式消息系统:一起探索Apache Kafka的核心术语及其应用场景

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

        本文是Kafka系列文章的第一篇,将带你了解Kafka的核心术语及其应用场景,后续会逐步探索其各方面的原理及应用场景。下面先看一张大概得简图,涉及Kafka的功能、原理等等,后续不断深入介绍,欢迎关注。领航分布式消息系统:一起探索Apache Kafka的核心术语及其应用场景,分布式,kafka,kafka核心概念

1、什么是消息中间件

        消息中间件(message queue middleWare, MQ)指利用高效可靠消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程通信。一般有两种传递模式:点对点模式和发布订阅模式。点对点的模式是基于队列的,消息生产者发送消息到队列,消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。发布订阅模式定义了如何向一个内容节点发布和订阅,这个内容节点称为主题(topic),主题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,消息订阅者从主题中订阅消息。领航分布式消息系统:一起探索Apache Kafka的核心术语及其应用场景,分布式,kafka,kafka核心概念

        消息中间件将消息路由给应用程序B,这样消息可以完全存在于两台不同的计算机上。消息中间件负责网络通信,如果网络不可用,消息中间件会存储消息直到连接可用。

        1.1 消息中间件的作用

  • 解藕:如上图,应用A与B完全隔离开,甚至不知道对方是谁,实现了完全解耦。
  • 冗余(存储):有些情况数据处理会失败,消息中间件可以把数据进行持久化,直到他们已经被完全处理。通过这种方式规避数据丢失的风险。
  • 扩展性:因为消息中间件解藕了应用的处理过程,所以提高消息入队和处理的效率很容易。
  • 削峰:在访问剧增的情况下,应用仍然需要继续发挥作用,但这种突发的流量并不常见,如果以处理峰值的标准来投入资源,无疑是巨大的浪费,使用消息中间件支撑突发的流量,不会因为超负荷请求而完全奔溃。
  • 可恢复性:当系统的一部分组件失效时不影响整个系统。降低了应用间的耦合性,系统恢复后还能继续处理消息。
  • 顺序保证:大多数场景下,顺序处理数据很重要,大部分消息中间件支持一定程度上的顺序性。
  • 缓冲:在任何重要的系统中,都会存在需要不同处理时间的元素,消息中间件通过一个缓冲层来帮助任务最高效率的执行,写入消息中间件的处理尽可能的快。该缓冲层有助于控制和优化数据流经过系统的速度。
  • 异步通信:很多时候不需要立即处理消息,消息中间件提供了异步处理机制。

        Kafka还提供了大多消息系统难以实现的消息顺序保障回溯消费的功能。

2、Kafka简介

        kafka是Scala语言开发的一个多分区、多副本且基于zookeeper协调的分布式消息系统。他具有三个功能。

        第一个是消息中间件的功能,上边已经描述。

        第二个是存储功能,Kafka把消息存储到磁盘,相比于其他基于内存的存储系统而言,有效的降低了数据丢失的风险。这也正得益于Kafka的消息持久化和多副本机制。

        第三个是流式处理,Kafka不仅为每个流行的流式处理框架提供了可靠的数据源,还提供了一个完整的流式处理类库。

领航分布式消息系统:一起探索Apache Kafka的核心术语及其应用场景,分布式,kafka,kafka核心概念

        消息中间件主要又3部分组成:

  1. 生产者:发送消息的一方,生产者负责创建消息,然后将其投递到kafka中
  2. consumer:消费者,接受消息的一方。消费者链接到Kafka上并接收消息,进而进行相应的业务逻辑
  3. broker:服务代理节点。对于Kafka而言,broker可以简单的看作一个独立的Kafka服务节点或Kafka服务实例。

        Kafka中有两个重要概念,分别是主题(Topic)和分区(partion),消息是以主题进行分类的,生产者负责将消息发送到特定主题中,而消费者负责订阅消息。消息发送到broker前,会根据分区规则选择存储到具体哪个分区中。

        kafka的分区引入了多副本(Replcia)机制,通过增加副本数来增加容灾能力,同一分区的不同副本保存的是相同的消息,副本之间是一主多从的关系,其中leader副本负责处理读写请求,生产者和消费者只与leader副本进行交互,follower副本只负责与leader副本的消息同步。这里留一个思考题,为什么要这样设计呢?

        分区相关概念

        AR:分区中所有副本统称为AR(Assigned Replicas)。

        ISR:所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR(In-SyncReplicas)

        OSR:与leader副本同步滞后过多的副本(不包括leader副本在内)组成OSR(Out-of-Sync Replicas)。

        消息会先发往leader副本,然后follower副本才从leader副本中拉取消息进行同步,同步期间内followed副本相对leader副本而言会有一定程度的滞后。一定程度是指可以在容忍的范围内,这个范围可以通过参数进行配置。AR=ISR+OSR.

        ISR与HW和LEO有着紧密的关系。

        HW:是high watermark的缩写,俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。领航分布式消息系统:一起探索Apache Kafka的核心术语及其应用场景,分布式,kafka,kafka核心概念

        

        如上图表示一个日志文件,这个日志文件中有9条消息,第一条消息的offset(LogStartOffset)为0,最后一条消息的offset为8,offset为9的消息用虚线框表示,代表下一条待写入的消息。日志文件的HW为6,表示消费者只能拉取到offset为0至5之间的消息,而offset为6的消息对消费者而言是不可见的。

        LEO:是Log End Offset的缩写,表示当前日志文件中下一条待写入消息的offset,LEO的大小相当于当前日志分区中最后一条消息的offset值加1.        

        分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW,对消费者而言只能消费HW之前的消息。

        下一节将带你详细了解生产者发送消息流程。文章来源地址https://www.toymoban.com/news/detail-811720.html

到了这里,关于领航分布式消息系统:一起探索Apache Kafka的核心术语及其应用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【分布式websocket】聊天系统消息加密如何做

    前言 先介绍一下对称加密算法,在介绍一下加密流程,然后是介绍一下查询加密消息的策略。然后结合现有技术架构然后去选型。 决定采用客户端解密。简而言之就是采用对称服务端加密。然后将加密内容存储到消息表的content字段。然后客户拉取content字段 然后解密。拉取

    2024年04月14日
    浏览(40)
  • 【新星计划】Kafka分布式发布订阅消息系统

      目录 Kafka分布式发布订阅消息系统 1. 概述 1.1 点对点消息传递模式 1.2 发布-订阅消息传递模式 1.3 Kafka特点 1.4 kafka拓扑图 2. Kafka工作原理 2.1 Kafka核心组件介绍 2.2 Kafka工作流程分析 2.2.1 生产者生产消息过程 2.2.2 消费者消费消息过程 2.2.3 Kafka Topics 2.2.4 Kafka Partition 2.2.4 Kafka

    2024年02月08日
    浏览(46)
  • 本地消息表模式保障分布式系统最终一致性

    订单表 消息表 process_queue 库存系统 return_queue 说明 成功 失败 / / / 订单库回滚 成功 成功 失败 / / 订单系统重发消息 成功 成功 成功 失败 / Broker自动重试,注意接口幂等 成功 成功 成功 库存不足退回 / Broker通知回掉,订单/消息作废 成功 成功 成功 成功 失败 订单系统重发消

    2024年04月28日
    浏览(45)
  • 分布式系统消息通信技术:MOM与RPC

    中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必须要有一个通信中间件,即中间件+平台+通信,这

    2024年02月11日
    浏览(42)
  • 分布式系统架构设计之分布式消息队列的水平扩展性、安全可用性以及监控与调优

    随着业务的快速发展和数据的不断增长,单一的消息队列服务器往往难以满足高并发、高可用和高吞吐量的需求,因此,如何实现消息队列的水平扩展成为了一个重要的问题。这部分我将从分区、副本、负载均衡等关键概念出发,一起探讨如何实现分布式消息队列的水平扩展

    2024年02月01日
    浏览(53)
  • 探索Garnet:微软开源的高性能分布式缓存存储系统

    微软研究院近期宣布推出一款名为Garnet的创新开源分布式缓存存储系统,致力于解决现代应用程序在处理大规模数据时对于高吞吐量、低延迟及卓越可扩展性的严苛要求。这款基于C# .NET 8.0构建的新型系统,充分利用了现代硬件能力,为应用程序开发人员提供了加速数据访问

    2024年04月26日
    浏览(55)
  • Kafka 最佳实践:构建可靠、高性能的分布式消息系统

    Apache Kafka 是一个强大的分布式消息系统,被广泛应用于实时数据流处理和事件驱动架构。为了充分发挥 Kafka 的优势,需要遵循一些最佳实践,确保系统在高负载下稳定运行,数据可靠传递。本文将深入探讨 Kafka 的一些最佳实践,并提供丰富的示例代码,帮助读者更好地应用

    2024年02月03日
    浏览(63)
  • 分布式websocket即时通信(IM)系统保证消息可靠性【第八期】

    b站上面本期视频版本,观看视频食用更佳!点击即可跳转,找不到视频可以直接搜索我 目前叫 呆呆呆呆梦 目前已经写的文章有。并且有对应视频版本。 git项目地址 【IM即时通信系统(企聊聊)】点击可跳转 sprinboot单体项目升级成springcloud项目 【第一期】 前端项目技术选型

    2024年01月22日
    浏览(63)
  • RabbitMQ:高效传递消息的魔法棒,一篇带你助力构建可靠的分布式系统(上篇)

    MQ是消息队列( Message Queue )的缩写,是一种在应用程序之间传递消息的技术。通常用于 分布式系统 或 异步通信 中,其中 发送者 将消息放入队列,而 接收者 从队列中获取消息。 这种异步通信模式允许发送者和接收者在不需要实时连接的情况下进行通信,从而提高了应用

    2024年02月15日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包