学习

如何使用 NodeJS、AWS Lambda 和 Redis 构建实时竞价平台

数字技术将我们推向了激动人心的新时代,它改变了生活的几乎各个方面。随着通信变得即时,我们比以往任何时候都更加互联。在家办公现在已成为常态,帮助我们在疫情期间转向新的工作方式。我们通过参加在线工作相关活动来减少碳排放的能力意味着我们在应对全球变暖方面取得了更大的进展。继续这一趋势的是Shamshir Anees 和他的团队,他们创建了一个可以托管数字拍卖的应用程序。通过使用 Redis,组件之间的数据传输以最大效率执行,为用户提供仪表板上的实时竞价更新。

让我们看看这是如何实现的。

  • 你将构建什么?
  • 你需要什么?
  • 架构
  • 它是如何工作的?
  • 入门
  • 如何存储数据
  • 浏览应用程序

你将构建什么?

你将构建一个允许用户参加并参与数字拍卖的应用程序。该应用程序将允许用户创建帐户,出价,甚至设置自己的拍卖。下面我们将揭示所需组件、它们的功能以及如何在该架构中部署它们。

准备开始了吗?好的,让我们直接开始。

你需要什么?

  • NodeJS:用作开源、跨平台的后端 JavaScript 运行时环境,可在 Web 浏览器外部执行 Javascript 代码。
  • Amazon Cognito:用于安全地管理和同步移动设备上用户的应用程序数据。
  • Redis Cloud:用作实时数据库、缓存和消息代理。
  • Redis Stack:用于存储、更新和从 Redis 中获取 JSON 值。
  • Socket.IO:用作库,在浏览器和服务器之间提供实时、双向和基于事件的通信。
  • AWS Lambda:用作无服务器计算服务,它根据事件运行你的代码并自动为你管理底层计算服务。
  • Amazon SNS/Amazon SES:用于应用程序到应用程序 (A2A) 和应用程序到人 (A2P) 通信的全托管消息传递服务。

架构

它是如何工作的?

所有拍卖

NodeJS 连接到 Redis Cloud 数据库。

然后前端通过 API 调用与 NodeJS 后端通信。

GET : /api/auctions 从拍卖哈希中获取所有键。

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

每次拍卖

GET : /api/auctions/{auctionId} 通过 ID 获取每个拍卖项目。

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

拍卖项目的全部竞价数据

GET : /api/bidding/{auctionId}

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

个人资料设置

GET : /api/settings

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

用户信息

GET : /api/users/{email}

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

入门

先决条件

步骤 1. 注册免费的 Redis Cloud 帐户
注册免费的 Redis Cloud 帐户。
在创建新订阅时选择 AWS 作为云供应商。在数据库创建过程结束时,你将获得一个 Redis Cloud 数据库端点和密码。你可以将其保存以备后用

它是如何工作的?

所有拍卖

NodeJS 连接到 Redis Cloud 数据库。

然后前端通过 API 调用与 NodeJS 后端通信。

GET : /api/auctions 从拍卖哈希中获取所有键。

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

每次拍卖

GET : /api/auctions/{auctionId} 通过 ID 获取每个拍卖项目。

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

拍卖项目的全部竞价数据

GET : /api/bidding/{auctionId}

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

个人资料设置

GET : /api/settings

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

用户信息

GET : /api/users/{email}

NodeJS 使用 Redis 模块来使用 Redis Cloud。然后使用 Redis 凭据和 hmget() 创建 Redis 客户端。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

入门

先决条件

步骤 1. 注册免费的 Redis Cloud 帐户
注册免费的 Redis Cloud 帐户。
在创建新订阅时选择 AWS 作为云供应商。在数据库创建过程结束时,你将获得一个 Redis Cloud 数据库端点和密码。你可以将其保存以备后用

步骤 2:克隆后端 GitHub 存储库

https://github.com/redis-developer/NR-digital-auction-backend

步骤 3. 安装软件包依赖项

'npm install' 是一个 npm cli 命令,它执行预定义的操作,即安装 package.json 中指定的依赖项

npm install

步骤 4. 设置环境变量

export REDIS_END_POINT=XXXX
export REDIS_PASSWORD=XXX
export REDIS_PORT=XXX

步骤 5. 构建应用程序

npm run build

步骤 6. 启动应用程序

npm start

步骤 7. 克隆前端 GITHUB 仓库

git clone https://github.com/redis-developer/NR-digital-auction-frontend

步骤 8. 构建应用程序

npm run build

步骤 9. 启动应用程序

npm start

步骤 10. 访问应用程序

步骤 11. 注册应用程序

步骤 12. 登录

步骤 13. 访问仪表板

步骤 14. 列出拍卖项目

步骤 15. 访问竞标页面

数据存储方式

您将使用包含 Redis Stack 的 Redis Cloud 数据库来安装数据。

拍卖

  • 类型 - Redis 哈希。
  • 用于存储拍卖数据。
  • 从后端 (NodeJS) 生成的 UUID 作为键
  • 表示拍卖对象的 JSON 数据,包括以下键
    • auctionId
    • auctionItemName
    • description
    • lotNo
    • quantity
    • buyersPremium
    • itemUnit
    • minBidAmount
    • bidIncrement
    • startDateTime
    • endDateTime
    • images
    • currentBid
  • NodeJS 连接到 Redis Cloud 数据库。前端通过 API 调用与 NodeJS 后端通信。
  • POST : /api/auctions。
  • 请求主体包含要插入数据库的 JSON 数据。
  • NodeJS 使用 Redis 模块与 Redis Cloud 交互。Redis 客户端是使用 Redis 凭据创建的,并使用 hmset()。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

竞标

  • 类型 - Redis 哈希

  • 用于存储对每个拍卖项目进行的出价

  • NodeJS 连接到 Redis Cloud 数据库。前端通过 API 调用与 NodeJS 后端通信。

  • POST : /api/bidding

  • 请求主体包含要插入数据库的 JSON 数据。

  • 请求主体中的 AuctionId 作为键

  • 包含键的 JSON 数据

    • currentBid
    • currentBidTime
    • currentBidEndTime,以及
    • 竞标数组 (id、auctionId、userId、username、bidAmount、bidTime)
  • 竞标数组包含对特定拍卖项目进行的所有出价。

  • 根据当前的 BidEndTime 和 BidTime,拍卖结束日期将根据动态结束概念进行延长。

  • 当前动态结束逻辑 - 如果在拍卖结束时间的前 5 分钟内进行了新的出价,则结束时间将延长 1 小时。

  • 这将在 SaaS 解决方案中可配置。

  • NodeJS 使用 Redis 模块与 Redis Cloud 交互。Redis 客户端是使用 Redis 凭据创建的,并使用 hmset()。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

个人资料设置

  • 类型 - 字符串
  • 包含键的 JSON 数据 - 作为值
  • NodeJS 连接到 Redis Cloud 数据库。前端通过 API 调用与 NodeJS 后端通信。
  • POST : /api/settings
  • 请求主体包含要插入数据库的 JSON 数据。
  • NodeJS 使用 Redis 模块与 Redis Cloud 交互。Redis 客户端是使用 Redis 凭据创建的,并使用 hmset()。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

用户

  • 类型 - Redis 哈希
  • 用于存储用户详细信息
  • NodeJS 连接到 Redis Cloud 数据库。前端通过 API 调用与 NodeJS 后端通信。
  • POST : /api/users
  • 请求主体包含要插入数据库的 JSON 数据
  • 电子邮件 ID 作为键
  • 包含键的 JSON 数据 - 作为值
  • NodeJS 使用 Redis 模块与 Redis Cloud 交互。Redis 客户端是使用 Redis 凭据创建的,并使用 hmset()。这等效于用于将数据推送到 Redis 数据库的 HMSET 命令。

创建帐户

当您访问数字拍卖主页时,您将看到一系列待拍卖的物品(见下文)。单击“欢迎”按钮以创建帐户。

然后,您将被带到注册页面。输入您的详细信息,然后单击“注册”。完成注册表格后,您将收到一封确认电子邮件以激活您的帐户。

出价

转到主页以访问所有物品及其拍卖详细信息。此处的所有数据均由 Redis Stack 和 Redis Cloud 填充。滚动页面,然后单击要出价的物品。

单击物品后,您将在页面顶部看到竞标过程的详细信息。您还可以选择设置提醒,以便在该物品的竞标过程开始时收到电子邮件。

在图像的右侧,您将看到该物品的最高出价。下方是不同用户进行的先前出价列表,这些列表会实时更新。

单击“出价”按钮以进行出价。

要访问元数据信息或查看更多物品图像,只需向下滚动页面(见下文)。

查看您的竞标历史记录

单击导航栏顶部的“我的竞标”以查看您的竞标历史记录(见下文)。

查看即将举行的拍卖

单击导航栏顶部的“拍卖”以查看所有即将举行的拍卖。

结论:利用 Redis 和 AWS 为拍卖师提供实时数据

数字技术对现代生活的各个方面都产生了连锁反应。能够在线完成重要的任务,而不是亲自完成,彻底改变了我们的生活方式,帮助我们减少碳排放,节省出行时间,并可以即时访问以前从未拥有的大量数据。

但是,此类活动的成功取决于数据库实时传输数据的能力。任何传输故障都会在用户和拍卖之间造成脱节,阻碍拍卖师对出价的反应。这只会导致沮丧、脱节,以及用户完全与应用程序脱节。

但由于 Redis 的存在,构成架构系统的组件变得更加相互关联,因此数据能够实时发送、处理和接收。实现这一点为流畅的竞标流程铺平了道路,用户可以在没有任何中断的情况下实时与事件进行互动,最终增强了应用程序的功能。

NR-Digital-Auction 是 Redis 如何将创新变为现实的绝佳示例。来自世界各地的日常程序员正在尝试使用 Redis 构建影响日常生活的应用程序,您也可以做到!

那么,您可以使用 Redis 构建什么?如果您准备开始构建,请快速启动一个免费的数据库 Redis Cloud