零基础5分钟上手亚马逊云科技-云原生架构设计

2024-08-27 04:44

本文主要是介绍零基础5分钟上手亚马逊云科技-云原生架构设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介:

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何利用亚马逊云科技上设计云原生架构,利用S3服务托管前端、EC2服务托管后端应用以及利用DynamoDB托管NoSQL数据库,提升云上应用程序的扩展性,降低运维维护难度。本方案架构图如下:

方案所需基础知识

利用S3托管前端的优势

Amazon S3(Simple Storage Service)是亚马逊云科技提供的高度可扩展、可靠且低成本的对象存储服务。利用S3托管前端应用程序具有以下几个显著优势:

高可用性与扩展性

S3是一个全球分布的服务,提供了99.99%的可用性。前端文件(如HTML、CSS、JavaScript和图片)可以通过S3进行全球分发,确保用户无论身处何地,都能够快速访问应用。S3的自动扩展能力意味着无论有多少用户同时访问,都能保证稳定的性能。

成本效益

使用S3托管静态网站或前端资源,费用相对较低。开发者只需为存储的文件和传输的数据量付费,不必担心服务器的维护和管理成本。这使得S3成为托管静态网站的理想选择,尤其适合初创公司和中小型企业。

简单的部署与管理

将前端代码部署到S3非常简单,只需通过AWS CLI或管理控制台上传文件即可。S3还支持版本控制,允许开发者跟踪和管理不同版本的文件。此外,S3与亚马逊云科技的其他服务(如CloudFront)无缝集成,可以进一步增强内容交付的速度和安全性。

利用EC2作为后端服务器的优势

Amazon EC2(Elastic Compute Cloud)是亚马逊云科技提供的可扩展虚拟服务器,可以运行在云中的任意应用程序。利用EC2作为后端服务器有以下几个优势:

可配置性与灵活性

EC2提供了多种实例类型,支持不同的计算、内存和存储配置,使开发者可以根据应用的需求选择最适合的实例类型。开发者还可以选择操作系统、安装必要的软件包,并配置防火墙和网络设置,完全控制的计算环境。

自动扩展与负载均衡

EC2与Auto Scaling和Elastic Load Balancing(ELB)结合使用,可以根据流量自动扩展或收缩计算资源。这意味着在流量高峰期可以自动增加实例数量,在流量减少时自动减少实例,确保高效利用资源,优化成本。

集成与安全性

EC2与亚马逊云科技的安全服务(如IAM、Security Groups等)深度集成,提供了可靠的安全功能,确保后端服务器及其数据的安全性。开发者可以定义精细的访问控制策略,确保只有经过授权的用户和服务能够访问开发者的EC2实例中的服务。

利用DynamoDB作为数据库的优势

Amazon DynamoDB是亚马逊云科技提供的一种完全托管的NoSQL数据库服务,具有快速性能和无缝扩展能力。作为数据库,DynamoDB在以下几个方面展现出明显的优势:

高性能与低延迟

DynamoDB能够提供微秒级的延迟,即使在高流量的情况下也能保持一致的性能表现。DynamoDB的设计使其能够处理大量的读写请求,非常适合需要快速响应时间的应用程序,如实时数据处理和高频交易系统。

自动扩展与管理

DynamoDB自动管理表的扩展和缩减,无需手动分片或进行容量规划。当应用的需求增加时,DynamoDB自动扩展容量,确保数据库能够处理更大的负载。相反,当需求减少时,DynamoDB自动缩减资源使用,帮助开发者节省成本。

无服务器架构

DynamoDB是一种无服务器的数据库服务,这意味着不必担心底层的基础设施管理,包括服务器维护、软件升级和数据库备份。DynamoDB提供内置的高可用性和数据复制功能,确保数据安全可靠,使开发者能够专注于应用程序的开发和业务逻辑。

本方案包括的内容

1. 向S3存储桶中上传静态网页资源作为前端服务器

2. 将EC2中部署的MySQL迁移到云原生NoSQL服务DynamoDB上

3. 对DynamDB表格中的数据进行更新

4. 测试网页功能是否从数据库加载所需资源

项目搭建具体步骤 

1. 打开亚马逊云科技控制台,进入到S3服务主页

2. 创建一个新的S3桶,命名为“labstack-85135d11-e72b-4e05-9185-2c64-s3htmlbucket-bhc9fvyuztil”,点击进入并点击Upload上传静态网页资源。

3. 上传资源后点击Upload确认上传。

4. 此时创建一台EC2作为运行后端应用的服务器,服务器命名为“Ice Cream”,部署后端应用程序,用于访问DynamoDB读取数据库。

5.接下来进入DynamoDB NoSQL数据库服务中

6.创建一个DynamoDB表,命名为“Products”,点击进入。

7. 点击"Create Item"为数据库添加数据

8. 点击右侧‘Add new attribute“为数据库添加新的字段,选择数据类型为String字符。

9. 填入以下键值对:”Id:1“, ”ProductFlavor:Cinnamon-spiced Chocolate“,”ProductPrice:7.99“,最后点击右下角的Create添加数据。

10. 接下来选中服务器Ice Cream,点击右上角的Connect SSH连接进入控制台

11. 运行以下脚本启动Apache Httpd服务器,更新后端应用访问DynamoDB获取数据。

echo "Renaming index.php to compute-index.php"
mv /var/www/html/index.php /var/www/html/compute-index.phpecho "Renaming serverless-index.php to index.php"
mv /var/www/html/serverless-index.php /var/www/html/index.phpecho "Restarting Apache"
sudo systemctl restart httpdsh

index.php代码如下,可以看到数据库的访问代码段已经更新更新为访问DynamoDB:

<!DOCTYPE html>
<html>
<head><linkhref="https://fonts.googleapis.com/css2?family=Urbanist:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"rel="stylesheet"><link rel="stylesheet" href="style.css"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body><!-- Announcement --><div class="announcement"><p>Save 10%! With Promo Code ANYCO</p></div><!-- Header --><div class="header"><h1>ANYCO.</h1></div><!-- Main Body --><div class="row"><div class="column"><img src="./images/main_icecream.jpg" style="width:100%"></div><div class="column"><div class="cta"><p1>DON'T COMPROMISE ON TASTE! TRY OUR BOLD, CLASSIC FLAVORS TODAY.</p1></div><div class="menu"><?php// Autoloader required - using Composerrequire 'vendor/autoload.php';use Aws\DynamoDb\DynamoDbClient;try {// Register the Handler$client = DynamoDbClient::factory(array('version' => 'latest','region' => 'us-west-2','profile' => 'anyCoUser'));$iterator = $client->getIterator('Scan', array('TableName' => 'Products',));foreach ($iterator as $item) {// Grab the flavor valueecho"<tr><td>{$item['ProductFlavor']['S']}</td><td>{$item['ProductPrice']['S']}</td></tr>\n";}} catch (Exception $e) {echo 'Caught exception: ',  $e->getMessage(), "\n";}?></div></div></div><!-- Footer --><div class="footer"><div class="footer-container1"><p2>Contact Us.</p2><br><p2>(555) 555-1212</p2><br><p2>1234 AnyCompany Drive</p2><br><p2>AnyTown, USA, 55555</p2></div><div class="footer-container2""><a href="#" class="fa fa-facebook"></a><a href="#" class="fa fa-twitter"></a><a href="#" class="fa fa-instagram"></a><a href="#" class="fa fa-pinterest"></a></div></div></body>
</html>

12. 获得以下脚本回复

******************************
**** This is OUTPUT ONLY. ****
******************************Renaming index.php to compute-index.php
Renaming serverless-index.php to index.php
Restarting Apache

13. 由于我们的前端页面目前部署在我们的S3中,我们此时通过打开S3存储桶的index.html网页文件URL,就可以打开我们刚刚部署的网页。

14. 打开网页可以看到,前端页面加载了我们刚刚在NoSQL数据库中添加的数据”Cinnamon-spiced Chocolate 7.99“

以上就是在亚马逊云科技上利用云原生服务设计网页应用架构,提升服务扩展性和降低维护压力、成本的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案。 

这篇关于零基础5分钟上手亚马逊云科技-云原生架构设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110667

相关文章

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟