公司:Wizz(母公司为 Voodoo)
行业:游戏和社交媒体
Cliquez ici pour lire l’étude de cas en français
Voodoo 是全球领先的移动游戏和应用程序发行商和开发者。自 2013 年成立以来,该公司已积累了超过 60 亿次下载量。如今,Voodoo 支持超过 200 款游戏的 3 亿活跃用户,并在全球 8 个办事处雇佣了约 700 名员工。Voodoo 家族内部有 Wizz,一款专为青少年设计的交友社交应用程序。Wizz 在美国、英国、加拿大和澳大利亚拥有超过 500 万用户,并计划在今年进行扩展。
Voodoo 的热门社交应用程序 Wizz 必须在高峰流量期间支持每秒 88,000 次查询 (QPS)。这需要一个能够处理数亿用户的高弹性、高吞吐量、低延迟数据库。
通过使用微缓存、分片、排行榜、速率限制和 PubSub 等核心 Redis 功能,Wizz 创建了一个高度可用的社交娱乐环境,易于管理和使用。
Google Cloud 上的 Redis 企业版使 Wizz 能够从每天托管 40,000 个会话的小型在线服务扩展到每天托管数百万个会话的快速增长的国际服务。而且它以出色的性能、正常运行时间和可靠性做到了这一点。
Wizz 是一款社交发现应用程序和在线体验,可以让 Z 世代青少年结识新朋友、聊天、玩游戏和交友——一种称为社交娱乐的新类别。Voodoo 对这款旗舰应用程序抱有雄心勃勃的目标,希望超越 Facebook、TikTok 和其他行业领导者。Wizz 应用程序于 2022 年 10 月在英国推出,通过 TikTok 的二次分享迅速走红,拥有 2000 万次观看次数,平均参与率为 20 天。截至撰写本文时,Wizz 已在美国、加拿大、英国和澳大利亚上市,并将很快在全球其他 23 个国家/地区上市。
“欢迎来到 Wizz,这里充满意想不到的乐趣。”这是一句吸引 Z 世代青少年使用新社交娱乐应用程序的绝佳标语,但对于必须将数百万次意想不到的用户操作转化为无缝在线体验的 IT 专业人员来说,这可能是一场噩梦。这就是为什么 Voodoo(广受欢迎的移动应用程序 Wizz 的创造者)依靠 Redis 企业版来实现安全、可扩展、高性能的数据库基础设施。
Wizz 的技术团队只有 8 人,需要易于部署、管理和维护的软件。他们选择了 Google Cloud 上的 Redis 企业版,因为它功能强大、经济实惠,并且只需点击几下即可轻松扩展。“我们需要简化管理,我们不想费心扩展我们的基础设施,”Wizz 首席技术官高缇埃·盖杜说。“Redis 企业版非常稳定,易于使用。”
最初,Wizz 以 Google Cloud 的 Memorystore(一种完全托管的内存数据存储服务)的形式部署了 Redis。但是,Wizz 发现他们需要专门的 Redis 支持和更强大的功能,以确保在应用程序在全球范围内越来越受欢迎的情况下,实现更低的延迟和可靠的可扩展性。为了确保他们能够满足这些要求,Wizz 决定与 Redis 签订直接合同,让他们能够更好地控制 Redis 部署。
自迁移到 Google Cloud 上的 Redis 企业版(由 Redis 支持)以来,盖杜和他的团队一直享受着 Redis 企业版部署的技术支持和更高的可用性。“只需向 Redis 支持发送一封电子邮件,我们就能获得快速、可操作的信息,这使我们能够有效地扩展 Wizz,而不会牺牲性能或影响用户体验,”盖杜说。
作为一款社交发现、游戏和娱乐应用程序,Wizz 的设计宗旨是让人们能够在安全、充满活力、互动性强的环境中轻松地相互认识并成为朋友。该服务由一对一的消息传递以及通常涉及多个参与者的实时聊天会话驱动。一个匹配算法可以帮助志趣相投的青少年相互找到并立即在应用程序中进行沟通。
用户期望获得即时服务和个性化体验。为了实现实时互动,Redis 企业版在支持无状态应用程序进程的分布式缓存引擎中存储有关发送的消息、接收的消息和已读消息的数据。这最大限度地减少了缓存数据的重复,并且实际上消除了对外部数据源的请求——目前每天约 5000 万条消息。“来自数千个同时会话的所有数据都是由 Redis 实时管理的,”盖杜说。
但是,Redis 企业版不仅仅是 Wizz 应用程序数据的缓存。如果 Redis 出现故障,应用程序也会出现故障。为了确保稳定运行,Wizz 还使用 Redis 企业版进行会话管理和会话状态监控。
Redis 企业版将会话状态数据缓存到极快的内存缓存中,使每次点击、滑动、聊天和游戏请求都能得到即时响应。这使 Wizz 能够记住每个用户的相关详细信息,包括登录凭据、个性化信息和最近的操作,例如与哪些朋友进行了互动。当用户断开连接时,某些数据会持久化到数据库中,供将来使用。
Wizz 使用 WebSockets 在地理区域之间协调数据。随着服务的扩展,技术团队正在考虑使用 Redis 企业版的分片功能将大型数据库划分为更小、更易于管理的组件。“数据库读取时间对我们来说非常重要,因此我们正在使用 Redis 来同步我们所有的 WebSockets,”盖杜解释说。“我们不想依赖于集群范围的服务器。我们希望英国用户能够与美国用户交谈,等等。”
为了实现区域内和区域之间的一致消息传递,Redis 用作 发布者/订阅者平台。发布的消息被分类为通道,而无需了解可能存在哪些(如果有)订阅者。订阅者表达他们对一个或多个通道的兴趣,例如喜欢的宠物、恐怖经历或用户想要讨论的任何其他内容。
Wizz 架构的第一个版本依赖于另一个云数据库,如果客户端负载增长过快,该数据库往往会陷入瘫痪。如今,关键的数据库处理已迁移到 Redis 企业版,它可以支持此广泛使用的社交娱乐应用程序必不可少的实时处理负载。“内置的警报系统使我们能够防止停机,尤其是在流量激增的情况下,”盖杜说。
在 Google Cloud 环境中扩展 Redis 企业版很容易。“只需点击几下,我们就可以打开新的数据库实例或添加 CPU 能力来支持不断增长的查询负载,”盖杜说。“如果没有 Redis 企业版,为用户提供相同的体验将非常昂贵。”
Wizz 还使用 Redis 企业版构建排行榜,这些排行榜为其匹配算法提供支持。排行榜是一种记分板,用于跟踪用户名、排名、当前分数和与应用程序体验相关的其他数据点。“最好的匹配是在同时使用 Wizz 的人之间,这使得 Redis 企业版的低延迟、实时处理方面变得极其重要,”盖杜说。Redis 企业版跟踪会话并确切地知道用户何时连接,因此人们可以进行同步、互动的讨论。
Wizz 使用 Redis 速率限制功能来限制用户重复执行操作的频率,例如限制一分钟内允许的服务器请求次数。这是 Wizz 网络安全实践的重要方面,因为它可以防止恶意行为者成功进行拒绝服务 (DoS) 攻击,在这种攻击中,过多的服务器请求会导致在线服务停止运行。
Wizz 在 2022 年 10 月经历了网络攻击的破坏性影响,当时黑客成功地破坏了另一个供应商的云数据库,导致停机 3 个小时。Redis 中的速率限制策略将防止此类事件在将来发生。“我们在一整天内就设置了一个速率限制器,因此如果我们遭到攻击,它不会破坏整个数据库,”盖杜说。
盖杜和他的团队在微型单体架构上构建了 Wizz,其中许多 微服务 被组合在一起,简化了数据环境的开发和部署。“Wizz 服务依赖于许多数据库,”盖杜说。“每个数据库都绑定到一个微型单体,该单体组合了许多微服务。”
Wizz 计划随着其在 27 个国家/地区推出社交娱乐服务而扩展这种多功能软件环境,首先是德国、法国和荷兰。Gédoux 表示,启动新的 Redis 集群以及跨地理区域复制用户订阅都非常容易。开发团队正在考虑使用 Redis Enterprise 的 Active-Active 功能,通过允许任何国家/地区的用户随时了解谁在线来简化通信,以及通过 WebSockets 跨区域加速消息传递。
“我们不需要考虑 Redis,”Gédoux 总结道。“它只是工作。我们只打过一次支持电话,Redis Enterprise 服务从未出现过故障。”