亚马逊云科技 Build On -轻松搭建咖啡点单系统

news2024/11/13 7:39:41

【前言】

1、什么是Build On?
Build On是亚马逊团队基于亚马逊云服务开发,打造的一系列可快速上手的实操性活动。通过通俗易懂的场景案例、简单快捷的开发路径,参与者可快速理解目标任务涉及的相关知识,同时对亚马逊云服务具备一定的认知。
Build On活动至今已举办至第三期,每期的形式均为理论知识介绍加实践操作,整个实验长度大约需要3~4小时,实操部分有操作手册进行指导,有助教随时进行问题解答。只要有耐心,任何新手均可快速上手。
在这里插入图片描述

2、本次的任务目标是什么?
本次活动的主题为基于Serverless快速搭建零售创新应用。实操案例采用的是快速搭建一个线上咖啡点单系统,包括用户端、商家端和商户取餐显示大屏端。
通过此次实验,参与者可以了解到如何使用亚马逊云科技中的各项服务实现Severless快速搭建零售新应用。

【背景知识】

使用事件驱动的架构(EDA)构建新应用程序

1 耦合

耦合在应用程序中无处不在,在传统架构下,由于耦合性太强,导致即使是小的任务目标的变更实现起来也相当复杂。在事件驱动的架构中,通过各个任务模块的解耦,可以减少任务任务中的耦合性,进而减少应用更新的难度。
耦合的种类:

  • 技术依赖性:Java vs C++

  • 地址依赖性: IP地址、DNS

  • 数据格式依赖性:二进制、XML、JSON、ProtoBuf、Avro

  • 数据类型依赖性:int16、int32、string、UTF-8、null、empty

  • 语义依赖性:名称、中间名、邮编

  • 时序依赖性:同步、异步

  • 交互方式依赖性:消息、RPC、查询风格(GraphQL)

  • 对话依赖性:分页、缓存、重试

2 事件驱动架构方案

事件驱动方案的主要特征有三部分:分别为解耦和分散应用程序组件、连接微服务和协调数据流。
在这里插入图片描述
事件驱动架构存在三要素分别为:

  • 事件的生产者:生产事件
  • 事件的收集者:存储和过滤,路由事件
  • 事件的消费者:处理事件

事件驱动的优势:解耦、异步和削峰。
在传统架构中,当增加新功能时,如为购物系统增加积分功能时,在传统架构中需要考虑积分服务的上下游耦合信息,在开发积分新功能的同时,需要同时变更原有系统。
在这里插入图片描述
在事件驱动型的架构中,为购物系统增加积分功能时,由于信息流的传递由总线机制进行了解耦,只需要专注于积分功能本身的开发,不会对原有系统造成影响。
在这里插入图片描述

3 基于亚马逊云服务实现事件驱动架构方案

亚马逊云服务中含有200+种服务可以生产事件,同时支持自定义事件,通过亚马逊云服务可以快速实现事件驱动架构方案。一种常用的事件驱动架构搭建方案如图。
在这里插入图片描述

【开始实验】

1 实验目标程序功能

  • 吧台上方显示器显示一个QR码,每5分钟更改一次。用户使用手机扫描此QR码进行下单。吧台的产能限制为每5分钟制作10杯饮品,一旦在5分钟内订单超过10杯,则QR码消失,防止商家被订单淹没。
  • 用户在扫描QR码进入的程序下单咖啡,后端进行订单验证,创建订单号后提供给商家。
  • 商家端显示用户的订单,商家可以修改订单的状态,指示订单的制作时间、完成时间或是否需要取消订单。
  • 客户在手机上可以看到商家的状态更新。吧台上方的显示器显示即将到来和已完成的订单状态。

2 实验流程

项目的前端程序已经部署,本次实验需要构建后端并将后端与前端程序进行连接。
前端程序包含显示应用程序、商家应用程序和订购应用程序。后端程序应用架构使用Amazon Step Functions、Amazon EventBridge、Amazon Lambda、Amazon API Gateway、Amazon S3、Amazon DynamoDB和Amazon Cognito进行搭建。
完成架构如下图:
在这里插入图片描述
在实验过程中,通过可视化模块进行流程搭建,并且每一步执行均可以从下图的流程图中查看执行进程。
在这里插入图片描述

3 实验结果

商家端:
商家页面显示订单接收详情,可以进行订单状态更改,商家开始制作时可以点击下图中的Make,则商品进入制作状态,制作完成后点击Pickup按钮,则商品进入可提货状态。
在这里插入图片描述
在这里插入图片描述
吧台大屏幕端:
吧台大屏幕正在制作的订单和可以领取的订单,左侧的二维码为点单二维码,可以扫描进行点单。
带二维码的图片发出后显示图片违规,此处不添加效果图了。实际样式参考肯德基吧台上方的点单大屏幕。
用户端:
用户扫描大屏幕上的二维码进入下图所示的程序,点击页面图标即可下单,下单后页面会进行咖啡状态更新,根据指示等待咖啡制作完成进行领取。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【后记】

通过本次实验可直观地感受到使用亚马逊云服务实现Serverless搭建零售创新应用的快捷性和便利性,可对微服务领域和亚马逊的相关服务形成基本的认识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【回答问题】ChatGPT上线了!推荐30个以上比较好的意图识别模型

【回答问题】ChatGPT上线了!推荐30个以上比较好的意图识别github源码? 好的,这里列出 30 个相对比较优秀的意图识别 GitHub 源码: DeepPavlov Rasa Snips spaCy OpenAI GPT OpenAI DialogFlow ChatterBot Botpress Amazon Lex M…

ArcGIS基础实验操作100例--实验41提取道路面中心线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验41 提取道路面中心线 目录 一、实验背景 二、实验数据 三、实验步骤 (1…

2022,我遭遇的那些小事

前言 2022,总感觉一晃眼就过去了,不知不觉自己坚持更文已经一周年了。回顾这一周年,无论是在技术成长上还是职业发展上,都有了许多新的体会。 裁员风波 还记得是四、五月份的一个上午,原本还在紧张的加班赶项目&…

educoder数据结构与算法 队列 第2关 实现一个链接存储的队列

本文已收录于专栏 🌲《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》🌲 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务:实现 step2/CLnkQueue.cpp 中的CLQ_IsEmpty、CLQ_Length、CLQ_In和CLQ_Out四个操…

论文阅读和复现:去除PPG运动伪影的IEEE论文

论文阅读和代码复现: 《Combining Nonlinear Adaptive Filtering and Signal Decomposition for Motion Artifact Removal in Wearable Photoplethysmography》 基本介绍: 由于手腕运动造成的噪声:运动伪影,使得PPG方法的心率监…

shell-流程控制之条件判断

1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。 补充:20G20971520kb [rootcotenos day06]# pwd /root/shell/day06 [rootcotenos day06]# vim free_men.sh #!/bin/bash f…

spring boot启动环境的配置与更改(dev,local,pro)包含单元测试环境

文件类型介绍 properties 该文件是一种key-value的格式&#xff0c;配置文件的特点是&#xff0c;它的Key-Value一般都是String-String类型的&#xff0c;因此我们完全可以用Map<String, String>来表示它。 用Properties读取配置文件非常简单。Java默认配置文件以.pro…

elasticsearch 7.9.3知识归纳整理(二)之es基本原理及使用kibana操作es的常见命令

es基本原理及使用kibana操作es的常见命令 一、es的基本原理与基础概念 1.1 倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值&#xff0c;而是由属性值来确定记录…

【机器学习】机器学习中常用的损失函数一览

问题 机器学习中常用的损失函数总结 前言 我们经常听到损失函数、代价函数和目标函数这三种说法&#xff0c;这三种说法有什么联系和区别呢&#xff1f;这里明确下&#xff1a; 损失函数 Loss Function 通常是针对单个训练样本而言的&#xff0c;给定一个模型输出 y^\hat{y…

设计模式 - UML类图

1. 什么是 UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统图形化、能表达软件设计中的动态与静态信息。L从目标系统的不同角度出发&#xff0c;定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图部署…

8种数据结构

快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外&#xff0c;数据结构属于计算…

【回答问题】ChatGPT上线了!有哪些3D点云算法模型?3D点云算法模型实现代码?

有哪些3D点云算法模型&#xff1f; 3D点云算法的模型有很多种&#xff0c;以下是一些常见的算法模型&#xff1a; 归一化重心法&#xff08;Normalized point-to-point ICP&#xff09;&#xff1a;是一种常用的模型配准方法&#xff0c;用于将两个模型中的点匹配起来。 基于…

跨年晚会前夕,曹云金和前妻复合了

每到跨年晚会的时候&#xff0c;总会有大的新闻事件发生&#xff0c;比如说在今年跨年晚会前夕&#xff0c;主持人何炅的老父亲&#xff0c;就非常不幸地驾鹤西去了。话说主持人何炅&#xff0c;在父亲离开后坚强地主持节目&#xff0c;他泪眼婆娑的表情&#xff0c;也登上了各…

电子游戏销售之回归模型与数据可视化

电子游戏销售之回归模型与数据可视化 文章目录电子游戏销售之回归模型与数据可视化0、写在前面1、回归模型1.1 模型建立准备1.2 建立模型1.3 模型分析2、数据可视化3、参考资料0、写在前面 该篇文章的任务包括以下3个方面 检测与处理缺失值建立回归模型数据可视化 实验环境 Pyt…

我的2022年总结

我的2022年总结 行走于世&#xff0c;风大时要表现逆的风骨&#xff0c;风小时要表现顺的悠然。 我们可以转身&#xff0c;但是不必回头&#xff0c;即使有一天你发现自己走错了&#xff0c;你也应该转身大步朝着对的方向去&#xff0c;而不是回头埋怨自己错了。 一、旧事 …

INT201-Decision, Computation and Language(2)

文章目录5. Turing Machine5.1 TM Configuration5.2 TM Transitions5.3 TM Computation5.4 Language accepted by TM5.5 Decider5.6 Multi-tape TM5.6.1 Multi-tape TM equivalent to 1-tape TM5.7 Nondeterministic TM5.7.1 Address5.7.2 NTM equivalent to TM5.8 Enumerable …

【Linux操作系统】yum三板斧和yum源的配置

文章目录一.Linux下软件的生态二.yum三板斧1.yum简介2.list搜索软件包3.install下载并安装4.remove卸载软件三.windows/Linux下文件互传1.lrzsz的查看和下载安装2.rz上传3.sz下载四.Linux软件生态的本土化1.镜像简介2.Linux软件生态的本土化五.yum源的配置1.找到yum源配置文件并…

Jedis: Java连接redis服务

文章目录一、编程语言与 Redis二、Jedis 连接三、JedisPool 连接池四、可视化客户端提示&#xff1a;以下是本篇文章正文内容&#xff0c;Redis系列学习将会持续更新 一、编程语言与 Redis ● Java 语言连接 redis 服务   Jedis   SpringData Redis   Lettuce ● C 、C …

ArcGIS基础实验操作100例--实验40构建点对连线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验40 构建点对连线 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

可视化系列讲解:canvas的动画实现

文章目录一、Canvas动画1.1 Canvas绘图都是通过JavaScript 去操控的&#xff0c;如要实现一些交互性动画是相当容易的。那Canvas是如何做一些基本动画的&#xff1f;1.2 Canvas 画出一帧动画的基本步骤&#xff08;如要画出流畅动画&#xff0c;1s 需绘60帧&#xff09;&#x…