大规模系统的可用性、扩展性与延迟管理
1. Photon 管道架构与处理流程
Photon 管道在每个站点包含调度器(Dispatcher)、事件存储(EventStore)和连接器(Joiner),这些组件对查询日志、点击日志和连接后的点击日志进行操作。而 IdRegistry 存储着全球运行的 Photon 实例之间共享的关键状态。
连接器的处理流程如下:
- 提取 queryId 并在 EventStore 中查找对应的查询。
- 若查询被找到:尝试在 IdRegistry 中注册 clickId。
- 若 clickId 已在 IdRegistry 中,假定连接操作已完成。
- 若不在,则将 clickId 记录在 IdRegistry 中,并将事件记录在联合事件日志中。
- 若查询未找到:连接器向调度器发送失败响应,触发重试。
在美国,IdRegistry 在三个地理区域的数据中心有五个副本,往返延迟最长可达 100 毫秒。管道中的其他组件部署在东西海岸两个地理上相距较远的区域。在高峰期,Photon 每分钟可处理数百万个事件,每天消耗数 TB 的外部日志(如点击日志)和数十 TB 的主日志(如查询日志)。每个数据中心运行着一千多个 IdRegistry 分片,部署了数千个调度器和连接器,以及数百个缓存事件存储和日志事件存储工作节点。
2. 大规模系统的可用性挑战
随着云用户数量的增长和数据中心基础设施规模的扩大,系统可用性问题愈发突出。对于数据流式处理系统而言,高可用性和正确性至关重要,因为当事件处理所需资源突然不可用时,很可能会错过一些事件。
通常认为
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



