初创公司如何利用Taotoken低成本接入多种大模型能力
2026/5/10 17:36:21
Grain Directory是 Orleans 中用于跟踪 Grain 激活位置的分布式目录服务,它解决了分布式系统中的核心问题:如何找到某个 Grain 实例所在的 Silo。
LocalGrainDirectoryDistributedGrainDirectory(基于 DHT)ILocalClientDirectoryGrain 激活 → LocalGrainDirectory.RegisterAsync() → 本地存储 → 同步到 DistributedGrainDirectory → 集群范围内可用客户端调用 → PlacementService → GrainLocator.Lookup() → 检查缓存 → 本地目录查询 → 分布式目录查询 → 返回地址Grain 停用 → LocalGrainDirectory.UnregisterAsync() → 移除本地条目 → 通知 DistributedGrainDirectory → 集群范围内失效IGrainLocator提供统一的查找/注册接口| 定位器 | 使用的目录 | 适用场景 |
|---|---|---|
| DhtGrainLocator | LocalGrainDirectory(通过 DHT 同步) | 默认普通 Grain |
| CachedGrainLocator | 自定义 IGrainDirectory 实现 | 非默认目录 Grain |
| ClientGrainLocator | ILocalClientDirectory | 客户端 Grain |
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ │ Client │ │ PlacementService │ │ GrainLocator │ └─────────┬─────────┘ └─────────┬─────────┘ └─────────┬─────────┘ │ │ │ ▼ ▼ ▼ ┌───────────────────┐ ┌───────────────────┐ │ │ GetGrain<IUserGrain>() │────►│ AddressMessage() │ │ └───────────────────┘ └─────────┬─────────┘ │ │ │ ▼ │ ┌───────────────────┐ ┌───────────────────┐ │ │ GetOrPlaceActivationAsync() │────►│ _grainLocator.Lookup() │ └───────────────────┘ └─────────┬─────────┘ │ │ │ └─────────────────────────┘ │ │ ▼ │ ┌───────────────────┐ ┌───────────────────┐ │ │ DhtGrainLocator.Lookup() │────►│ LocalGrainDirectory.LookupAsync() │ └───────────────────┘ └─────────┬─────────┘ │ │ │ └─────────────────────────┘ │ │ ▼ │ ┌───────────────────┐ ┌───────────────────┐ │ │ DistributedGrainDirectory.LookupAsync() │────►│ 返回 Grain 地址 │ └───────────────────┘ └─────────┬─────────┘ │ │ │ ▼ │ ┌───────────────────┐ ┌───────────────────┐ │ │ 设置消息 TargetSilo │────►│ 发送消息到目标 Silo │ │ └───────────────────┘ └───────────────────┘ │ │ │ ┌───────────────────┐ │ │ 目标 Silo 上的 Grain 处理请求 │◄────────────────────────────┘ └───────────────────┘Orleans 支持自定义IGrainDirectory实现,用于特定场景:
Grain Directory 是 Orleans 分布式架构的核心组件,它通过分布式目录服务解决了 Grain 定位问题,实现了:
通过 Grain Directory,Orleans 实现了**“像调用本地对象一样调用分布式对象”**的核心目标,为开发者提供了简单而强大的分布式编程模型。