Changfan.Z

周昌凡

Java 后端开发 · AI Agent 开发 · Vibe Coding 实践者

6 年 Java 后端开发,专注分布式与高性能架构;具备 AI Agent 工程落地能力(LangGraph + RAG + SSE 流式、 MCP 协议、FastAPI 全栈)。近一年深度实践 AI 辅助编程,日常功能代码(含简单业务逻辑)交由 AI 生成、由本 人负责代码评审与架构把控,自身评估编码产出效率提升数倍。

核心技术栈

能力标签

高性能设计AI Agent微服务架构RAGMCP性能调优技术文档
01 / 技术栈

医疗检测业务平台

邮寄检测全链路开发 · 自研分布式任务调度框架 · AI Agent 报告解读 · Redis 基础设施层

核心技术栈

支撑医疗检测业务平台的技术选型

点击标签查看该技术解决的问题与落地方案
业务全景

端到端业务流程图谱

向下滚动,镜头跟随业务流程逐列聚焦点亮 · 结尾拉远纵览全程 · 点击节点看详情

技术难点 1 / 3
难点 1
自研分布式任务调度框架:注解注册 + Redis 调度
业务中存在大量复杂调度需求:第三方报告每 1 分钟轮询、问诊接诊后 10 分钟自动完成、商品定价在指定时间生效、服务重启后需恢复未完成的任务。@Scheduled 固定周期无法表达延迟调度/一次性任务/持久化恢复等模型;用集中路由表(枚举/配置中心)又会把任务与注册表耦合,新增/修改任务要改两处。
解决方案
@TaskExecutor 注解(兼 @Component 注册 Spring Bean)声明式注册,impl 类上注解 = 录入注册表,新增任务只需建类加注解。启动时 ApplicationListener<ContextRefreshedEvent> 扫描 @TaskExecutor → 构建 TaskRegistry(ConcurrentHashMap)类型安全路由,无中央枚举。调度骨架 BaseTask 以 Redis ZSET 承载三类集合:task:due(待执行,score=执行时间戳)、task:processing(执行中,score=抢占时间戳)、task:dead(死信)。唯一 @Scheduled 每秒获取到期任务,通过 CLAIM Lua 脚本一步完成 ZREM due+ZADD processing,原子抢占执行权——多节点并发仅一个返回 1 抢到,其余跳过,天然保证集群恰好执行一次。任务在异步线程执行,结束(成功/失败)即从 processing 移除;失败按次数退避重试(min(retryCount×60s,30min))。看门狗每 1min 扫描 processing 中 score 超 10min 的残留任务(节点崩溃未清理),原子回收后重新入队或转死信(超 MAX_RETRY=5)。init 阶段用单 leader 锁(task:init-lock,NODE_ID 防互删)仅 leader 执行 reseed,期间按 (type,key) 去重,避免滚动发布后重复 enqueue。三种调度模型:循环(execute 返回新时间重新入队)、延迟(返回 null 一次消费)、恢复(init 加载 DB 未完成任务计算剩余时间 addTask)。异常残留 key 形成隐式重试。
关键代码
// @TaskExecutor 注解声明式注册
@TaskExecutor("thirdPostReportTask")
  ...
展开完整代码 →
14 种任务,1s 精度
项目成果
关键性能指标
0
自研任务类型
0
日志采集类型
0
Redis 应用模式
0+
外部系统集成

滚动到顶部可切换其他项目

动态

加载中...

联系

想聊聊?

微信适合快速沟通,邮箱适合正式邀约

@邮箱ohofun@outlook.com