- 博客(171)
- 收藏
- 关注
原创 《RocketMQ实战与进阶》08 结合实际场景顺序消费、消息过滤实战
文章摘要: 本文探讨了RocketMQ在银行项目中的两种典型应用场景。顺序消费通过消息队列确保同一账户的余额变更短信按操作顺序发送,使用MessageQueueSelector和MessageListenerOrderly实现;消息过滤则通过Tag机制解决微服务架构中基础数据同步的定向重推问题,避免全量消息广播。文中结合代码示例,分析了顺序消费的并发控制原理及Tag过滤的优缺点,强调顺序消费需异常处理,而多Tag方案虽存在性能损耗但优于多Topic的松散管理。
2026-04-21 09:28:58
242
原创 《RocketMQ实战与进阶》07 DefaultLitePullConsumer 核心参数与实战
RocketMQ 4.6.0 引入的 DefaultLitePullConsumer 是 DefaultMQPullConsumer 的改进版本,提供了更简洁的 API 设计。文章详细介绍了 DefaultLitePullConsumer 的类图结构、核心方法和属性,包括消息订阅/取消、消息拉取、偏移量控制、消费暂停/恢复等功能。相比旧版,新 API 更接近 Kafka 的使用模式,支持自动位点提交和消费队列重平衡。
2026-04-21 09:27:47
210
原创 《RocketMQ实战与进阶》 02 RocketMQ 核心概念扫盲篇
RocketMQ核心概念解析:本文系统梳理了RocketMQ的核心组件和消息模型。部署架构包含NameServer(路由注册中心)、Broker(消息存储服务器)和Client(生产者和消费者);消息订阅采用发布-订阅模式,支持集群和广播两种消费模式;详细介绍了队列负载算法、消费重平衡机制及两种消费模型(并发消费和顺序消费);还讲解了事务消息、定时消息和消息过滤等特性。这些基础概念为后续深入学习RocketMQ奠定了重要基础。
2026-04-16 08:38:42
453
原创 深入理解Sentinel:17 结束语:Sentinel 对应用的性能影响如何?
本文通过源码分析揭示了 Sentinel 的性能优化措施:采用滑动窗口统计指标数据、避免使用 ConcurrentMap 减少锁竞争、限流控制器的毫秒级时间戳优化等。文章详细介绍了 JMH 基准测试工具的使用方法,包括 @Benchmark、@Measurement、@Warmup 等核心注解的配置,并提供了完整的测试代码示例。
2026-04-15 09:13:13
292
原创 深入理解Sentinel:16 Sentinel 集群限流的实现(下)
本文分析了Sentinel集群限流的核心实现机制。通过令牌桶算法实现分布式限流,服务端负责生产令牌,客户端申请令牌。核心接口包括TokenService(定义令牌申请)、ClusterTokenClient(客户端接口)、ClusterTokenServer(服务端接口)和EmbeddedClusterTokenServer(嵌入式服务端)。客户端通过requestToken方法申请令牌,服务端返回TokenResult包含状态码、剩余令牌数和等待时间。
2026-04-15 09:04:32
364
原创 深入理解Sentinel:15 Sentinel 集群限流的实现(上)
摘要 Sentinel 1.4.0引入集群限流功能解决单机限流在流量倾斜时无法精确控制集群整体流量的问题。集群限流包含客户端和服务端模块,基于Netty实现通信。支持两种服务端模式:嵌入模式(与应用同进程)和独立模式(单独部署)。集群限流规则通过FlowRule配置,当clusterMode为true时启用集群限流,需设置ClusterFlowConfig参数。动态配置通过名称空间隔离不同应用的规则,客户端和服务端需同步获取相同规则。
2026-04-15 08:44:44
430
原创 深入理解Sentinel:14 Sentinel 主流框架适配
Sentinel框架适配指南 Sentinel通过适配主流框架简化了资源保护流程。核心步骤包括使用try-catch-finally包装资源,调用ContextUtil和SphU方法进行资源保护,记录异常指标数据等。Sentinel已为Spring MVC、Webflux等框架提供适配器,并支持自定义适配。
2026-04-15 08:43:45
374
原创 深入理解Sentinel:13 Sentinel 动态数据源:规则动态配置
文章摘要: Sentinel通过动态数据源接口实现了规则的动态更新功能。核心接口SentinelProperty通过监听器机制实现配置更新,FlowRuleManager支持注册SentinelProperty来动态加载限流规则。ReadableDataSource接口抽离了数据源的读取功能,支持从不同数据源加载配置并转换为规则类型。这种设计避免了硬编码配置,使规则更新更加灵活,适用于微服务环境下的动态配置管理需求。
2026-04-14 08:36:47
356
原创 深入理解Sentinel:12 自定义 ProcessorSlot 实现开关降级
摘要: 本文介绍了电商项目中开关降级功能的实现方案。通过Spring AOP和Sentinel两种方式,实现在流量高峰或特定场景下快速关闭非核心功能以降低系统压力。第一种方案采用注解+切面的方式,通过Redis存储开关状态,拦截目标方法执行前检查开关状态。第二种方案基于Sentinel的自定义ProcessorSlot机制,通过配置规则实现更灵活的开关控制,支持按资源粒度配置开关范围。两种方案各有特点,前者实现简单但需注解标记,后者配置灵活但实现复杂度较高,可根据项目实际需求选择合适的实现方式。
2026-04-14 08:36:19
413
原创 深入理解Sentinel:11 黑白名单限流与热点参数限流
Sentinel 提供了黑白名单和热点参数两种限流机制。黑白名单通过 AuthoritySlot 实现授权过滤,支持白名单放行或黑名单拦截策略,配置简单高效。热点参数限流则基于扩展模块实现,针对频繁访问的参数进行精准限流,如商品ID限流控制库存流量。两种方式都采用滑动窗口统计指标数据,前者侧重权限控制,后者实现细粒度流量管理,共同构建了 Sentinel 的多维度限流体系。
2026-04-13 08:51:07
380
原创 深入理解Sentinel:10 熔断降级与系统自适应限流
摘要 本文深入分析了熔断降级和系统自适应限流两种服务保护机制。熔断降级作为限流的补充方案,通过Sentinel实现多种策略:响应时间熔断(DEGRADE_GRADE_RT)、异常比例熔断(DEGRADE_GRADE_EXCEPTION_RATIO)和异常数熔断(DEGRADE_GRADE_EXCEPTION_COUNT)。详细解读了熔断规则配置参数及判断流程,指出熔断降级能有效处理QPS未达限流阈值但请求超时的情况。
2026-04-13 08:49:39
712
原创 深入理解Sentinel:09 限流降级与流量效果控制器(下)
摘要: WarmUpController用于解决系统冷启动问题,通过预热机制使流量平缓增长至阈值。冷启动不仅发生在应用重启时,也适用于连接池重建、缓存刷新等场景。该控制器基于Guava的SmoothRateLimiter算法,采用令牌桶模型实现动态限流:初始化时令牌数达最大值(maxToken),随后通过斜率(slope)逐步调整令牌生成速率,在预热期(如10秒)内从低QPS过渡到目标阈值(如200 QPS)。核心参数包括warningToken(稳定阈值)、coldFactor(冷启动系数,默认3)等。
2026-03-30 09:00:29
774
原创 深入理解Sentinel:08 限流降级与流量效果控制器(中)
Sentinel流量控制算法解析 本文详细介绍了Sentinel框架中的三种经典限流算法及其实现机制。计数器算法通过时间窗口统计请求数量实现QPS限流;漏桶算法通过固定速率处理请求实现平滑限流;令牌桶算法则通过动态生成令牌控制请求通过速率。Sentinel通过TrafficShapingController接口实现不同流量控制策略,包括直接拒绝、预热和匀速排队三种方式。
2026-03-27 08:36:21
448
原创 深入理解Sentinel:07 限流降级与流量效果控制器(上)
摘要:Sentinel通过ProcessorSlot、Checker、Rule和RuleManager实现多种降级功能。FlowSlot作为入口调用FlowRuleChecker检查请求,Checker根据资源规则与实时指标对比决定是否限流。Rule接口定义passCheck方法,FlowRule实现限流规则配置。FlowRuleManager负责加载和管理规则配置。整体流程为:ProcessorSlot调用Checker检查规则,达到阈值则拒绝请求,实现限流或熔断。
2026-03-27 08:35:42
505
原创 深入理解Sentinel:06 资源指标数据统计的实现全解析(下)
摘要:StatisticSlot是Sentinel实现资源指标统计的核心组件,与NodeSelectorSlot和ClusterBuilderSlot构成处理流水线。它通过责任链模式动态决定请求处理流程,在entry方法中根据后续处理结果记录线程数、通过/拒绝请求数等指标,exit方法则记录响应时间和成功数。关键设计包括:1) 多级统计节点(DefaultNode/ClusterNode)分层收集数据;2) 秒级和分钟级滑动窗口实现时间维度统计;3) 回调机制支持扩展处理。
2026-03-26 10:41:13
405
原创 深入理解Sentinel:05 资源指标数据统计的实现全解析
本文详细解析了Sentinel框架中资源指标数据统计的实现机制,重点分析了NodeSelectorSlot和ClusterBuilderSlot两个核心组件的工作原理。NodeSelectorSlot负责为资源创建DefaultNode并维护调用树结构,根据不同的调用链路入口(Context.name)为同一资源创建多个DefaultNode实例。ClusterBuilderSlot则为每个资源创建全局唯一的ClusterNode用于聚合统计指标数据,并通过DefaultNode管理ClusterNode。
2026-03-26 09:49:32
516
原创 深入理解Sentinel:04 Sentinel 中的责任链模式与 Sentinel 的整体工作流程
本文介绍了Sentinel中ProcessorSlot的责任链模式实现机制。ProcessorSlot分为两类:资源指标统计类和降级功能类,前者必须排在后者之前以确保数据依赖。文章详细说明了默认的ProcessorSlot执行顺序,并指出降级类ProcessorSlot的顺序可调整。通过AbstractLinkedProcessorSlot的next指针和fireEntry/fireExit方法实现责任链调用,DefaultProcessorSlotChain作为默认实现维护了链表结构。
2026-03-26 08:41:50
453
原创 深入理解Sentinel: 03 Sentinel 的一些概念与核心类介绍
Sentinel核心概念与统计机制解析 摘要:本文详细介绍了Sentinel框架中的核心概念和统计机制。主要内容包括:1) 资源、规则和降级三大核心概念;2) 资源指标统计相关的关键类,如ResourceWrapper(定义资源名称、类型和流量方向)、Node接口(定义统计指标)及其实现类;3) 重点分析了StatisticNode的实现机制,包括秒级和分钟级滑动窗口的配置与用途,以及并发线程数的统计方法。
2026-03-25 15:13:18
889
原创 深入理解Sentinel: 02 为什么需要服务降级以及常见的几种降级方式
本文探讨了服务降级的必要性及其实现方式。在流量突增时,服务降级能有效避免系统崩溃,主要方式包括:1)限流降级 - 通过控制最大并发请求数保护服务,适用于秒杀等场景;2)熔断降级 - 当依赖服务异常时自动切断调用,支持基于错误率/耗时等指标的自动恢复;3)开关降级 - 通过动态配置关闭非核心功能,提升系统核心处理能力。文章详细分析了各种降级策略的技术实现和适用场景,并强调了降级后的优雅处理机制(如空对象模式)。这些方法共同构建了分布式系统的弹性防护体系。
2026-03-25 10:15:46
434
原创 深入理解Sentinel: 01 一次服务雪崩问题排查经历
本文分享了一次服务雪崩事故的排查经历。事故起因是广告系统并发量突增导致Redis读取超时,进而引发RPC调用超时和服务线程池耗尽。分析发现根本原因是缓存value过大导致Jedis读取耗时过长,加上Dubbo重试机制使并发量翻倍。解决方案包括:优化缓存数据结构改用hash存储、升级Redis集群、引入Sentinel实现熔断降级和限流保护。通过这次事故,作者深刻认识到微服务系统中服务降级和自我保护机制的重要性,为后续Sentinel原理分析专栏奠定了基础。
2026-03-25 08:30:23
537
原创 《ShardingSphere解读》20 归并引擎:如何理解数据归并的类型以及简单归并策略的实现过程?
摘要: 本文介绍了ShardingSphere中的归并引擎机制,主要分为概念解析和实现分析两部分。首先阐述了分库分表环境下数据归并的必要性,将归并按功能分为遍历、排序、分组、分页和聚合5种类型,按实现结构分为流式、内存和装饰者3种方案。然后通过代码分析展示了MergeEngine接口及其实现类(DQLMergeEngine、DALMergeEngine等)的工作机制,重点说明了DQLMergeEngine如何根据查询结果数量、分组条件、排序条件等选择不同的归并策略。
2026-03-24 10:01:11
520
原创 《ShardingSphere解读》19 执行引擎:如何把握 ShardingSphere 中的 Executor 执行模型?(下)
本文介绍了ShardingSphere中的ShardingStatement类,它是StatementExecutor的使用者。ShardingStatement继承自AbstractStatementAdapter,采用适配器模式包装自身实现。核心方法executeQuery的执行流程包括:清理变量、路由分片、初始化StatementExecutor、创建归并引擎获取结果。其中路由引擎通过SimpleQueryShardingEngine完成分片路由,获取SQLRouteResult对象。
2026-03-24 08:48:16
446
原创 《ShardingSphere解读》18 执行引擎:如何把握 ShardingSphere 中的 Executor 执行模型?(上)
本文介绍了ShardingSphere执行引擎的上层设计核心类AbstractStatementExecutor及其实现类。AbstractStatementExecutor作为SQLExecuteTemplate的直接使用者,封装了JDBC规范相关对象和执行逻辑,包含数据库类型、结果集参数、连接对象等变量。其核心方法executeCallback通过SQLExecuteTemplate执行回调,并刷新元数据。
2026-03-23 10:13:57
478
原创 《ShardingSphere解读》17 执行引擎:分片环境下 SQL 执行的整体流程应该如何进行抽象?
ShardingSphere执行引擎的核心组件包括ShardingExecuteEngine、SQLExecuteTemplate等,负责SQL在分片环境下的执行。ShardingExecuteEngine作为底层引擎,通过ShardingExecutorService和ListeningExecutorService实现多线程执行能力,支持串行(serialExecute)和并行(parallelExecute)两种执行模式。
2026-03-23 09:33:28
532
原创 《ShardingSphere解读》16 改写引擎:如何理解装饰器模式下的 SQL 改写实现机制?
摘要: 本文探讨了ShardingSphere中SQL改写机制的实现过程,重点分析了分布式主键场景下的SQL改写。通过BaseShardingEngine的rewriteAndConvert方法展示了SQL改写流程,涉及SQLRewriteContext、SQLToken等核心组件。文中以自增主键为例,说明如何将逻辑SQL转换为真实数据库可执行的SQL,并介绍了GeneratedKeyInsertColumnToken等关键类的实现原理。
2026-03-22 13:19:33
376
原创 《ShardingSphere解读》15 路由引擎:如何在路由过程中集成多种路由策略和路由算法?
本文详细介绍了ShardingSphere路由引擎中的分片策略ShardingStrategy及其实现。ShardingStrategy包含分片列获取和执行分片两个核心方法,并与分片算法ShardingAlgorithm协同工作。
2026-03-22 13:10:52
325
原创 《ShardingSphere解读》14 路由引擎:如何实现数据访问的分片路由和广播路由?
摘要: 本文详细分析了ShardingSphere中的标准路由机制,重点介绍了StandardRoutingEngine的实现原理。标准路由适用于不含关联查询或仅含绑定表关联查询的SQL场景。文章首先阐述了RoutingEngineFactory如何根据上下文创建StandardRoutingEngine,特别讲解了绑定表关系的判定逻辑和配置方式。随后深入剖析了StandardRoutingEngine的核心运行机制,包括三种路由方式:基于Hint的路由、基于分片条件的路由以及混合路由。
2026-03-22 12:33:48
367
原创 《ShardingSphere解读》13 路由引擎:如何理解分片路由核心类 ShardingRouter 的运作机制?
摘要:本文深入解析ShardingSphere路由引擎的架构设计与实现原理。首先介绍路由引擎作为分片流程第二步的核心作用,基于SQL解析结果生成路由策略。通过分析源码包结构,揭示其分层设计:底层sharding-core-route包含核心路由类ShardingRouter,上层sharding-core-entry提供应用层入口。
2026-03-22 12:28:32
371
原创 《ShardingSphere解读》12 解析引擎:SQL 解析流程应该包括哪些核心阶段?(下)
摘要:本文介绍了ShardingSphere SQL解析引擎的第二阶段——SQL片段提取过程。通过ParseRuleRegistry类加载SQLStatementRule、ExtractorRule和FillerRule三种规则定义,详细阐述了从抽象语法树中提取SQLSegment的机制。文章以MySQL为例,展示了如何通过XML配置文件定义SQLSegmentExtractor,并以TableExtractor为例说明表信息提取的具体实现过程,包括表名、别名和所有者信息的获取。
2026-03-22 12:20:49
588
原创 《ShardingSphere解读》11 解析引擎:SQL 解析流程应该包括哪些核心阶段?(上)
摘要:ShardingSphere的分片引擎核心是SQL解析引擎,SQL解析过程贯穿整个中间件。入口为DataSource,通过ShardingDataSourceFactory获取数据源后,SQLParseEngine作为解析引擎入口,采用外观模式屏蔽底层复杂实现。SQLParseEngineFactory基于缓存机制创建解析引擎实例,SQLParseKernel作为内核类管理抽象语法树和SQL语句对象。解析过程通过Hook机制监控,最终生成SQLStatement对象。
2026-03-20 17:27:48
544
原创 《ShardingSphere解读》10 分布式主键:ShardingSphere 中有哪些分布式主键实现方式?
ShardingSphere 提供了分布式主键生成机制,支持分片场景下的全局唯一主键需求。框架通过 GeneratedKey 抽象实现自动生成键功能,开发方式与 MyBatis 类似。核心接口 ShardingKeyGenerator 基于 SPI 机制扩展,内置雪花算法(UUIDShardingKeyGenerator)和 UUID 算法(SnowflakeShardingKeyGenerator)两种实现。通过 TableRule 配置可指定主键生成策略,利用微内核模式动态加载不同实现类。
2026-03-20 08:41:28
428
原创 《ShardingSphere解读》08 数据脱敏:如何确保敏感数据的安全访问?
摘要 数据脱敏是通过规则转换敏感信息以实现隐私保护的技术。ShardingSphere提供了完整的数据脱敏解决方案,其核心抽象包括: 数据存储:支持明文列(plainColumn)和密文列(cipherColumn)双存储模式,通过逻辑列(logicColumn)对应用透明访问 加解密机制:基于ShardingEncryptor接口封装加解密算法,内置AES和MD5实现,支持SPI扩展 业务集成:自动解析和改写SQL,透明处理加解密过程,开发者无需关注实现细节
2026-03-19 09:12:34
465
原创 《ShardingSphere解读》09 微内核架构:ShardingSphere 如何实现系统的扩展性?
本文介绍了微内核架构的基本原理及其在ShardingSphere中的应用。微内核架构由内核系统和插件组成,通过SPI(服务提供接口)机制实现系统扩展性,支持插拔式组件替换。文章通过JDK的SPI实现示例,展示了如何定义服务接口、实现类及配置文件。ShardingSphere基于此机制,在shardingsphere-spi工程中封装了TypeBasedSPI接口和工具类,支持动态加载SPI服务实例。这种架构设计使系统具备高度灵活性,业务变更只需替换插件而无需修改核心代码。
2026-03-19 09:11:53
451
原创 《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
摘要:本文介绍了ShardingSphere如何通过读写分离机制优化高并发场景下的数据库访问。
2026-03-18 11:50:07
796
原创 《ShardingSphere解读》06 数据分片(下)
本文介绍了数据库分库分表改造的具体实现方法。首先讲解了分表操作的配置过程,包括定义数据源、设置分表策略和绑定表规则,通过record_id实现health_record表的水平拆分。然后展示了如何将分库和分表结合使用,创建多个数据源(ds3/ds4/ds5)并基于user_id进行数据路由(ds$->{user_id % 3 + 3})。文中提供了完整的配置示例和测试结果截图,验证了数据正确分布在不同的分表和分库中。该方案利用ShardingSphere的配置体系简化了复杂的分布式数据库管理。
2026-03-18 10:31:07
521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅