自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(255)
  • 收藏
  • 关注

原创 无限深度章节树如何一遍建成?路径编码+单调栈

本文提出了一种高效的章节树构建方法,采用路径编码和单调栈配合,实现单遍遍历建树。关键设计包括: 路径编码:每个节点存储形如"/1/2/3"的路径,既包含层级信息,又支持排序和子树查询 单调栈:动态维护当前章节的祖先链,处理任意层级的章节跳转 无冗余存储:层级深度通过路径推导,避免递归调用和字段冗余 该方法具有O(1)查询效率,支持无限深度章节结构,适用于文档解析等需要构建层次化结构的场景。路径编码提供自然排序,单调栈确保建树过程的高效性和正确性。

2026-07-13 16:16:09 234

原创 深入解析 Docling Java SDK 集成:Source 与 Target 的实战应用

Docling Java SDK 提供两种集成方式:HTTP原生请求和Java SDK(推荐)。SDK采用Source-Target设计模式,将文档处理分为输入、处理和输出三个独立维度。Source支持四种数据供给方式,其中Base64手动编码适合小文件但存在33%数据膨胀问题。开发者需注意官方文档未明确的性能边界和概念陷阱,如InBodyTarget实际控制响应返回方式而非文件传输。大文件处理应优先使用UrlSource避免内存压力,而Base64方案仅适用于<10MB文件场景。

2026-07-12 11:12:33 264

原创 提示词优化启示:为什么“按顺序输出“比“关键度评分“更有效

本文分析了提示词优化中数组元素排序的重要性,并提出避免让LLM进行数值评分的建议。核心观点包括: 问题背景:在RAG系统中,LLM输出的数组元素(如关键词)顺序不稳定会影响检索质量。示例显示相同查询可能产生随机排序的关键词列表。 解决方案对比: 方案A(推荐):通过数组顺序隐式表达重要性,符合人类认知习惯,Token消耗少(约23 tokens),且10次测试排序完全一致。 方案B(不推荐):要求LLM给出显式评分,存在数值幻觉问题,Token消耗高(约74 tokens,是方案A的3.2倍),且10次测试

2026-06-30 17:46:55 309

原创 RAG 查询分析:从 LLM 到毫秒级本地算法的演进之路

本文总结了RAG系统中查询分析模块从LLM方案演进到本地算法的优化历程。最初采用LLM实现查询分析虽具备语义理解优势,但存在三大问题:1)延迟累积效应导致响应时间达5-6秒;2)高频调用带来显著成本(月均3000元);3)依赖外部服务影响稳定性。通过分析发现,80%的查询分析场景可通过规则解决。 作者团队设计了三代本地算法:第一代顺序匹配方案(5-10ms/70%准确率)存在优先级固定、短词误判等问题;第二代基于词频统计(3-5ms/85%准确率)优化了匹配效率;最终方案结合语义特征与机器学习(1-3ms/

2026-06-28 18:18:03 394

原创 Agent开发之为什么有了LangChain4j框架,我们却不能直接使用它?——桥接层设计详解

文章摘要 LangChain4j框架与自主开发的会话系统各有优势,需要通过桥接层实现互补。LangChain4j在结构化输出、RAG框架和工具调用方面表现优异,能自动处理JSON转换、参数解析等复杂逻辑。而自主系统则在会话管理、智能上下文压缩和动态提供商配置等企业级功能上更具优势。实际案例显示,LangChain4j的结构化输出功能可显著简化开发流程,避免手动处理JSON Schema和解析等繁琐工作。最佳实践是保留自主系统的核心能力,同时通过适配层集成LangChain4j的强项功能,实现技术优势互补。

2026-06-27 00:07:59 268

原创 企业级 RAG 系统的文件标签管理:三层架构与层级优化实战

本文分享了企业级RAG系统中标签管理的三层架构设计经验。最初采用单一标签表方案导致三个主要问题:业务标签变更影响向量索引、权限泄露风险以及标签数量失控。解决方案采用分层架构:第一层业务标签层(MySQL/Redis)负责可变更的业务标签管理;第二层检索标签层(向量库payload)处理稳定的路由过滤;第三层推导标签层实现动态语义扩展。文章重点介绍了层级标签的优化方案Closure Table,通过预计算路径关系解决递归查询性能瓶颈,实测查询性能提升50倍。该方案已在百万级文档的生产环境稳定运行一年。

2026-06-26 12:20:31 361

原创 漫谈Agent系统中的长事务处理:从踩坑到方案演进

本文分享了在AI Agent系统中处理长事务时遇到的典型问题及解决方案。作者通过实际案例展示了"大事务"设计的陷阱——将耗时操作(如文档解析、AI模型调用)包含在数据库事务中,导致数据库连接池耗尽、系统响应变慢等问题。重点分析了AI调用在事务中的隐蔽性危害(通常耗时5-30秒),并提出了优化方案:将耗时操作放在事务外执行,仅将数据库操作放在短事务内。对于AI调用失败的情况,建议采用记录失败状态或分步保存数据的策略。这些实践经验对于构建高性能、可靠的AI系统具有重要参考价值。

2026-06-25 09:54:52 316

原创 为什么有了 RocketMQ 事务消息,我们还要自研本地消息表方案?

选择 RocketMQ 事务消息选择本地消息表项目从零开始,没有历史包袱已有 RabbitMQ 等其他 MQ团队熟悉 RocketMQ 生态需要精细控制重试策略追求实时性需要高度可观测性希望减少代码量需要跨 MQ 通用方案。

2026-06-19 09:43:32 169

原创 如何让 AI 优雅的批量处理文档摘要?详细实战流程图带你搞懂批量文档处理(带崩溃恢复详细过程)

这篇文章探讨了批量处理PDF文档时程序崩溃后的恢复方案。当AI处理100个文档中途崩溃时,系统采用三层架构(任务→文档→分块)确保断点续传。核心设计包括:分块表存储每个片段的摘要状态,数据库记录处理进度,以及并发控制机制。正常流程中,小文档直接处理,大文档分块处理并实时保存状态;崩溃恢复时,通过查询已有分块记录继续未完成的工作。这种方案既保证了处理效率,又实现了可靠的崩溃恢复功能。

2026-05-03 12:31:46 418

原创 RAG系统是怎么运转的?一篇文章带你详细了解从零到一设计RAG系统

RAG(检索增强生成)系统通过多阶段流水线处理用户查询:首先分析查询意图(QueryAnalyzerStage),然后规划检索策略(QueryPlannerStage),执行文档检索(RetrieverStage),合并结果(ResultFusionStage),最后优化排序(RerankerStage)。这种模块化设计实现了职责分离,便于独立调优。系统采用规则+AI双层分析机制平衡准确性与效率,并根据问题类型自动选择最优检索策略。文章通过"什么是向量检索"的实例,展示了定义类问题采用纯

2026-04-30 21:05:29 446

原创 Spring 事务自调用会失效吗?用 TransactionTemplate 包裹时到底算不算有事务

本文澄清了Spring中关于@Transactional自调用失效的常见误解。关键点在于: 类内自调用确实会导致方法上的@Transactional注解失效,但不会影响已存在的事务上下文 当外层使用TransactionTemplate显式开启事务时,内部自调用方法仍会参与该事务 真正失效的是方法自身声明的事务属性(如传播行为),而非整个事务 文中通过文件上传案例说明,即使createFile()方法被自调用,其数据库操作仍会加入外层事务 最后指出了需要警惕的5种真正会导致事务问题的情况,并建议将事务控制明

2026-03-24 17:41:51 423

原创 SQLite 锁机制深度解析:应用层需要自己加锁吗?Java @Transactional 在 SQLite 中还有效吗?

SQLite锁机制解析:嵌入式数据库的并发控制策略 SQLite采用独特的文件级锁机制实现并发控制,与客户端-服务器架构数据库有本质区别。其核心是五种锁状态(UNLOCKED→SHARED→RESERVED→PENDING→EXCLUSIVE)的演进过程,实现"并发读、串行写"的模型。WAL模式可显著提升读写并发性能,通过分离读写操作到不同文件。开发中应避免手动加锁,优先利用UNIQUE约束和ON CONFLICT处理冲突。在Java应用中,@Transactional仍有效但效果不同,

2026-03-06 11:43:47 446

原创 检查没毛病,为啥还是出事?TOCTOU 并发问题一次讲清

TOCTOU并发问题指在检查(Check)和使用(Use)之间存在时间差,导致校验通过后数据状态被并发修改的问题。以创建群聊为例,检查用户状态后到插入成员表前,用户可能被禁用。解决方案有三种:1)事务+FOR UPDATE锁住用户行实现强一致;2)写入点校验,在INSERT语句中加入条件判断;3)后置治理,通过MQ事件实现最终一致。冻结期策略可大幅减少竞态。工程中通常组合使用写入点校验和后置治理,仅在关键链路使用强一致锁。TOCTOU问题的本质在于检查和使用的时间差,需要根据业务场景选择合适的并发控制。

2026-02-09 20:30:00 1102

原创 微服务架构全景深度解析:多年架构实践中的光与影

说到微服务,几乎每一个开发者、架构师都听说过,但真正把它落地的少,把它落地得好的更少。写代码容易,做“服务治理”难;本地跑得通容易,上生产跑得稳难;拆成服务容易,拆完还能高效团队协作更难。虽然如今云原生大行其道,但是技术的广泛应用总是缓慢的,很多项目仍在使用单体架构,今天我就把这么多年程序开发中如今不在那么“热门”的微服务架构掰开讲透。数据怎么分、接口怎么管、故障怎么隔离、发布怎么不炸、问题怎么定位。这一系列问题使得真正把微服务完美落地变的困难重重。微服务不是趋势,而是工具。

2025-12-28 11:58:15 947 1

原创 用 RESTful API + CDN 把数据“像静态资源一样”高速分发:原理、方案与落地细节

本文系统介绍了如何利用RESTful API结合CDN实现数据的静态化高速分发方案。通过将API响应视为可缓存的静态资源,利用CDN实现全国/全球节点的就近分发,显著降低延迟和回源压力。方案特别适用于读多写少、变化不频繁的数据场景。文章详细阐述了CDN工作机制、路径设计、缓存规则配置、两种刷新策略(主动刷新与闪电缓存),以及源站HTTP缓存头的配合设置。同时提供了内网环境下的Nginx反向代理替代方案,并给出端到端流程图、适用场景判断及工程化最佳实践清单。

2025-11-01 20:03:07 1035

原创 分布式任务调度的优先级设计:用消息队列做“优先级队列”,一次到位

本文提出了一种基于消息队列的分布式任务调度优先级设计方案。通过利用RabbitMQ、RocketMQ等消息队列内置的优先级功能,实现高优先级任务优先调度、同级任务公平FIFO处理。方案采用单一业务交换机和启用优先级的队列,通过设置消息优先级属性(x-max-priority)实现任务分级。在消费端通过手动ACK/NACK机制、预取控制(prefetch=1)和幂等处理(taskId去重)确保消息可靠消费,同时支持消费者动态扩容。文章还指出优先级只在队列积压时生效的特点,并建议设置合理优先级档位

2025-11-01 20:01:37 1200

原创 四大主流数据库的数据变更感知(CDC)实战指南:MySQL、PostgreSQL、MongoDB、Redis

本文系统介绍了分布式架构中四种数据库(MySQL、PostgreSQL、Redis、MongoDB)的数据变更感知(CDC)实现方案。MySQL基于Binlog的RBR模式,PostgreSQL通过WAL逻辑复制槽,MongoDB使用官方Change Streams,Redis则依赖有限的Keyspace通知功能。文章详细对比了各方案优缺点,并提出了通用工程化实践,包括全量+增量同步、断点续传、事件幂等处理等。建议将权威数据源CDC与消息总线结合构建平台化方案,同时指出Redis仅适合作为辅助缓存联动。

2025-11-01 19:59:21 1338

原创 Redis布隆过滤器在Springboot中的两种实现方式(含具体工具类)

布隆过滤器是一种高效的空间优化数据结构,适用于高并发场景下的去重判断(如幂等校验、反爬限流等)。本文介绍了两种实现方案: Redisson封装方案:通过RBloomFilter提供开箱即用的API,适合快速集成,支持动态初始化,但需注意集群拓扑和键管理。 Redis位图自实现方案:基于SETBIT/GETBIT和MurmurHash,灵活可控且跨语言兼容,但需自行维护哈希参数和位图扩容。 两种方案均需关注误判率、内存开销及工程化问题(如分桶策略、监控和参数一致性)。

2025-09-21 18:01:14 1388

原创 Spring Boot 2.7+/3.x 全新自动装配机制实战:从 `spring.factories` 到 `AutoConfiguration.imports`

本文介绍了Spring Boot 2.7及3.x后新的自动装配方式,通过自研HTTP客户端工具RestTools的完整场景演示。主要内容包括:新旧方案对比(从spring.factories到AutoConfiguration.imports文件),使用者"即插即用"的三步操作,Starter核心实现(业务类+自动装配类+资源文件),条件装配机制与可观测性,模块化打包建议,以及验证方法和常见问题。新方案具有启动更快、顺序明确、AOT友好等优势,文章提供了从开发到落地的完整指导清单。

2025-09-21 08:56:35 1214

原创 Spring Cloud Alibaba 还是 K8s?选型与落地指南

Kubernetes(K8s)作为微服务基座正成为主流趋势,相比Spring Cloud Alibaba(SCA),K8s具备更稳定的生态、更丰富的功能覆盖(如服务发现、弹性伸缩、灰度发布等)和更低的供应商绑定风险。SCA部分组件(如Sentinel)仍可保留,但通用能力应下沉到K8s平台层以提升标准化。迁移路径建议从容器化、基础观测和灰度发布入手,逐步引入HPA、Service Mesh等能力,同时需平衡学习曲线和资源成本。核心原则:优先利用K8s原生能力,避免重复建设中台组件。

2025-09-21 08:56:01 1355

原创 主流微服务六大架构设计模式:场景、优缺点、取舍与落地

本文系统梳理了六种主流微服务架构设计模式:聚合器、代理、链式调用、并行调用、路由分支和异步消息。针对每种模式,详细解析了其设计思路、适用场景、优劣势及落地要点,并提供了选型速记表。文章强调模式组合应用的重要性,指出需根据一致性、延迟、可用性等核心需求进行场景化选择,同时配套幂等、降级、观测等治理措施。最后总结了常见反模式,提醒避免架构设计中的典型陷阱,帮助开发者在微服务实践中做出合理决策。

2025-09-21 08:54:57 1302

原创 中心化 vs 去中心化:如何为你的产品做出正确架构选择

中心化与去中心化架构各具特点,需根据业务场景权衡选择。中心化架构(如MySQL主从)心智负担低、易治理,但存在单点风险;去中心化架构(如Redis Cluster)扩展性强、吞吐高,但治理复杂。ShardingSphere展示了两种思路的实践:Proxy作为中心化门面简化接入,JDBC以去中心化嵌入提升性能。决策时需考虑流量规模、数据模型、团队能力等因素,通常业务平面趋向去中心化,控制平面保持适度中心化。合理组合两种架构,配合治理工具和演练机制,才能构建可持续的系统。

2025-09-21 08:54:04 946

原创 “门面化”不是玄学:从 SLF4J 到网关的工程化实践与取舍

门面模式(Facade)通过统一接口屏蔽内部实现差异,核心价值在于解耦调用方与实现方,典型应用包括日志门面(SLF4J)、数据访问门面(JPA)、分布式锁门面(Lock4j)等。其优势体现在可替换性、统一治理、生态标准化,但也需权衡设计成本、灵活性损失与性能开销。设计时需关注领域模型抽象、SPI扩展机制、性能旁路方案,并平衡通用性与后端特性。适用场景为多实现频繁演进或需统一治理的模块,而强依赖特定功能或极致性能的场景需谨慎使用。

2025-09-21 08:53:28 668

原创 用 Top-K 把“海量重复数据统计”做轻做准:从 ZSET 到 Redis Stack 的工程化实践

本文系统介绍了Top-K概率数据结构及其在Redis Stack中的实现,用于高效解决海量数据下的热点统计问题。相比精确计数的ZSET,Top-K通过牺牲少量精度,以更低的内存和计算成本,在十亿级数据中快速识别高频元素。文章详细解析了Redis Stack中TOPK模块的使用方法,包括参数调优(K、width、depth、decay)及工程落地建议,强调在合理配置下可实现接近精确结果。典型应用场景包括DDoS防护、社交热点追踪等,并提供了与ZSET混合架构的最佳实践,帮助开发者在准确性与资源效率间取得平衡。

2025-09-20 08:58:19 1224

原创 架构稳定性八项军规:从“五个九”到落地细节

本文总结了八条提升系统稳定性的实践建议:1)通过入口代理、消息队列和读写分离实现充分解耦;2)采用资源隔离、限流熔断等机制防止级联故障;3)设置功能开关和数据兜底实现可控降级;4)部署多副本多可用区架构确保高可用;5)运用幂等设计、事务补偿保障数据可靠性;6)建立完善的指标-日志-追踪观测体系;7)采用灰度发布、兼容变更等安全发布策略;8)通过全链路压测和混沌工程验证系统韧性。文章强调稳定性需要从架构设计到运维流程形成体系化保障,并针对不同业务场景提供一致性/可用性取舍指导。

2025-09-20 08:57:39 1238

原创 用 OpenAPI 打造“接口即契约”:让 RESTful API 与代码、文档始终一致

本文系统阐述了如何通过OpenAPI(OAS)实现API优先开发,确保接口文档与代码实现长期一致。详细介绍了OpenAPI规范作为单一事实来源的价值,以及Swagger生态和springdoc-openapi在Spring Boot中的应用。重点提出了将接口定义与业务实现分离的工程实践,包括独立契约模块、注解驱动开发、自动生成文档和SDK等方案。同时强调通过工程治理手段(如SonarQube规则、语义化版本)保障一致性,并提供了完整的团队协作流程建议,包括契约设计、文档生成和服务实现三个阶段。

2025-09-20 08:56:56 1531

原创 一文讲透 CAP 与 PACELC:在“有无分区”两种世界里做对架构取舍

分布式系统设计中的一致性与可用性权衡 本文系统阐述了CAP定理的局限及其扩展理论PACELC。CAP定理仅在网络分区发生时要求一致性与可用性二选一,而PACELC进一步提出:无分区时需在一致性(C)与延迟(L)间权衡。文章详细解析了两者的应用场景,并通过Redis、MongoDB等实例说明不同配置如何影响系统行为(如Redis偏向PA/EL,MongoDB可配置为PC/EC)。工程实践中,需以超时阈值判定"有效分区",并根据业务需求选择象限:金融场景倾向PC/EC,社交场景可接受P

2025-09-20 08:56:04 1254

原创 工作流引擎 vs 规则引擎:到底有何不同,如何配合落地

工作流引擎与规则引擎是提升业务效率的两大工具。工作流引擎专注于跨阶段的流程编排与状态管理,适合结构化的业务流程;规则引擎则处理单节点内的复杂业务规则,适合频繁变化的决策场景。两者可相互整合,工作流的分支判定可由规则引擎驱动。关键差异在于工作流关注流转协同,规则引擎专注逻辑计算。工程实践中需重视版本管理、审计追踪和测试体系。选型时应根据业务需求决定:跨阶段协同选工作流,复杂规则判定选规则引擎,二者常配合使用以实现业务流程的稳定性和灵活性。

2025-09-20 08:55:18 1323

原创 Redis 为什么也会“慢”?——12 类常见成因与对症方案(含排查清单)

Redis性能下降的12个常见原因及解决方案:Redis虽然是高性能内存数据库,但在某些情况下也会变慢。本文总结了12类常见原因,分为Redis自身和运行环境两大类别: Redis自身问题: 复杂命令阻塞(如KEYS、大集合操作)- 改用SCAN或预计算 大Key问题 - 拆分、压缩或异步删除 集中过期 - 增加TTL随机性 AOF压力 - 优化刷盘策略 fork/COW开销 - 控制实例内存规模 内存碎片 - 开启主动整理 CPU亲和性 - 合理绑核 运行环境问题。

2025-09-20 08:54:27 839

原创 超大规模长连接的高可用设计:两阶段、三组件与可落地的故障处置

本文提出了一种支持大规模长连接接入的高可用架构方案。该方案采用两阶段流程:初始化阶段通过应用网关获取最优接入点,建链阶段由接入网关建立长连接并维护粘性路由。系统由三大组件构成:应用网关负责服务发现,接入网关管理长连接路由,无状态应用服务处理业务逻辑。方案通过Token机制保证路由粘性,配合注册中心和健康检查实现故障自愈,支持水平扩展和渐进式迁移。文章详细阐述了关键故障场景处理、系统优化要点和运维策略,强调在保证稳定性的同时支持十万级连接规模。该方案适用于物联网设备管理等需要大规模长连接接入的场景。

2025-09-19 12:28:07 887

原创 基于 MyBatis-Plus 3.4.1+ 的动态数据权限落地方案(含完整示例与最佳实践)

数据权限动态拦截实现方案 本文介绍基于MyBatis-Plus实现数据权限的动态拦截方案。核心通过单独的认证授权中心维护数据权限元信息,业务服务获取后存入线程上下文。MyBatis-Plus的数据权限插件会动态拦截SQL,将权限条件自动注入WHERE子句中。关键实现包括:1)使用ThreadLocal存储权限上下文;2)自定义DataPermissionHandler实现条件拼接;3)配置DataPermissionInterceptor拦截器。该方案支持多租户、部门等多维度数据隔离,业务代码无需修改SQL

2025-09-19 12:27:07 1195

原创 别把 Redis 只当“分布式缓存”

Redis除了作为缓存,还能胜任分布式锁、发布订阅、原子脚本、内存计算引擎等多种关键角色。本文详细解析了Redis在生产环境中的非缓存用法,包括分布式锁的实现与Redlock争议、Pub/Sub与Streams的适用场景、Lua脚本的原子操作、ZSET/Bitmap等数据结构的特殊用途,以及全文检索和分布式ID生成等方案。同时提供了工程落地建议和常见踩坑提示,强调需根据业务场景权衡一致性、延迟和成本,优先选择成熟实现方案。

2025-09-19 12:25:37 896

原创 etcd:为何成为分布式协调的“首选底座”

etcd是一款专为分布式系统设计的强一致键值存储,核心定位为分布式协调与配置管理基础设施。它因成为Kubernetes默认存储而广泛流行,具有监听机制、租约、分布式锁等关键能力。etcd采用Raft算法保证CP特性,通过WAL+快照机制实现高效恢复。相比ZooKeeper,etcd数据模型更简单,接口更友好,性能更优。它适用于服务发现、配置管理等协调场景,但不适合海量数据存储。典型实践包括控制奇数节点规模、定期压缩数据、绑定租约防死锁等。选择etcd主要因其功能对口、强一致保证和易用性优势。

2025-09-19 12:25:01 1038

原创 高并发下如何避免“线程爆炸”:从 BIO/NIO/AIO 到实战调优全指南

线程爆炸风险与优化方案 摘要: 线程爆炸是指并发连接增加导致线程数线性增长,引发系统性能问题。其根源在于网络I/O模型选择:BIO采用1:1线程-连接模式,极易引发线程爆炸;NIO通过Selector轮询实现多路复用,以少量线程支撑大量连接;AIO虽效率高但平台兼容性差。生产环境推荐优先使用NIO,配合线程池隔离、连接池优化等策略。关键优化措施包括:显式配置NIO协议、合理设置线程池参数、业务线程与I/O线程分离、设置超时与熔断机制等。排查线程爆炸需关注线程数曲线、线程堆栈和系统资源使用情况。

2025-09-19 12:24:08 1036

原创 用正则把“跨行应用日志”吃干抹净:从思路到可落地代码

本文针对跨行日志解析难题,提出了一套完整的解决方案。日志由固定格式的头部和不定行数的正文组成,难点在于如何准确区分相邻日志条目。文章提供了两种正则匹配方案:推荐使用单次匹配的"路线A",通过严格头部识别和前瞻断言精准捕获;也可采用两阶段解析的"路线B"。重点给出了支持命名分组的Java正则表达式,解决了转义字符处理问题,并附有可直接运行的代码示例。方案通过精确时间戳识别、非贪婪匹配和边界处理,有效避免了常见误匹配问题,实现了日志字段的准确提取和多行正文的完整捕获。

2025-09-19 12:23:25 1083

原创 中小团队可落地的海量数据异地多活架构(低成本、易理解、能上线)

本文提出了一种基于跨可用区分片的数据库架构方案,旨在解决海量数据存储与异地多活的需求。核心思路是将数据按规则分片并部署到不同可用区,通过路由服务实现读写请求的智能分发。方案采用一主多从结构和VIP漂移保障单可用区高可用,结合降级读、熔断写策略实现跨区容灾。同时引入CDC数据总线构建廉价备份库,为极端故障提供兜底能力。该方案通过路由服务封装扩缩容复杂度,使业务无感知,在保证数据一致性的同时实现横向扩展和异地容灾,适用于需要处理百亿级数据的业务场景。

2025-09-18 10:26:28 903

原创 一张图吃透 MapReduce:原理、流程、关键组件与工程实践

MapReduce是一种分布式计算模型,通过Map和Reduce两个阶段实现大规模数据处理。Map阶段将输入数据转换为键值对,Reduce阶段对相同键的值进行聚合。系统自动完成数据分区、排序、跨节点传输等复杂流程。以商品销量统计为例,Map阶段将订单数据转为(商品ID,1)键值对,Reduce阶段对相同商品ID的计数求和。关键组件包括Mapper、Combiner、Partitioner和Reducer等。MapReduce适合离线批处理,但相比Spark等内存计算引擎性能较低。

2025-09-18 10:25:24 1381

原创 分布式“脑裂”全解析:成因、危害与工程级防治方案

脑裂是分布式系统中因网络分区导致同一集群出现多个写入节点的严重问题,会引发数据不一致。主流解决方案包括:1)法定人数+监控节点机制,通过停写保证一致性;2)基于Paxos/Raft的多数派选举算法,确保只有多数派一侧可写入。工程实践中需结合奇数节点部署、单主写入、幂等设计等多重防护措施,并定期演练。关键在于根据业务需求平衡一致性与可用性,通过系统设计、部署拓扑和业务兜底构建立体防护体系。

2025-09-18 10:24:42 1624

原创 Redis Stack 与 RediSearch 全文检索实战:从入门到进阶

Redis全文检索方案RediSearch的技术解析 摘要:RediSearch是Redis生态中的全文检索与二级索引模块,作为Redis Stack套件的一部分,提供内存级高性能检索能力。它支持JSON文档索引,通过FT.CREATE命令建立包含TEXT、NUMERIC、TAG和VECTOR四种字段类型的索引结构,可实现全文搜索、数值区间过滤、标签分类和向量相似度检索等功能。RediSearch与RedisJSON协同工作,直接在Redis上完成数据存储与检索,减少系统复杂度。

2025-09-18 08:05:18 1900

原创 有状态应用 vs 无状态应用:如何选择与如何设计(含三种转型路径)

有状态和无状态应用的核心区别在于数据存储方式。有状态应用将数据保存在本地实例,实现低延迟但难以扩展;无状态应用将数据外置到共享存储或由客户端携带,便于扩展但增加访问成本。有状态适合实时性要求高的场景(如游戏),无状态适合互联网服务等需要弹性伸缩的场景。工程实践提供三种改造方案:状态复制(强一致)、状态后置共享(Redis/DB)和状态前置(客户端携带),需根据延迟需求、安全等级等综合选型。关键要平衡性能、扩展性和一致性,并做好负载均衡、缓存策略等配套设计。

2025-09-18 08:04:27 1146

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除