元宇宙与虚拟现实 加密税务与合规

7shifts Redis扩展之路:从单点到分片的实践与经验分享

元宇宙与虚拟现实 加密税务与合规
Scaling Redis at 7shifts (2023)

深入探讨7shifts如何在2023年面对快速增长的用户需求,成功扩展其Redis缓存平台的技术历程与解决方案,内容涵盖缓存技术入门、连接管理难题、Redis性能瓶颈及创新的代理分片策略。

在当今互联网应用中,缓存技术已成为提升系统性能和吞吐能力的关键工具。几乎所有开发框架都对缓存服务提供了原生支持,启动Redis或Memcached实例,仅需简单配置即可集成。然而,当业务规模增长到一定程度时,单一缓存实例的瓶颈便会逐渐显现,如何有效扩展缓存能力成为亟待解决的问题。7shifts作为一家致力于改善餐厅团队管理体验的科技公司,在2023年的高速发展阶段,也面临着Redis扩展的挑战并付诸实践,本文将详尽介绍其扩展Redis缓存的全过程及宝贵经验。 起步阶段,简洁架构为核心价值 7shifts在初创阶段并未采用应用缓存架构,所有数据操作均依赖数据库完成,包括会话数据等。这样的设计让系统架构异常简洁,对当时的业务负载来说完全可行。

数据库的扩容策略也通过提升资源硬件的形式满足了早期增长需求。然而,以数据库扩容为单一手段,面对不断增长的访问压力,显然难以长期支撑,服务的响应性能和扩展空间受到限制。 首次引入Redis缓存后,7shifts将高成本查询的模型数据纳入Redis缓存,减少对数据库的直接压力同时提升了应用响应速度。此时搭配的架构是在数据库写入的同时同步更新Redis缓存,典型的读写缓存协作模式,显著优化了性能表现。 连接数激增下的架构困境 虽然缓存的引入带来明显好处,但伴随着应用规模的增长,出现了新的瓶颈。7shifts使用的是单体PHP应用,应用每个请求都会建立并关闭与Redis的连接。

在规模较小时这种连接开销不大,但随着请求量攀升及高并发场景出现,这种“开-关”连接模式对Redis带来了沉重负担,系统延迟开始与Redis连接数呈正相关。 为此,团队快速找到了引入连接代理或连接池的解决方案。通过保持一组持久连接,代理降低了频繁建立连接带来的开销。7shifts最终选用了Twemproxy作为中间层,成功显著降低了Redis直接连接数,改善了延迟和系统负载,架构变得更加稳健。 随着用户量激增,单实例Redis已不堪重负 到了2023年夏季,7shifts用户快速增加,数据库CPU资源利用率攀升至90%以上,升级数据库硬件空间已接近极限。拆分数据库服务虽可以缓解压力,但复杂性和成本高昂。

团队决定从增加缓存数据入手,令更多频繁访问的数据模型纳入Redis缓存。 出乎意料的是,新增缓存后整体延迟却有所升高。细致的监控数据显示,虽然Redis内存使用充足,但CPU资源早已超负荷,导致请求排队。Redis的单线程特性使得通过增加更大实例来扩容存在天花板。7shifts团队意识到需要对缓存架构进行本质上的重新设计。 Redis扩展的多重方案权衡 初步调研中,Redis Cluster方案因其自动数据分片特性成为首选,但由于7shifts基于Google Cloud Platform(GCP)的MemoryStore部署,且当时GCP尚不支持Redis Cluster,故被暂时搁置。

读副本方案也是GCP提供的服务,但这需要客户端或应用层具备更复杂的连接逻辑,影响开发者体验和系统简洁性。 团队转而考虑手动分片设计,开始着手配置多Redis实例,暂存不同数据分区。但直接将分片逻辑放在应用层仍然增加复杂度。偶然间,团队发现Envoy代理支持客户端分片(Client-side Sharding),能够将分片负担下沉至代理层,这样应用无需感知分片细节,开发者体验保持简洁,基础设施团队亦更好掌控扩容策略。 Envoy的引入及性能革新 首先,7shifts将原有的Twemproxy替换为Envoy作为代理层。Envoy不仅承担连接池功能,更支持丰富的路由和分片配置。

这次替换带来了出乎意料的收益,Redis实例CPU占用率显著下降,应用延迟同步降低,客户体验有明显提升。 随后,7shifts开始构建多实例Redis集群,Envoy配置成分片代理,将缓存请求按策略分发到多个Redis节点。为保证数据完整性,团队采用请求镜像功能,实现双写机制,确保数据逐步同步到新架构中,实现平滑切换。 分片挑战及热键问题的应对 分片后,监控数据显示不同分片Redis实例间CPU使用率分布不均。进一步调查发现,部分热点Key集中落于个别节点,造成负载不均衡现象。借助Redis命令行工具的--hotkeys功能,7shifts识别出多条高访问频率的Key。

针对该问题,团队在应用层定义“高频Key”策略,通过在Key前缀添加特殊标识(如HIGH_FREQ_)引导Envoy做特殊分发。高频Key在写入时以广播方式写入所有Redis分片,读取时采取轮询访问,均衡了负载,避免单个节点过载,有效解决了热点Key带来的性能瓶颈。 经验总结与未来展望 7shifts的Redis扩展之路是一段充满挑战与创新的过程。起初的无缓存架构因简单直接而实用,伴随着业务增长逐步引入缓存,解决数据库压力,再面对连接数爆表、单实例CPU瓶颈,积极探索代理池和分片策略。Envoy代理的引入成为关键转折点,使缓存系统获得了质的提升。针对热点数据的不均衡访问,定义应用侧高频Key策略,完善了分片架构的负载均衡。

整个过程不仅是技术调优的体现,也显示了架构灵活应变的能力。7shifts的经验有助于其他同样面临缓存扩展瓶颈的团队借鉴,实现性能与成本的平衡。展望未来,随着GCP对Redis Cluster与更多分布式缓存模式的支持持续完善,7shifts也将持续优化缓存体系,以支持更大规模与更高稳定性的餐厅管理服务。 从7shifts的案例可以看出,缓存扩展不仅是技术选型的赛道,更是设计思想的较量。低耦合、高透明的分片设计和代理层解耦策略,是企业稳定、高效扩展核心存储服务的关键。对于希望通过缓存提升应用性能的开发者和架构师而言,7shifts的实践无疑提供了宝贵的参考和启示。

加密货币交易所的自动交易 以最优惠的价格买卖您的加密货币 Privatejetfinder.com

下一步
Programming Language Switching Politics: A Rigged Game of Power
2025年09月30号 03点50分11秒 编程语言切换背后的政治博弈:一场被操控的权力游戏

深入剖析编程语言切换过程中的政治争斗,揭示隐藏在技术选择背后的权力操控与利益博弈,探讨早期采用者、社区力量以及行业生态对编程语言兴衰的深远影响。

The World Is Warming Up. and It's Happening Faster
2025年09月30号 03点51分29秒 全球变暖加速:气候危机带来的紧迫警示

随着全球气温持续上升,人类活动加剧了气候变暖的速度,导致极端天气频发,环境生态系统面临严峻挑战。本文深入探讨全球变暖的最新趋势、科学数据及其对未来的深远影响,呼吁社会各界重视并积极应对气候变化。

Microsoft plans major job cuts at Xbox
2025年09月30号 03点52分34秒 微软计划在Xbox游戏部门进行重大裁员 引发业界广泛关注

微软宣布将在Xbox游戏部门实施新一轮大规模裁员,作为整体公司重组的一部分,此举引起了游戏产业和科技界的高度关注,揭示了当前行业面临的挑战与转型压力。本文深入解析裁员背后的背景、影响及未来趋势。

Depopulation Won't Change the World for the Better
2025年09月30号 03点53分49秒 人口减少不会带来世界的美好转变:深入解析人口与环境的真正关系

深入探讨全球人口减少趋势对环境、经济和社会的影响,揭示为什么单纯依靠人口下降无法解决气候变化和全球性挑战,强调技术进步和行为转变的重要性。

The F1 movie is a cinema smash hit, on track to outperform previous Apple films
2025年09月30号 03点54分47秒 《F1》电影创下票房奇迹,或将超越苹果影业全部之前作品

《F1》电影凭借强劲的票房表现,打破了苹果影业历来的记录,成为其迄今为止最成功的影院作品。影片的全球首映周末票房高达1.45亿美元,显示出观众对这部电影的极大热情和认可。本文将深入探讨《F1》电影的成功原因及其对苹果影业未来发展的影响。

Officials celebrate sale of worlds largest solar-powered steel mill in Pueblo
2025年09月30号 03点56分27秒 普韦布洛全球最大太阳能钢厂易主 引领绿色钢铁新时代

普韦布洛的世界最大太阳能钢厂出售引发广泛关注,此举不仅巩固了当地经济基础,也为美国钢铁工业的绿色转型树立了榜样。随着新东家Atlas Holdings接手,该钢厂的未来发展充满机遇,将推动可持续发展和创新技术的深度融合。

Atomic War or Peace (1947)
2025年09月30号 03点57分30秒 爱因斯坦眼中的核战争与和平:1947年全球核危机反思

本文深入探讨了1947年爱因斯坦关于核战争与和平的深刻见解,分析了核武器带来的全球威胁以及国际社会在核能控制和世界和平建设中的重大挑战与机遇。通过回顾历史背景,揭示了世界必须走向超国家安全体系以避免核战争的紧迫性。