写点什么

从 Tiktok 用户涌入小红书事件看 OLTP 数据库如何应对突发流量

作者:晨章数据
  • 2025-01-24
    北京
  • 本文字数:2056 字

    阅读完需:约 7 分钟

从Tiktok 用户涌入小红书事件看OLTP 数据库如何应对突发流量

近日,美国对 TikTok 的禁令,导致海量 TikTok 用户转向了小红书(XHS)。国内外网友积极互动,“Pay my cat tax”甚至成为了热搜关键词。然而,泼天流量给公司业务带来快速增长的同时,也给数据库系统的基础架构团队带来巨大挑战,尤其是在应对未计划的流量急剧增长时,基础架构没有提前做好准备,很可能错失良机,失去大量的用户和流量,甚至被贴上不好用的标签。

这些潜在的挑战可以分为以下三个方面:

  • 更高的读工作负载 (QPS):活跃用户的激增将导致每秒查询数(QPS)呈指数级增长。

  • 更大的热数据量:随着更多用户参与,更多的帖子会被频繁查看或搜索,这会增加需要保存在内存中以保证快速访问的数据量。

  • 更多的写工作负载:随着用户发布更多内容并通过回复互动,写操作的量会显著增加。

1.什么样的数据库架构能应对突发流量?

要有效地解决这些挑战,关键在于能够快速扩展特定组件以应对特定瓶颈。传统的单节点和分布式数据库在这一点上往往存在局限性。接下来,我们将详细分析每个挑战。

01.应对更高的读工作负载

当每秒查询数(QPS)增加时,瓶颈通常出现在 CPU 资源不足上。要解决这一问题,需  要有效地扩展 CPU 资源以处理额外的处理负载。

  • 单节点数据库可以通过垂直扩展增加 CPU 核心数,但这种方式有硬性限制,因为单台机器的物理容量是有限的。

  • 分布式数据库尤其是采用计算、存储分离架构,能够通过增加计算节点水平扩展 CPU 资源。通过这种方式,可以有效地将读工作负载分散到更多机器,从而应对不断增加的查询需求。

很多存算分离的分布式数据库可以很好解决读负载的 CPU 瓶颈问题,但是查询性能往往还和缓存命中率密切相关,简单的存算分离架构并不能满足快速水平扩展内存的需求。

02.管理更大的热数据量

热数据是指需要频繁访问并存储在内存中的数据,以确保低延迟的响应。当热数据量增长时,扩展能力至关重要,以确保缓存的命中率。

  • 单节点数据库通常通过增加只读副本来管理更大的热数据量。然而,这种方法存在明显的缺点:每个副本维护自己独立的缓冲池,而缓存的效率高度依赖于分片策略。如果分片不均衡,会导致频繁的缓存未命中,从而显著降低性能。

  • 分布式数据库通常将热数据保存在内存中,而冷数据存储在磁盘上。然而,传统架构通常将内存与磁盘紧密耦合,这需要同时扩展内存和磁盘容量。当内存需求在流量激增的情况下快速增长时,这种耦合会导致资源使用效率低下。



理想的解决方案是将内存与磁盘存储解耦,从而在不移动磁盘数据的前提下,快速扩展内存,以适应更大的热数据量。

03.应对更大的写工作负载

在事务型数据库中,每次写操作都需要通过磁盘操作(如 fsync)来持久化数据。这将造成磁盘 IOPS 成为写密集型工作负载的主要瓶颈。

  • 单节点数据库的写吞吐量受制于底层存储系统的性能。增加 CPU 或内存并不能解决问题,因为瓶颈在于磁盘。例如,对于某些系统(例如 RDS),8 核 32GB 的实例与 64 核 256GB 的实例的最大写吞吐完全相同。

  • 分布式数据库通常将重做日志(redo log)与数据存储耦合。为了扩展写能力,这类系统需要扩展整个键值存储集群。这种扩展过程通常既耗时又消耗大量资源。

要解决这一问题,解耦日志与存储的架构至关重要。这种设计允许 Redo 日志独立扩展,从而更高效地应对写工作负载的增长。

2.EloqKV:为突发流量而设计的解耦架构

EloqKV 是一款完全兼容 Redis 协议的键值数据库,其四元解耦的架构能够有效解决上述挑战。其设计首次将关键数据库组件解耦,从而使其能够根据特定的瓶颈独立扩展。以下是 EloqKV 的核心架构:



  • 前端计算引擎:处理客户端请求,兼容 Redis 协议,支持与现有应用的无缝集成。

  • TxService 集群:缓存热数据并负责事务处理,作为内存缓冲池,确保对频繁访问数据的低延迟访问。

  • LogService 集群:专门处理写前日志(WAL),保证数据持久性,同时将日志操作与其他组件隔离开。

  • 持久存储服务集群:管理内存状态检查点和冷数据存储,将长期存储与实时处理分离。

3.EloqKV 如何解决这些挑战?

   通过其解耦架构,EloqKV 简化了扩展过程,并能够应对突发流量场景:

  • 扩展热数据和读 QPS:当热数据量增加或需要更高的读 QPS 时,可以独立扩展 TxService 集群以增加缓冲池。这种扩展可以在几秒内完成,因为冷数据无需从持久存储集群迁移。

  • 应对写工作负载激增:随着写流量的增长,可以通过添加更多的写前日志磁盘来扩展 LogService 集群,从而提高写吞吐量,而不会影响其他组件的运行。

  • 优化存储扩展:持久存储集群的独立性确保了内存和磁盘的扩展可以独立进行,从而避免了传统架构中紧耦合带来的效率低下。    

综上所述,EloqKV 是应对用户激增场景(比如海量用户从 TikTok 转向小红书)挑战的理想数据库解决方案。通过快速扩展特定组件并消除传统紧耦合架构的瓶颈,EloqKV 能够在应对流量高峰时,以显著降低资源消耗和数据迁移的方式确保系统的高效平稳运行。这种能力不仅体现在常规的高并发场景中,也能在极端的条件下体现出可靠性,使企业能够在业务流量急剧变化时灵活应对,抓住转瞬即逝的商机。

经过一年多的打磨,EloqKV 即将正式开源,期待为键值数据库市场提供一个更优的选择,也期待得到大家更多的关注和参与。

用户头像

晨章数据

关注

全新架构的数据库初创企业 2020-11-10 加入

晨章数据成立于2021年,创始团队来自于微软亚洲研究院、VMware中国研发中心,拥有十多年数据库研究和开发经验,并曾在数据库顶级会议上发表多篇相关学术论文,已获得顶级技术专家和风投投资基金的投资。

评论

发布
暂无评论
从Tiktok 用户涌入小红书事件看OLTP 数据库如何应对突发流量_NoSQL 数据库_晨章数据_InfoQ写作社区