Orleans 流系统握手机制流程图

主流程图

复制代码
开始
  ↓
检查是否有队列缓存
  ↓ (有缓存)
询问消费者序列令牌
  ↓
消费者返回令牌?
  ↓ (是)
根据令牌创建游标
  ↓
游标.MoveNext() (移动到下一个消息)
  ↓
保存 LastToken
  ↓
握手成功
  ↓
开始消息投递
  ↓
结束

  ↓ (否)
使用缓存令牌创建游标
  ↓
保存 LastToken = null
  ↓
握手成功
  ↓
开始消息投递
  ↓
结束

异常处理流程图

复制代码
询问消费者令牌时发生异常
  ↓
检查代理是否正在关闭
  ↓ (是)
返回 false (停止处理)
  ↓
结束

  ↓ (否)
调用错误协议处理异常
  ↓
订阅被标记为故障?
  ↓ (是)
返回 false (停止处理该消费者)
  ↓
结束

  ↓ (否)
尝试使用缓存令牌创建游标
  ↓
成功?
  ↓ (是)
握手完成
  ↓
结束

  ↓ (否)
使用 null 令牌创建游标 (从头开始)
  ↓
握手完成
  ↓
结束

重试机制流程图

复制代码
开始重试
  ↓
调用消费者.GetSequenceToken()
  ↓
成功?
  ↓ (是)
返回结果
  ↓
结束

  ↓ (否)
检查重试条件
  ↓
满足重试条件?
  ↓ (是)
等待退避时间
  ↓
重试次数 < 最大重试次数?
  ↓ (是)
重试
  ↓
回到"调用消费者.GetSequenceToken()"

  ↓ (否)
抛出异常
  ↓
结束

  ↓ (否)
抛出异常
  ↓
结束

消息投递流程图

复制代码
握手完成
  ↓
获取当前消息
  ↓
投递给消费者
  ↓
消费者处理成功?
  ↓ (是)
移动到下一个消息
  ↓
还有更多消息?
  ↓ (是)
继续投递
  ↓
回到"获取当前消息"

  ↓ (否)
等待新消息或定期握手
  ↓
结束

  ↓ (否)
处理消费者错误
  ↓
标记订阅为故障?
  ↓ (是)
停止投递
  ↓
结束

  ↓ (否)
重试投递
  ↓
回到"投递给消费者"

关键决策点说明

1. 为什么需要 MoveNext()?

复制代码
消费者说:"我处理到消息 #100"
  ↓
代理理解:"消息 #100 已经处理过了"
  ↓
游标指向消息 #100
  ↓
MoveNext() 移动到消息 #101
  ↓
从消息 #101 开始投递

2. 重试条件判断

复制代码
发生异常
  ↓
是 ClientNotAvailableException?
  ↓ (是)
不重试 (客户端不可用,重试无意义)
  ↓
结束

  ↓ (否)
代理正在关闭?
  ↓ (是)
不重试 (系统正在关闭)
  ↓
结束

  ↓ (否)
重试 (网络问题等临时性错误)
  ↓
继续

3. 备用方案选择

复制代码
握手失败
  ↓
尝试使用缓存令牌
  ↓
成功?
  ↓ (是)
使用缓存位置
  ↓
结束

  ↓ (否)
使用 null 令牌 (从头开始)
  ↓
结束

设计优势总结

  1. 可靠性:多重容错机制确保消息不丢失
  2. 一致性:通过令牌机制保证消息顺序
  3. 性能:按需投递,避免重复处理
  4. 可扩展性:支持多消费者、多流并发
  5. 可观测性:完善的日志和监控

这个握手机制是 Orleans 流系统可靠性的核心保障,通过精心设计的流程和异常处理,确保了分布式环境下的消息可靠投递。

相关推荐
学IT的周星星3 天前
LangGraph:用「流程图」的方式编排 Agent
数据库·人工智能·大模型·llm·流程图·agent
钛生智能3 天前
OA 流程定制全参数详解(十):画流程图与美化——从“能跑”到“好看”的最后一公里
流程图·办公自动化·oa·协同办公·oa办公系统
ixiaoyang87 天前
ioDraw v3.7.0 发布:AI 助手完成会话化改造,图表生成一次升级
ai·流程图·甘特图·思维导图·绘图软件·1024程序员节·mermaid
神色自若7 天前
Net10 Avalonia UI漂亮美观的流程图设计器重磅开源了
流程图
Keith Guo7 天前
ESP32-S31 分区表的访问流程图
流程图·esp32
学术 学术 Fun14 天前
AI 流程图图片怎样变成可编辑文件?先修文字,再核对逻辑
流程图
学术 学术 Fun15 天前
截图转可编辑 PPT:旧流程图改步骤,不再靠白色方块遮字
powerpoint·流程图
tedcloud12316 天前
Docker Compose 部署 Immich:手机照片自动备份与常见故障排查
运维·前端·docker·容器·智能手机·开源·流程图
weixin_4166600718 天前
AI 生成的 Mermaid 流程图和 LaTeX 公式,怎么一起导出到 Word?
人工智能·word·流程图·豆包
一只鹿鹿鹿18 天前
政务外网整体设计方案(PPT)
大数据·数据库·web安全·系统安全·流程图·政务