用途:这是 Sentry 单元格(cell)架构的参考文档,同时是进行中的迁移指南,用于说明多 cell 部署的请求路由、数据访问与迁移规范。
主要概念:Cell 是自包含的 Sentry 部署,拥有部分组织,运行完整技术栈(Getsentry、Snuba、Seer、Relay、Kafka、Symbolicator 等),网络隔离且 cell 间无直接通信;OrganizationMapping.cell_name 记录组织所属 cell。Locality 是 cell 的命名集合,代表数据驻留区(如 us、de)或单客户专用部署(如 s4s2),映射到子域名。region 是 cell 的旧称,代码库正在迁移。
请求进入 cell 的三条路径:一是 Locality API({locality}.sentry.io),由 Synapse 按组织到 cell 映射路由,URL 必须含 organization_id_or_slug,规范形如 /api/0/organizations/<organization_id_or_slug>/...;生成 URL 用 org.locality.to_url(path)。二是摄取路径 ingest.{locality}.sentry.io,由独立 Synapse 按公钥路由,高流量 Relay 可绕过 Synapse。三是控制 silo(sentry.io),通过 API Gateway、集成 webhook 转发和 RPC 与 cell 通信。
跨 cell 数据访问:本地开发为单库,跨 cell 缺陷只在隔离环境暴露。可用 OrganizationMemberMapping、OrganizationMapping、organization_service.get_organization_by_id()、find_cells_for_user() 等基础设施,并采用控制索引加 RPC 扇出、反规范化到控制 silo 等模式。
迁移与部署:新代码不得用 region 表示 cell 或 locality;重命名需区分概念,且不得改 db_column="region_name"、AWS 区域、Uptime 区域和计费区域。滚动部署须两阶段:先部署向后兼容代码,再清理旧名称。已知问题包括集成视图路由、Jira 问题详情跨 cell 扇出和 relocation 端点路由等。
本地调试:devservices up --mode cell-routing 启动 Synapse;SENTRY_CELL_ROUTING=1 sentry devserver --client-hostname=dev.getsentry.net;bin/send-cell-test-event.py 发送测试 envelope。
限制:文档为进行中迁移指南,部分章节完成后应删除;具体收费、平台支持等未提供。