初识Kafka,基础剖析再深入,助你游走在数据时代前沿

深入理解企业总体架构,看这篇就够了 企业商务模型的主要内容包括主营业务、商务模式、商务主体、竞品分析、组织架构、商务运作模型和业务流程等。 主营业务即公司做什么业务,商务模式即公司怎么赚钱,商务主体即哪几个人在一起做这门生意,竞品分析即了解竞争对手的情况,组织架构即公司部[ ]是怎么划分的。在组织架构图中标出人数,根据系统与业务之间的对应关系,可以了解系统中哪些模块使用的频率高,以及业务与其对应模块的复杂度。商务运作模型即公司是如何运作的,售前做计划,找供应商把东西买进来后,经过服务和结算,再卖给经销商和采购商,使我们获得利润,售后进行大数 阅读详情

前言

Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache 基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Storm、Spark、 Flink等都支持与Kafka集成。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

Kafka之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的:

  • 消息系统:Kafka 和传统的消息系统( 也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。
  • 存储系统:Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于Kafka的消息持久化功能和多副本机制,我们可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。
  • 流式处理平台:Kafka 不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。

体系结构

一个典型的Kafka 体系架构包括若干Producer、若干Broker、若干Consumer, 以及一个ZooKeeper集群,如下图所示。其中ZooKeeper是Kafka 用来负责集群元数据的管理、控制器的选举等操作的。Producer将消息发送到Broker,Broker负责将收到的消息存储到磁盘中,而Consumer负责从Broker订阅并消费消息。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

整个Kafka体系结构中引入了以下3个术语。

  1. Producer:生产者,也就是发送消息的一方。生产者负责创建消息,然后将其投递到Kafka中。
  2. Consumer:消费者,也就是接收消息的一方。消费者连接到Kafka上并接收消息,进而进行相应的业务逻辑处理。
  3. Broker:服务代理节点。对于Kafka而言,Broker 可以简单地看作一个独立的Kafka服务节点或Kafka服务实例。大多数情况下也可以将Broker看作一台Kafka服务器,前提是这台服务器上只部署了一个Kafka实例。一个或多个Broker组成了一个Kafka集群。一般而言,我们更习惯使用首字母小写的broker来表示服务代理节点。

主题和分区

在Kafka中还有两个特别重要的概念一主 题(Topic) 与分区(Parition) 。Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题(发送到Kafka集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。

主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时候也会把分区称为主题分区(Topic-Partition) 。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset) 。offset 是消息在分区中的唯一标识, Kafka通过它来保证消息在分区内的顺序性,不过offset并不跨越分区,也就是说,Kafka 保证的是分区有序而不是主题有序。

如下图所示,主题中有4个分区,消息被顺序追加到每个分区日志文件的尾部。Kafka中的分区可以分布在不同的服务器(broker)上,也就是说,一个主题可以横跨多个broker,以此来提供比单个broker更强大的性能。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

每一条消息被发送到broker之前,会根据分区规则选择存储到哪个具体的分区。如果分区规则设定得合理,所有的消息都可以均匀地分配到不同的分区中。如果一个 主题只对应一个文件,那么这个文件所在的机器I/O 将会成为这个主题的性能瓶颈,而分区解决了这个问题。在创建主题的时候可以通过指定的参数来设置分区的个数,当然也可以在主题创建完成之后去修改分区的数量,通过增加分区的数量可以实现水平扩展。

Kafka为分区引入了多副本(Replica) 机制,通过增加副本数量可以提升容灾能力。同一分区的不同副本中保存的是相同的消息(在同- -时刻,副本之间并非完全一样),副本之间是“一主多从”的关系,其中leader副本负责处理读写请求,follower副本只负责与leader副本的消息同步。副本处于不同的broker中,当leader副本出现故障时,从follower副本中重新选举新的leader副本对外提供服务。Kafka通过多副本机制实现了故障的自动转移,当Kafka集群中某个broker失效时仍然能保证服务可用。

如下图所示,Kafka集群中有4个broker,某个主题中有3个分区,且副本因子( 即副本个数)也为3,如此每个分区便有1个leader副本和2个follower副本。生产者和消费者只与leader副本进行交互,而follower副本只负责消息的同步,很多时候follower副本中的消息相对leader副本而言会有一-定的滞后。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

Kafka消费端也具备一定的容灾能力。Consumer 使用拉(Pull) 模式从服务端拉取消息, 并且保存消费的具体位置,当消费者宕机后恢复上线时可以根据之前保存的消费位置重新拉取需要的消息进行消费,这样就不会造成消息丢失。

分区中的所有副本统称为AR ( Assigned Replicas) 。所有与leader副本保持-定程度同步的副本(包括leader 副本在内)组成ISR (In-Sync Replicas),ISR 集合是AR集合中的一个子集。消息会先发送到leader副本,然后follower 副本才能从leader 副本中拉取消息进行同步,同步期间内follower 副本相对于leader 副本而言会有一定程度的滞后。前面所说的“一定程度的同步”是指可忍受的滞后范围,这个范围可以通过参数进行配置。与leader副本同步滞后过多的副本(不包括leader副本)组成OSR (Out-of-Sync Replicas),由此可见,AR=ISR+OSR。

在正常情况下,所有的follower 副本都应该与leader 副本保持一定程度的同步,即AR=ISR,OSR集合为空。

leader副本负责维护和跟踪ISR集合中所有follower副本的滞后状态,当follower副本落后太多或失效时,leader副本会把它从ISR集合中剔除。如果OSR集合中有follower副本“追上”了leader 副本,那么leader副本会把它从OSR集合转移至ISR集合。默认情况下,当leader副本发生故障时,只有在ISR集合中的副本才有资格被选举为新的leader,而在OSR集合中的副本则没有任何机会(不过这个原则也可以通过修改相应的参数配置来改变)。

ISR与HW和LEO也有紧密的关系。HW是High Watermark的缩写,俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。

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

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

LEO是Log End Offset的缩写,它标识当前日志文件中下一条待写入消息的offset,上图中offset为9的位置即为当前8日志文件的LEO,LEO的大小相当于当前日志分区中最后一条消息的offset值加1。分区ISR集合中的每个副本都会维护自身的LEO,而ISR集合中最小的LEO即为分区的HW,对消费者而言只能消费HW之前的消息。

为了让大家更好地理解ISR集合,以及HW和LEO之间的关系,下面通过一个简单的示例来进行相关的说明。如下图所示,假设某个分区的ISR集合中有3个副本,即一个leader副本和2个follower副本,此时分区的LEO和HW都为3。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

消息3和消息4从生产者发出之后,会被先存入leader 副本,如图1-6所示。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

在消息写入leader副本之后,follower副本会发送拉取请求来拉取消息3和消息4以进行消息同步。

在同步过程中,不同的follower 副本的同步效率也不尽相同。如下图所示,在某一时刻follower1完全跟上了leader 副本而follower2 只同步了消息3,如此leader副本的LEO为5,follower1的LEO为5, follower2 的LEO为4,那么当前分区的HW取最小值4,此时消费者可以消费到offset为0至3之间的消息。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

写入消息(情形4)如下图所示,所有的副本都成功写入了消息3和消息4,整个分区的HW和LEO都变为5,因此消费者可以消费到offset为4的消息了。

初识Kafka,基础剖析再深入,助你游走在数据时代前沿

 

后记

由此可见,Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制。事实上,同步复制要求所有能工作的follower 副本都复制完,这条消息才会被确认为已成功提交,这种复制方式极大地影响了性能。而在异步复制方式下,follower副本异步地从leader 副本中复制数据,数据只要被leader副本写入就被认为已经成功提交。在这种情况下,如果follower副本都还没有复制完而落后于leader副本,突然leader副本宕机,则会造成数据丢失。Kafka使用的这种ISR的方式则有效地权衡了数据可靠性和性能之间的关系。

只是小编个人的理解,有哪里整理的不太确切的,请各位大佬多多指出,咱们一起共同进步~~~

喜欢文章请多多点赞评论分享,关注小编,你们的支持就是小编最大的动力~~~

十年架构师养成记!MySQL+Redis+ZK+Nginx+MongoDB实战技术手册,大厂在向你招手 前言 之前帮大家整理过很多Java架构相关学习内容,有粉丝反映能不能展示一些面试资料,毕竟疫情期间,很多公司也是存在裁员或减员的情况的。在这样的大环境下,面试或许成了很多程序员的主课题了。 今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让大家少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的朋友都能看得懂。 同时这部分面试文档也是可以免费的提供给有需要的同学们学习的,有需要的可以查看文末的获取方式! . 阅读详情

相关推荐

实战解析居安思危的Redis拓展—保护Redis,为Redis安全保驾护航

今天这篇我们来谈谈使用 Redis 需要注意的安全风险以及防范措施,避免数据泄露和丢失, 避免所在主机权限被黑客窃取,以及避免人为操作失误。进而为Redis的通信安全做保障。 拓展 6:居安思危 —— 保护 Redis 指令安全 Redis 有一些非常危险的指令,这些指令会对 Redis 的稳定以及数据安全造成非常严重的影响。比如keys指令会导致 Redis 卡顿,flushdb和flushall会让 Redis 的所有数据全部清空。如何避免人为操作失误导致这些灾难性的后果也是运维人员特别...

python6_quanzhan的博客 510

Kafka 中两个重要概念:主题与分区

在 Kafka 中还有两个特别重要的概念—主题(Topic)与分区(Partition)。Kafka 中的消息以主题为单位进行归类,生产者负责将消息发送到特定的主题(发送到 Kafka 集群中的每一条消息都要指定一个主题),而消费者负责订阅主题并进行消费。 主题是一个逻辑上的概念,它还可以细分为多个分区,一个分区只属于单个主题,很多时候也会把分区称为主题分区(Topic-Partition)。同一主题下的不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日

码农架构 1911

基于深度学习的中文方言识别模型训练实战

本文介绍了一个基于深度学习的中文方言识别模型开发流程。项目采用PyTorch框架和Chinese-BERT-wwm预训练模型,构建了包含BERT基础层、方言特征增强层和注意力机制的多方言分类系统。文中详细阐述了数据收集策略,包括从社交媒体、语料库和众包平台获取多源数据,并实现了文本清洗、同义词替换和回译等数据增强技术。模型架构部分展示了如何在BERT基础上添加方言特征提取层和多头注意力机制来提升识别性能。该方案支持普通话、粤语等6种主要方言的识别,目标准确率达90%以上,响应时间小于100ms,适用于智能客

电脑管家 1736

牛皮!阿里资深架构师耗费三年终于把Netty进阶之路PDF整理完了,读完我彻底跪了

前言 Netty将Java NIO接口封装,提供了全异步编程方式,是各大Java项目的网络应用开发必备神器。 在本文中,将Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析,让读者能够真正掌握Netty,在实际工作中少犯错。 本文中的案例涵盖了Netty 的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty的问题定位思

python6_quanzhan的博客 2682

数字加网(一)— —概念及分色合成

由于大多数图像复制设备是二值设备,因此在图像复制过程中,必须先把连续调的灰度图像或彩色图像处理成二值的半色调图像,用单位面积的网点覆盖率来表现图像的颜色深浅变化。这个过程被称之为加网(Screening) 数字加网就是根据人眼视觉的空间混色特性,用人眼无法分辨的细小黑白点的单位覆盖面积来模拟灰度图像或彩色图像的层次变化,使得到

Sin_Geek成长の迹 8595

LeGO-LOAM运行kitti数据集

文章目录1. kitti-lego-loam2. 改动3. 实验结果4. evo轨迹测评 1. kitti-lego-loam 链接:kitti-lego-loam kitti-lego-loam提供了将kitti序列转化成rosbag的代码,在kittibag中. 需要注意下数据文件的存放顺序,以00序列为例: datafolder          |____results          &

Zlp19970106的博客 8705

太牛皮啦!阿里P8架构师,呕心48小时整理的分布式系统技术和实战笔记

前言 现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。 那什么是分布式系统?分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及其编译系统、分布式文件系统分布式数据库系统等,当然这些也是分布式的关键技术。 分布式需要了解的重点 1、A.

python6_quanzhan的博客 2466

手把手拆解固态电池成本:2030年真能比液态电池便宜30%吗?

本文深度解析固态电池成本结构,探讨2030年实现比液态电池便宜30%的可行性路径。通过拆解正极材料、负极材料和固态电解质的成本演变,分析关键技术对降本的影响,并预测产业链协同效应下的成本优化趋势。文章指出,在材料创新、设备国产化和政策支持等多重因素推动下,固态电池有望在2030年实现显著降本目标。

kite3的博客 405

5年开发码农,靠着这部Kafka核心设计实战笔记,成功入职阿里,定级P7

写在前边 Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Storm、Spark、 Flink等都支持与Kafka集成。 Kafka之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的: 消息系统: Kafka 和

python6_quanzhan的博客 1806

软件集成:Simulink与STM32联合开发

本文首先通过一个简单的Simulink模型生成代码,然后将代码copy到一个STM32工程中去编译软件。最后将软件下载到STM32F407中,通过串口输出Simulink计算的结果。 阅读本文需要有一定的STM32开发调试经验和Simulink代码生成经验。关于Simulink代码生成可以参考博主的专栏《Simulink代码生成》。 文章目录1 问题引入2 集成方案3 建模与编程过程3.1 Simulink模型搭建3.2 代码生成配置3.3 STM32工程搭建3.4 STM32的main.c文件修改3.4.

u013288925的博客 2万+

运维颠覆!一文解锁AI赋能运维实战秘籍,效率飙升!

将AI应用于运维工作是一场极具价值的变革,从故障预测与诊断到自动化任务执行,再到资源管理优化,AI都展现出巨大潜力。尽管在实践过程中会面临数据质量、模型复杂性等挑战,但通过合理的技术选型和解决方案,我们能够充分挖掘AI的优势,实现运维工作的高效、智能转型。持续探索和创新AI在运维领域的应用,将为企业的数字化发展提供坚实保障。在科技飞速发展的当下,运维领域正经历着深刻变革,AI的融入成为提升运维效率与质量的关键。本文将深入实战,带你领略AI如何在运维各环节大显身手,让你的运维工作开启智能高效新模式。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 401

大牛呕心力作——Kafka开发实战,助你徜徉大数据时代

前言 随着大数据时代的到来,数据中蕴含的价值日益得到展现,仿佛一座待人挖掘的金矿, 引来无数的掘金者。但随着数据量越来越大,如何实时准确地收集并分析数据成为摆在所有从业人员面前的难题。 而这时,kafka的出现算是解决了这个问题。 Kafka的核心功能是什么?一言以蔽之,高性能的消息发送与高性能的消息消费。接下来咱们就进入kafka世界,深入实战探讨kafka实战开发。 Kafka实战 本书是涵盖ApacheKafka各方面的具有实践指导意义的工具书和参考书。作者结合典型的使用场景,对Katk

python6_quanzhan的博客 1341

SAP 清账凭证 完整生成逻辑(超详细原理 + 底层规则 + 分录逻辑 + 互清特殊规则)

【SAP清账凭证核心逻辑摘要】(149字) SAP清账凭证生成遵循两大类型:1)资金往来对冲型(如F-32/F-44互清),强制生成含完整借贷分录的独立凭证,通过AUGDT/AUGBL字段绑定未清项,典型场景如应收冲应付(借:应付账款 贷:应收账款);2)纯核销型(如F.13自动清账),仅标记行项目状态不产生实际分录。关键规则:①仅未清项管理科目可清账;②互清必须配置主数据关联;③差额清账自动补差(折扣/汇差);④原始凭证永不修改,仅更新BSIK/BSAD等表状态。清账凭证均保留可追溯性,支持FBRA重置还

金牌架构师 546

实战解析无所不知的Redis拓展应用——Info,进阶学习,无所不能

前言 学习是一个持续的过程。像咱们一直在更新的Redis学习内容,由基础结构,到原理应用,再到集群搭建,了解的够充分了,咱们接着又介绍Redis拓展应用,将知识面拓宽,毕竟技术都是相通的,只有灵活运用,才能发挥出最大作用。 好了,接着今天的学习更新,拓宽Redis应用。 拓展 2:无所不知 —— Info 指令 在使用 Redis 时,时常会遇到很多问题需要诊断,在诊断之前需要了解 Redis 的运行状 态,通过强大的Info指令,你可以清晰地知道 Redis 内部一系列运行参数。 Info...

python6_quanzhan的博客 1182

从 Non-Unicode 到 Unicode:ABAP 程序切换的坑、原理与工程化落地指南

摘要 老SAP系统中ABAP程序员常假设1字符=1字节,导致大量代码依赖单字节处理逻辑。Unicode系统的引入彻底改变了字符长度、偏移量等底层认知,强制要求程序遵循Unicode规则。关键问题包括:字符/字节语义混淆、结构体访问风险、以及ABAP语言版本的门槛限制。迁移时需要重点关注字符串处理、二进制协议解析等场景,利用UCCHECK、RSUNISCAN_FINAL等工具扫描风险,并通过持续集成机制确保代码质量。建议在Non-Unicode阶段就启用unicode_check参数模拟严格模式,分批次修复问

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3460

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

实战解析朝生暮死的Redis拓展应用—过期策略和LRU,继续强化学习

今天,我们继续Redis的拓展应用,继续深化了解、强化学习效果。 拓展 4:朝生暮死 —— 过期策略 Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。你可以想象 Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割。 你还可以进一步站在死神的角度思考,会不会因为同一时间太多的 key 过期,以至于忙不过来。同时因为 Redis 是单线程的,收割的时间也会占用线程的处理时间,如果收割的太过于繁忙,会不会导致线上读写指令出现卡顿。 这些问题.

python6_quanzhan的博客 1144

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一文带你彻底吃透Redis Cluster集群,干货满满,速来

1.为什么要实现Redis Cluster 主从复制不能实现高可用 随着公司发展,用户数量增多,并发越来越多,业务需要更高的QPS,而主从复制中单机的QPS可能无法满足业务需求 数据量的考虑,现有服务器内存不能满足业务数据的需要时,单纯向服务器添加内存不能达到要求,此时需要考虑分布式需求,把数据分布到不同服务器上 网络流量需求:业务的流量已经超过服务器的网卡的上限值,可以考虑使用分布式来进行分流 离线计算,需要中间环节缓冲等别的需求 2.数据分布 2.1 为什么要做数据分布 全量数据,单机Re

python6_quanzhan的博客 1069

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

时隔三月,参加2020秋招散招,终拿字节跳动后端开发意向书

写在前面 3个月前头条正式批笔试4道编程题只AC了2道,然后被刷了做了200多道还是太菜了,本来对字节不抱太大希望,毕竟后台竞争太大,而且字节招客户端开发比较多。后来看到有散招免笔试,抱着试一试的心态投了,然而几天过去毫无反应,20天后突然告诉我进行面试。8.10一面,8.12二三面,之后8.25晚上收到电话,拿到意向书。 字节跳动后端一面(纯技术面) 队列的实现,需要注意的地方 快速排序的实现、时间复杂度分析 B树和B+树的区别、应用 HashMap的实现,扩容机制,扩容时如何保证可操作

python6_quanzhan的博客 962

阿里P8大佬整合的四大主流中间件学习笔记,助你金九银十稳进大厂

RabbitMQ: 优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置 缺点:性能和吞吐量较差,不易进行二次开发 RocketMQ: 优点:性能好,稳定可靠,有活跃的中文社区,特点响应快 缺点:兼容性较差,但随意影响力的扩大,该问题会有改善 ActiveMQ: 目前,消息队列在各大互联网平台,尤其是电商平台如京东、淘宝、去哪儿等网站有着深入的应用,主要作用是高并发访问高峰,通过异步消息模式减少网站响应时间,提高系统吞吐量。ActiveMQ作为众多MQ中的一员,而且也是最老牌的一员,有其优势:1)

python6_quanzhan的博客 598

吃透Redis!你肯定没见过的Redis核心集群搭建,Cluster详解

前言 Redis核心知识再更新!!! 今天,咱们继续Redis的学习内容。简单回顾一下之前的内容:从一开始的Redis基础结构,到后来的原理应用,再到现在的集群搭建,就是由浅及深的探究Redis的内核,争取彻底吃透他。 而且小编也会根据文章的长度适当断一下,为的就是让大家有一个更好的阅读体验,对内容吸收也是有好处的。如果感觉意犹未尽,随时欢迎大家评论区共同探讨交流哦~~~ 今天,我们继续探究Redis的集群——集群完结篇。 集群 3:众志成城 —— Cluster RedisCluster 是

python6_quanzhan的博客 538

积跬步以至千里,深入剖析Redis实战——分布式锁和延时队列

前言 之前咱们简单介绍了一下Redis的简单结构,相信很多读者看着比较入门。的确,笔者在介绍任何技术时,都是由浅及深的路数,为的是刚入门不久的新人,毕竟相对于久经沙场的老将,新人更需要这方便的普及。 好的,话不多少,今天咱们就进行Redis的实战应用,深入剖析Redis从今天开始。 Redis应用一:分布式锁 分布式应用进行逻辑处理时经常会遇到并发问题。 比如一个操作要修改用户的状态,修改状态需要先读出用户的状态,在内存里进行修改,改完了再存回去。如果这样的操作同时进行了,就会出现并发问.

python6_quanzhan的博客 506

牛皮!阿里P8联合多位业界大佬整理的架构宝典,升职加薪有奇效

前言 架构这个概念,和计算机学科(以及近几年才成为一级学科的软件工程)中的其他概念类似,都是从传统学科借用来的。这是因为计算机这门学科太年轻、发展太快,还来不及形成自己特有的术语和名词。 而软件架构定义的多样性和各个企业对架构师的定位不同,导致很多程序员在向架构师转型的过程中有些茫然。 今天,小编就为大家推荐这篇由阿里高级架构师编撰的架构宝典,汇聚了国内一线互联网公司的技术架构专家、架构领域布道者在架构方法论、微服务、业务架构、性能架构几个方面的经验,从系统架构设计和实践方法与技巧两个方面进行阐述,非

python6_quanzhan的博客 496

Kafka 如何实现顺序消费?

Kafka仅保证分区内消息有序,不支持全局有序。实现顺序的关键是:生产端通过相同Key确保消息进入同一分区(配合幂等生产者防重试乱序),消费端保证分区独占且按Key路由至内存队列,由单线程串行处理。吞吐提升可按Key拆分队列并行处理,避免并行导致乱序。核心口诀:同Key同分区,同分区同线程。

223

消费回调固定 return nil:错误传播与 Kafka 位点提交的区别

Mongo 写入失败时处理器记录错误但不 Mark,外层回调仍返回 nil;返回值与 Kafka 位点提交是不同动作。失败消息是否重投或被后续位点越过,需要结合分区水位分析。

2501_92769340的博客 185

第十二篇:《完整实战:订单事件驱动系统(Kafka + 消费者 + 死信队列)》

这篇按一条完整的订单链路来搭:订单服务写库 + 发事件,库存服务消费并扣减,失败走指数退避重试,重试耗尽后进入死信队列,消费端全程幂等去重。Outbox 的 relay 是至少一次,DLQ 的重试也是至少一次。重试消费组的 Lag 速率:order-events.retry 的消费 lag 如果持续增长且不回落,说明重试没有收敛,可能正在走向“重试爆炸”的早期形态。retries=MAX_VALUE 配合幂等生产者,解决的是生产者重试导致的 Broker 端重复,不解决消费端业务重复——后者是下一节的事。

qq_45239623的博客 412
上一篇: 十年架构师,带你初识SSM框架结构,深入开发Java就在今天
下一篇: 全网最全,Mybatis的缓存机制详解,带给你不一样的体验
Java领域指导者
博客等级 码龄7年 404粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值