01 — 架构与边界
1. 分层
┌─────────────────────────────────────────────────────────┐
│ 客户端 / SDK │
└───────────────────────────┬─────────────────────────────┘
│ flare.common.v1.*
┌───────────────────────────▼─────────────────────────────┐
│ flare-im-core(通信核心) │
│ gateway · orchestrator · conversation · storage · sync │
└───────────────────────────┬─────────────────────────────┘
│ 仅契约
┌───────────────────────────▼─────────────────────────────┐
│ flare-capability(扩展宿主) │
│ HookPlugin · ExtensionPlugin · Guard / Resolver 注册表 │
└───────────────────────────┬─────────────────────────────┘
│ gRPC / 进程内注册
┌───────────────────────────▼─────────────────────────────┐
│ 业务域(Social / 风控 / 审计 / 内容能力 …) │
└─────────────────────────────────────────────────────────┘
2. Bounded Context
| 上下文 | 拥有数据 | 典型服务 |
|---|
| Message | 消息、seq、投递 | orchestrator, storage |
| Conversation | 会话、游标、参与者投影 | conversation |
| Sync | 同步编排、快照 | sync-orchestrator |
| Capability | Hook/扩展路由、策略 | flare-capability |
| Social | 用户、好友、群目录 | flare-user, flare-relation, flare-group |
禁止:在 flare-im-core 内引用 Social 的 proto / crate / 服务名常量。
3. 集成方式对照
| 需求 | 推荐机制 | 说明 |
|---|
| 发信前校验(好友、禁言) | Hook pre_send | 可拒绝或改 draft |
| 发信后审计 | Hook post_send | 异步友好 |
| 群目录增量 | Sync GROUP_DIRECTORY + 可插拔 Port | 默认 Noop |
| 通用业务能力 | ExtensionPlugin operation | 最长前缀路由 |
| 进程内 Rust 插件 | CapabilityExtensionRegistry | 部署时 register |
4. 调用链(发消息)
Client → Gateway → Orchestrator
│
├─ HookDispatcher(config/hooks.toml)
│ └─ gRPC → flare-social-hook(可选,priority 高)
│
└─ gRPC → flare-capability HookPlugin.pre_send
├─ PreSendGuard 管道(可选,bridge 注册)
└─ 配置的 pre_send hooks
→ Storage / Push …
5. 与 Social 的关系
- Social 不是 Core 子模块,而是 Capability 的提供方之一。
- Rust 单体部署可用
flare-social-im-bridge 注册 Guard / Extension;不是架构前提。 - 跨语言:实现
flare.capability.v1.HookPlugin 即可(见 flare-social-hook 参考实现)。