构建高可用性的核心服务层:Coupang电子商务应用程序的技术实践

news/2024/12/2 19:46:22/

随着Coupang电子商务平台用户数量的快速增长,构建一个高可用性的核心服务层成为了关键任务。本文将介绍Coupang如何通过统一的NoSQL数据存储、缓存层和实时数据流等技术和策略,构建一个高可用性的核心服务层,以满足日益增长的数据流量需求,并保证低延迟和高可靠性的数据服务。

背景和挑战

Coupang作为一个综合性电子商务平台,除了提供市场上的商品,还通过自有的Rocket Delivery服务进行批发和销售。这种服务涉及的业务和数据逻辑比普通电子商务平台更为复杂。每个产品包含多种类型的数据,由不同的微服务进行管理。如果每个页面都直接从微服务中获取数据,微服务需要保持高可用性,并且常用的业务逻辑代码将分散在前端,导致代码冗余和复杂性增加。因此,需要一个单一的微服务来处理常用的业务逻辑和数据。

构建核心服务层

为了应对复杂的数据需求和上述挑战,Coupang的Materialization Platform团队创建了核心服务层。核心服务层有两个主要目标:统一业务逻辑代码和向客户页面提供数据。

核心服务层的目标包括:

•确保99.99%的高可用性,并在发生故障时能够快速恢复。•提供高吞吐量和低延迟的数据服务,以处理高读取流量。•保证从各个来源实时聚合的数据的一致性和新鲜度。•统一业务逻辑代码,减少前端的复杂性和代码冗余。

架构

c11c75cb61e3506441675de6aa834e75.jpeg

核心服务层是一个被应用程序的客户页面调用的微服务,用于提供所需的数据和业务逻辑。整个架构的目标是实现高可用性、高吞吐量和低延迟的数据服务。架构包括以下组件和特性:

统一的NoSQL数据存储

Coupang的产品领域信息由后端的不同微服务管理。通过将数据按微服务分离,可以实现高读取吞吐量。核心服务层不需要跟踪所有微服务中的每个数据更新。相反,后端的每个微服务将更新的数据发送到队列,并保存到统一的NoSQL数据库中。通过集成这种统一存储到核心服务

层,可以减少数据读取延迟和提高数据一致性。

缓存层

为了减少对NoSQL存储的访问,核心服务层还实现了一个缓存层。缓存层使用分布式缓存系统(如Redis)来缓存频繁访问的数据,以提高数据读取的性能和响应时间。缓存层与NoSQL存储保持同步,并使用缓存策略和淘汰算法来管理数据的缓存和失效。

154a4660ee83fbb1e448db6f58f61c9b.jpeg

实时数据流

核心服务层还包括实时数据流组件,用于处理来自不同来源的数据更新。当后端的微服务更新数据时,它们将数据发送到实时数据流。核心服务层订阅这些数据流,并使用流处理引擎进行实时处理和聚合。这确保了数据的一致性和新鲜度,并使核心服务层能够提供实时的数据更新给客户页面。6168640d8751c3fc5b8a9470fb56e961.jpeg

高可用性策略

4197af987ede816a667668cea9953f7e.jpeg

为了确保99.99%的高可用性,核心服务层采用了多个策略。首先,核心服务层使用分布式架构,将服务水平部署到多个服务器上,以避免单点故障。其次,它实现了自动容错和故障转移机制,当一个节点出现故障时,自动将请求路由到其他可用的节点。此外,核心服务层还进行了持续监控和性能优化,以及故障检测和快速恢复。

4105559e8b5c1b995320c3cdab415750.jpeg

结论

通过构建高可用性的核心服务层,Coupang电子商务应用程序能够应对日益增长的数据流量需求,并提供低延迟和高可靠性的数据服务。统一的NoSQL数据存储、缓存层和实时数据流等关键技术和策略的应用,使得核心服务层具备了高度的可扩展性、性能和可靠性。这些技术实践为其他电子商务平台构建高可用性的核心服务层提供了有益的参考。

参考文献:

•[1] Coupang: https://www.coupang.com/•[2] Distributed Systems for Fun and Profit: https://www.allthingsdistributed.com/


http://www.ppmy.cn/news/78596.html

相关文章

力扣 695. 岛屿的最大面积

一、题目描述 给你一个大小为 m x n 的二进制矩阵 grid。 岛屿是由一些相邻的 1(代表土地)构成的组合,这里的相邻要求两个 1 必须在水平或者竖直的四个方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。…

实现免杀:Shellcode的AES和XOR加密策略(vt查杀率:4/70)

前言 什么是私钥和公钥 私钥和公钥是密码学中用于实现加密、解密和数字签名等功能的关键组件。 私钥是一种加密算法中的秘密密钥,只有密钥的拥有者可以访问和使用它。私钥通常用于数字签名和数据加密等场景中,它可以用于对数据进行加密,同…

Tauri应用开发(三):自定义拖拽区域

1. 自定义拖拽:data-tauri-drag-region tauri默认的顶部可拖拽,有时候我们不需要这个拖拽,或者需要自定义拖拽区域时,就需要通过tauri提供的data-tauri-drag-region属性来自定义拖拽区。 ![在这里插入图片描述](https://img-blog…

【Tomcat下载及使用说明】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1.什么是Tomcat 2.Tomcat下载流程及注意问题 …

关于图片加载,你需要学习一下

目录 😊 从何而来 🥕 设计思路 🍭 初步设计 🚩 成功和失败 🚧 加载失败 🐬 回调函数 ⌛ 懒加载 🚥 对外接口 🚩 测试使用 🏆 完整代码 😊 从何而…

如何成为一名黑客?小白必学的12个基本步骤

黑客攻防是一个极具魅力的技术领域,但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度,具备很深的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。 如果你想成为一名优秀的黑客,下…

微信小程序【发送给朋友】和【复制链接】功能,灰色不可用

每日鸡汤:悲观者可能正确,但是乐观者往往成功 假设你是一个用户,你随便找一个小程序可以看到这几个功能 转发给朋友分享到朋友圈复制链接 很常见的功能,但是如果你作为开发者,这几个功能就需要自己做喽,并…

跨境电商的三大平台Amazon、eBay、速卖通,你怎么选择?

很多刚刚开始决定做跨境电商的朋友,第一个难点就是:我要从哪个平台开始做呢?在没有正式做过之前,很难去了解到每个平台的不同,但是也不可能同时去运营太多个平台。考虑到这个难处,龙哥今天就从亚马逊、ebay…