基础知识(框架篇)

DAG+工作流引擎

  • DAG是有向无环图,一堆任务,按箭头顺序跑,不会绕圈死循环。
  • image

MCP协议

  • MCP(Model Context Protocol)是一个AI 调用外部工具 / 数据的标准化通信协议
  • MCP 最核心:只干 3 件事,告诉 AI 我有什么工具(工具发现),AI 按标准格式调用工具(统一调用),工具返回标准格式结果(统一返回),解决:适配混乱、不安全、不通用

OpenTelemetry

  • 微服务架构下,一个请求会经过很多服务,传统的日志、监控、链路是分开的,排查问题特别慢。OpenTelemetry 是一套统一的可观测性标准,它能统一采集追踪、指标、日志,用一个 TraceID 把它们全部打通,让我们快速定位分布式系统的故障和性能问题,等采集结束之后再分别保存到对应的文件路径中,每一个都有对应的traceID。而传统的方式就只分别保存在对应文件中,三个部分毫不相关,难以查询。
  • Tracing 追踪,比如用户点 “下单”:网关 → 2. 订单服务 → 3. 库存服务 → 4. 支付服务 → 5. 返回成功,每个步骤耗时多久,哪一步报错,哪一步最慢,用一个 TraceID 串起来
  • Metrics 指标 CPU 使用率,接口调用了多少次,错误率多少,接口响应时间 P99/P95,QPS
  • Logs 日志 —— “系统的日记本”,看具体某一次请求发生了啥。
  • 实操就是给 JVM options = JVM 虚拟机参数添加一些配置,加了就能自动监控,不用改代码
-javaagent:opentelemetry-javaagent.jar
-Dotel.service.name=order-service
-Dotel.exporter.otlp.endpoint=http://localhost:4317

Redis分布式锁防止节点被重复执行

  • 在分布式集群里,任务很难做到绝对只分发给一台机器。不管用消息队列还是定时扫描,都可能出现:重复投递、并发争抢、机器挂掉、断点续跑等情况,导致同一个任务被多台机器同时执行。
  • Redis 分布式锁就是用来兜底的:不管任务被分发给多少台机器,最终只有一个能抢到锁并执行,从根本上避免重复执行、重复扣费、数据错乱。
  • 分布式锁是锁住同一个任务的,比如说三个服务器同时要执行一个任务,那么会锁住一个,其余两个直接放弃,但是如果是不同的任务,那就各自跑自己的

为什么需要工作流引擎并且和业务中台分开

  • 业务中台主要关注谁能下单,订单存在哪,怎么查历史订单,通常要速度稍微快一些,避免用户一直等待
  • 工作流引擎更关心流程跑起来,比如外卖必须先下单,然后接单,备餐要等到接单,骑手要等到备餐,如果某个节点超时就直接取消账单
  • 工作流是慢任务,如果和业务逻辑放在一起就到导致一些订单查询都很卡,所以必须分开。
posted @ 2026-03-29 19:01  Huangyien  阅读(2)  评论(0)    收藏  举报