零基础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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署