SuperAPI AI 工具集

orleans

编程与开发

查看项目

更新于 10-16 00:05

技能介绍

用途:该技能用于设计 Microsoft Orleans 系统,主张先明确业务身份、不变量、一致性、查询形态、确认、持久性、重放、扇出与时间要求,再选择保证匹配的最小 Orleans 原语。若问题主要是共享内存计算、有限批处理、关系查询或少量独立实体的全局协调,则应拒绝使用 Orleans。

主要能力:区分 grain(虚拟 actor,稳定身份与行为)、grain 引用(位置透明地址)、激活(临时内存实例)、silo 与集群;说明默认单激活、逐轮执行,适合按身份维护不变量。提供状态选择表:激活字段、IPersistentState<T>、外部数据库/仓储、grain 加数据库/读模型、JournaledGrain、Orleans.Journaling、ITransactionalState<T>、Saga/流程管理器,并强调每个字段只有一个权威来源。通信方面建议对已知所有者直接调用,解耦投递用流,单调用方用响应流,广播/观察者/单向调用仅用于可容忍丢失的通知。时间与后台工作区分 RegisterGrainTimer、Reminder、Durable Job、StatelessWorker、BackgroundService、IHostedService、Orleans 启动任务、silo 生命周期参与者、grain 服务与外部调度器。

使用方式:先检查解决方案、Orleans 版本、托管拓扑、grain 接口、提供程序与测试;识别领域身份与不变量;按表选择状态、通信与时间原语;保持默认非重入调度与放置,除非有实测需求;独立配置提供程序并测试设计所依赖的失败模型。契约上保持 grain 接口粗粒度异步,使用 [GenerateSerializer] 与稳定 [Id(N)],持久类型身份用 [Alias],不重用已删除字段 ID,显式写状态并传播存储失败。

限制:Orleans 不使外部副作用事务化,不把任意数据变成可查询数据库,默认不提供恰好一次执行。取消是协作式的,超时不能证明外部效果是否提交,重试需要幂等。内存集群、存储、提醒、流、Durable Job 与 journaling 仅适合开发/测试,除非明确接受丢失。Orleans 10.3.1 中 Microsoft.Orleans.DurableJobs* 与 Microsoft.Orleans.Journaling* 为 10.3.1-alpha.1,属实验性。10.3 对 Newtonsoft 存储强制类型允许列表、更改 RPC 遥测键,并要求自定义 grain 上下文激活器在构造前应用配置器。诊断输出需限制在 80 行/8 KiB,保留运行器退出码并披露截断。