Lens 是一种开放的社交协议,所有内容和交互都存储在区块链上。Lens 为用户提供对其个人资料、社交图谱和数据的拥有权和控制权,同时提供一个技术栈,使开发人员能够在 Lens 上构建他们选择的社交应用程序。
与其他社交网络一样,Lens 协议也严重依赖机器学习来创造更相关、更愉悦和更值得信赖的用户体验。正如 Lens 团队解释的那样,Lens 的机器学习系统处理从决定向用户显示内容顺序的 Feed 排序算法到识别和减轻恶意活动的复杂机器人检测机制的所有内容。
Lens 团队每天都会计算和评估跨不同时间段的数百个特征,以评估用户行为和内容交互。这包括定期运行以更新模型和特征的繁重的批处理作业,以及较轻的实时作业(例如回复排名),这些作业需要以较低的延迟进行即时处理,以提供即时反馈。
该团队最初依靠 Postgres 和 Rockset 来支持其数据需求。然而,在他们旧的设置下,由于数据摄取延迟和查询并发限制而苦苦挣扎后,他们转向 ClickHouse Cloud 以获得更快、更高效的数据操作。
遇到 Postgres 的限制
Lens 协议构建在 Polygon 区块链 上,但正在迁移到 Lens 网络(2024 年第四季度)。最初,Lens 使用简单的 Postgres 数据库来管理用户交互和内容。他们实现了一个 GraphQL API 来代替传统的 RPC 端点,以便集成者(在 Lens 协议上构建的开发者)更容易与区块链交互并构建前端应用程序。
据 Lens 团队称,这在最初运行良好。但是随着平台的增长以及集成者请求更复杂的功能,Postgres 的局限性变得显而易见。数据科学团队迁移到 Rockset,后者提供了更好的数据处理能力,尤其是在复杂查询和聚合方面。
Rockset 的性能挑战
然而,即使迁移到 Rockset 后,也出现了新的挑战。为了将数据从 Postgres 摄取到 Rockset,他们必须将 AWS 数据库迁移服务 (DMS) 与 Amazon Kinesis 数据流 结合使用。此过程涉及使用 DMS 捕获来自 Postgres 的更改,然后通过 Kinesis 流式传输这些数据以到达 Rockset。
Lens 团队发现,添加多个层在同步方面增加了大量延迟。此过程增加了数秒,有时甚至数分钟的延迟。对于实时作业来说,这是一个大问题。
Lens 团队描述的另一个重大挑战是 Rockset 的并发查询限制。Rockset 对可以同时执行的查询数量有预定义的限制;当达到这些限制时,Lens 只能升级到更昂贵的计划(他们已经升级了几次,直到成本变得不可行),或者其他查询必须等待,导致数据处理延迟。这对于实时机器学习任务来说尤其成问题,因为及时的数据检索和处理是关键。他们尝试了自定义解决方案来解决这些限制,但不仅限制仍然存在,而且还增加了整体架构的复杂性,尤其是在 Lens 的数据处理需求增长时。
因此,Lens 团队发现自己正在寻找更好的数据库管理解决方案。
从 Rockset 迁移到 ClickHouse
在探索 Lens 的 Rockset 替代方案时,该团队简要考虑了 Amazon Aurora,并启动了 RDS 集群来管理其即时数据需求。但是,Aurora 被认为不足以满足 Lens 的长期需求。他们知道他们需要一个能够处理高速查询并在 Lens 协议增长时高效扩展的数据库。
几周前,Lens 开始将 ClickHouse 用于另一个项目。他们对该项目的主要要求是能够尽可能快地执行原始查询的数据库。正如 Lens 团队的一位成员所说:“如果你正在寻找的唯一指标是查询速度,那么你就应该选择 ClickHouse。”
根据他们在 ClickHouse 的早期经验,他们开始探索将其用于 Lens 协议。起初,他们考虑使用 Kubernetes 运算符部署它并自行管理。但是,在了解了 ClickHouse Cloud 并了解其成本效益和易于上手后,他们选择了云产品。
“数据库运行起来从来都不是一件有趣的事情,”一位团队成员笑着解释道。“作为一项托管服务,ClickHouse Cloud 为我们减轻了很多负担。”
他们开发了一个快速的概念验证,建立了现有 Postgres 数据库和 ClickHouse 之间的数据同步。他们使用 PeerDB 来管理 CDC 过程,有效地将更新从 Postgres 流式传输到 ClickHouse,而无需复杂的自定义配置。通过创建数据镜像并配置必要的 helm 图表,他们很快就建立了一个功能齐全的设置。
正如 Lens 团队的一位成员所说:“集成非常快。只需一两天即可实现。”
该团队将迁移描述为“无缝”。随着他们的大部分数据已经迁移到 ClickHouse 并开始运行,该团队现在专注于调整和重写以前依赖 Rockset API 的现有代码,以与 ClickHouse 的 API 协同工作。
据 Lens 称,这比预期进行得更快,因为他们不必构建围绕 Rockset 所需的库的大量方法。他们只需要处理查询和数据插入,而无需担心扩展 VI 或其他复杂性。PeerDB 集成使整个过程更加顺畅,因为这两个系统都是为彼此而构建的。
ClickHouse 带来的巨大改进
向 ClickHouse 的过渡已经为 Lens 协议的数据操作带来了重大益处。通过消除以前在 Rockset 中需要进行的多层数据传输,该团队实现了近乎即时的数据处理。具有数千万行数据的表的摄取时间,在 Rockset 中大约需要 24 小时,现在使用 ClickHouse 和 PeerDB 仅需 1-2 小时。
正如团队成员所说:“我们减少了摩擦。过去我们使用三种工具,它们之间勉强可以协同工作,现在我们有了ClickHouse和PeerDB,它们是专为彼此而设计的。这使我们的生活变得更轻松,并且完全消除了延迟问题。”
ClickHouse能够处理大量并发查询而不会降低性能,这是另一个巨大的优势。与Rockset不同,Rockset的查询限制阻碍了Lens团队的工作并导致令人沮丧的瓶颈,而ClickHouse允许团队随着Lens协议的增长扩展其机器学习操作。额外的容量将提高其数据处理工作流的速度和效率,使团队能够支持更复杂的功能并改善平台的整体用户体验。
“我们希望能够服务尽可能多的请求,”一位团队成员说。“我们对ClickHouse提供给我们的功能非常满意。”
从Rockset迁移到ClickHouse的经验教训
回顾迁移过程,一个重要的经验教训是快速原型设计的重要性。使用ClickHouse开始并开发POC非常容易,这使得Lens能够快速测试和验证其性能。
“使用产品总是比阅读文档和构建架构图更好。使用产品是了解某件事是否有效的最简单方法。”
Lens团队还反思了平台工程和选择长期、可扩展且能够良好协同的解决方案的重要性。
展望未来,Lens对ClickHouse为Lens网络及其未来的社交产品带来的可能性感到兴奋。这包括开发一个特征存储,以简化跨不同机器学习模型的特征管理和重用,提高一致性并加速新机器学习解决方案的部署。
随着迁移到ClickHouse Cloud,Lens能够随着向Lens网络过渡而扩展数据操作。除了ClickHouse在性能和效率方面提供的价值外,Lens团队还认识到迁移带来的可扩展性和安全感。
正如团队成员所说:“当事情顺利且轻松时,作为开发者,你会有一种很好的直觉。我们不必经历一个漫长的过程,寻找奇怪的错误。ClickHouse让我们确信我们做出了正确的决定,并且可以扩展。”