DAG+工作流引擎
- DAG是有向无环图,一堆任务,按箭头顺序跑,不会绕圈死循环。

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 分布式锁就是用来兜底的:不管任务被分发给多少台机器,最终只有一个能抢到锁并执行,从根本上避免重复执行、重复扣费、数据错乱。
- 分布式锁是锁住同一个任务的,比如说三个服务器同时要执行一个任务,那么会锁住一个,其余两个直接放弃,但是如果是不同的任务,那就各自跑自己的
为什么需要工作流引擎并且和业务中台分开
- 业务中台主要关注谁能下单,订单存在哪,怎么查历史订单,通常要速度稍微快一些,避免用户一直等待
- 工作流引擎更关心流程跑起来,比如外卖必须先下单,然后接单,备餐要等到接单,骑手要等到备餐,如果某个节点超时就直接取消账单
- 工作流是慢任务,如果和业务逻辑放在一起就到导致一些订单查询都很卡,所以必须分开。