网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
分布式系统是一种系统,其组件位于不同的联网计算机上,这些计算机通过相互传递消息来通信和协调其动作。这些组件相互交互以实现一个共同的目标。分布式系统的三个重要特征是:组件并发,缺少全局时钟和组件独立故障。
亚马逊云科技可以带给我们很多好的使用特性,可以说都是借助于分布式系统完成的。比如,亚马逊云科技可以动态调整我们要使用的资源。只有在我们使用的资源不够时才会分配给我们更多的资源,以达到节省费用的目的。那么正是因为亚马逊云科技的基础架构是基于多个小的组件完成的,使得亚马逊云科技提供动态分配资源的功能。还有很多很多特性都是基于分布式系统带来的好处,在这里先不细说。
我们先来从最高层理解一下亚马逊云科技是怎么体现出分布式的。首先,我们应该注意到亚马逊云科技里的region的概念。如果我们打开亚马逊云科技 console界面右上角在 “support” 左边的region下拉菜单,我们可以看到所有的亚马逊云科技已经部署了的region。每一个region的信息包括 “大地区 (小地区)region名称”,比如 “US East (N. Virginia) us-east-1”,大地区是美国东部,小地区是弗吉尼亚北部,region名称是us-east-1。当我们使用亚马逊云科技服务时,第一要选择的就是region,也就是说我们要使用哪个region里的该服务。这里要考虑的问题包括与该服务交互的其他服务会部署在什么region里,我们会倾向于将互相通信的服务部署在相同的region,这样减少他们之间通信的时延。第二要考虑我们要使用哪些服务,因为有些服务只部署在了某些region里。第三要考虑亚马逊云科技服务使用者所在的区域。比如我们使用亚马逊云科技部署一个web portal,假如我们的目标客户基本以中国大陆为主,我们当然应该选择一个离我们近的region,比如日本,韩国,新加坡等。
再下来的一个概念是Availability Zones,也就是可用区,或者也叫AZ。亚马逊云科技几乎所有的服务不会只部署在region的一个区域里,而是至少部署在region的两个及以上的区域里,并且可用区之间要求一定的距离。这样做的好处明显是提高了服务面对物理破坏带来的服务瘫痪的危险,比如地震,网线被破坏,等等。对于某些服务在建立的时候我们会被要求指定要使用那些AZ,us-east-1a,us-east-1b,us-east-1c就是在ue-east-里的3个AZ。还有相当多的服务是不需要用户指定AZ的,而是AWS会自动分配AZ,但是肯定是2个或以上。
Region和AZ的关系如下图所示:
当我们访问某个服务时,该服务的功能将由所有在该region上的部署了该服务的AZ共同完成。以后在我们谈到更具体的亚马逊云科技服务时,我们再详细谈一些由分布式带来的好处和陷阱。
五、亚马逊云科技云服务产品
亚马逊云科技云服务的产品有很多(如图一所示),每一种产品都有特殊用途,一般情况下我们需要将不同类型的产品组合在一起(如图二所示)才能够构建一个可扩展,高性能,可容错的系统,因此这一章的内容将介绍亚马逊云科技经常被使用的服务。
【图一】
【图二】
1、EC2
EC2(Elastic Compute Cloud)是亚马逊云科技非常基础的一款服务,其主要功能是提供计算服务,比如你可以通过亚马逊控制台自己创建一个EC2资源,你可以把这个计算资源看成一台虚拟机,它能够计算,能够读写存储,能够通信。你可以同时创建多个EC2资源,这些EC2可能运行在一台物理机器上也可能分布在多台物理机器上。
通过以上描述,你可以把计算资源想象成有多台物理设备放在一起形成了一个整体,这个整体拥有了强大的运算能力,而这些运算能力可以通过成千上万个EC2资源进行分解,并独立地提供给想要使用的企业或个人。当企业或个人不需要这些计算资源的时候就可以将其释放给其它企业或个人使用。
EC2是一台虚拟机,它能够运行Python写的程序,能够运行数据库,能够运行网页应用比如digolds.cn就是运行在亚马逊云科技的EC2上的。在现实的项目中,EC2一般是用来运行程序的,因此你可以使用C++、C、JavaScript、Java、Python、Ruby等等语言来编写程序,然后在EC2上准备程序依赖的运行环境,此时EC2就可以运行这个程序。
2、S3、EBS、EFS
直到今天,几乎所有的线上服务都需要存储数据,这些数据包括用户信息、图片、歌曲、视频等等。为了能够有效地存储和读写数据,那么需要编写一些程序专门用于解决存储问题,幸运的是亚马逊云科技提供了S3(对象存储)、EBS(块存储)和EFS(文件存储)存储服务,专门用来存储数据的。每种服务都有不同的用途、计费方式以及存储方案。接下来我们将了解一下每一种存储服务的特点和用途。
Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,这个服务的特性是具有可扩展性、数据可用性、安全性和高性能。通过S3,我们可以把文件以对象的形式存进去并得到一个唯一标识这个文件的Key,通过这个Key便可以从S3中获得该文件的内容。这个对象除了文件内容本身,还包括描述该文件的元数据(比如该文件的大小)。比如我们向S3中存储了大小为23KB的文件,那么S3中将有一个对象包含了23K以及该文件内容。
- S3经常被用来放一些静态资源文件比如CSS、Javascript、图片,视频等等,比如大家经常看到B站上的视频,其实是可以放在S3上存储的,又由于S3易于扩展,所以可以不停地往S3中存储静态资源。互联网上的用户可以直接访问到S3上存储的数据,这是它的一大特点。
- Amazon Elastic Block Store(Amazon EBS)是块存储服务,这种块存储服务一般会挂接到EC2实例上使用。它具有持久化和快速读写的存储能力,其存储的单元是基于块的,如上图中间的(Block Storage)。它无法直接被互联网访问,其常常被用于存储经常要用到的文件,比如系统的驱动程序。
- Amazon Elastic File System(Amazon EFS)是文件存储服务,这种存储服务可以同时被多个EC2实例使用,而且随着存储文件的数量和大小变化而变化。也就是说当数据量变多(变少)的时候,它会自动增加(缩减)存储空间,以便容纳更多(更少)的数据。EFS非常适合内容管理系统(CMS),比如WordPress就是一种流行的CMS,这些内容可以存储在EBS上,然后由多个EC2实例读取,当管理员只需要更新或添加新的内容到EFS上,那么所有的EC2实例将会得到内容完全一致的信息。这种一致性的能力在EBS上是做不到的,因为每一个EBS只能挂接到唯一的一个EC2实例上,而EFS能够同时挂接到多个不同的EC2实例上。
3、CloudFront
Amazon CloudFront 是一个基于云的内容交付网络(CDN),提供并与亚马逊 Amazon Web Services 套件集成。由亚马逊网络服务系统提供基础服务的一个内容分发网络。其在欧洲、亚洲、北美、澳洲、南美、美国多个主要大城市多地拥有自己的数据中心,共 107 个网络边际服务点提供服务。
Amazon CloudFront 内容交付网络允许通过在主要商业中心运营的区域中心全球分发数字内容。它减少了通过其分布式内容传递通道访问静态和流数据的延迟,这确保了数据从最近的 CDN 服务器传递给收件人。Amazon CloudFront 是一种即用即付模式,可以轻松地与所有 Amazon Web Services 集成。
Amazon CloudFront 专为需要向亚马逊许多不同区域用户快速传送内容的 Web 发布公司和应用程序而设计。Amazon CloudFront 通过在其不同的 CDN 位置缓存每个对象的实例来运行,从而减少了传递内容所需的时间。
Amazon CloudFront 通过支持的应用程序编程接口访问 Amazon S3 中的数据,并将其置于区域数据存储区中。其他亚马逊网络服务,包括亚马逊 EC2,也可以通过 EC2 处理流数据并通过 CloudFront 将其传递给最终用户。与所有其他亚马逊网络服务产品一样,CloudFront 具有可扩展性,灵活性,可作为即用即付服务提供。
4、Route 53
利用Route 53服务,AWS的用户就可以让终端用户访问众多的互联网服务了。所以"Route 53"就像一条虚拟的公路一样,把终端用户带领到目的地。Route 53的服务器分布在全世界各地,也是亚马逊唯一保证100%可用性的服务。DNS协议是基于TCP/UDP协议的,DNS服务监听的端口是53。所以名字里带53,暗含了DNS服务监听的端口。
5、VPC和NAT
VPC是AWS提供的一种虚拟网络服务,其它AWS资源都可以放在这个虚拟网络里构成一个逻辑单元,这个逻辑单元作为一个完整的服务提供给外部世界使用。当你使用VPC服务的时候,就需要使用其提供的gateways, route tables, network access control lists (ACL), subnets and security groups等功能,通过这些功能来配置虚拟网络。
六、体验一下亚马逊科技创建云数据库服务
1、进入管理控制台
2、搜索RDS服务
3、新建数据库链接
4、选择MySQL引擎
5、选择版本号和免费套餐
6、设置库名、主用户名、密码
7、选择虚拟网络环境
8、新建VPC安全组和选择端口号
9、创建实例
创建一个实例,在user data处输入脚本,内容如下。在安全组处需要开放80和22端口。在安全组处,将数据库的那条安全组设置,允许访问处修改为刚才创建的实例的安全组
此时去浏览器输入:http://ip/phpinfo.php
,可以访问到发布页面即可 。
10、创建数据库
- 创建一个名为 test 的数据库。
cd /var/www/html
,wget https://wordpress.org/latest.tar.gz,tar zxf latest.tar.gz
,cd wordpress
,此时在浏览器输入ip/wordpress
,就会自动进入配置页面。【注意:访问浏览器时使用的是公网ip,在控制台上连接时使用的是私网ip】,点击左下角的进入,就可以进入到配置页面。 - 进入后的数据库名称处就是前面创建的数据库,用户名和密码可以使用管理员的,也可以创建新的;在 database host处,需要将数据库的 endpoint复制进去,其他默认,点击提交;提交后会提示没有写的权限,将所显示的代码复制,点击run。此时需要回到控制台,进入
/var/www/html/wordpres
s目录,vi wp-config.php
,将刚才复制的内容写入,然后再回到留恋其页面,点击run即可。 - 此时就进入到了这个
test
博客站点,这里需要自定义名称。输入用户名,这里的密码是随机生成的,需要自己保存,输入邮箱后,点击install
即可。 - 此时就可以登录进入
test
,可以点击write your first blog
,写一些内容,然后发布。此时进入数据库查看,会发现自动创建了一些表格:use test;
,show tables;
。
七、对亚马逊云科技个人感受
1、资源丰富
亚马逊云科技的视频资料细致且丰富:
- 学习到云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。
- 学习到 亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务Amazon Relational Database Service (RDS)
- 学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。
- 学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 如何授权给 EC2 实例,允许其访问 S3 上的资源。
- 学会使用 Amazon CloudWatch,Amazon EC2 Elastic Load Balancing (ELB) , Auto Scaling,在亚马逊云科技上构建一个弹性高可用的架构,讲师会通过演示带领您完成这个弹性高可用架构的构建过程。最后本模块会向您介绍什么是 Well Architected Framework(WAF),对本系列课程做一个总结,提供进一步的学习路径,方便您学习在云平台上构建微服务架构、无服务器应用、大数据应用等。
更多开发者相关内容推荐:
- 架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。
- 构建者库:了解亚马逊云科技如何构建和运营软件。
- 开发工具包
2、对新手友好
根据亚马逊云科技的政策,所有的个人用户可以创建一个为期1年的免费账号并且还有一部分永久免费套餐可以使用,足够满足新手练习亚马逊云科技所有的需求!!!
3、创建用户简单易懂
创建用户指南将引导您设置 亚马逊云科技 账户和开发环境。让 亚马逊云科技 账户交互并预置以编程方式构建系统所需的任何资源。
在创建用户指南中将了解如何:
- 创建新 亚马逊云科技 账户
- 保护根用户安全
- 创建要在账户中使用的 IAM 用户
- 设置 亚马逊云科技 CLI
- 设置 Cloud9 环境
4、亚马逊云科技的优势
- 速度优势
- 全球优势
- 数分钟内实现全球部署
- 亚马逊云科技全球基础设施
- 每个区由一个或者多个数据中心组成
- 专为故障隔离而设计
- 亚马逊云科技可用区复制以便实现弹性。
- 亚马逊云科技边缘站点协助客户实现高可用、高响应
5、总结
- 新技术,新语言,新框架来临的时候,不要犹豫,搞定他,这非常有意思。
- 新岗位,新事物来临的时候,不要犹豫,搞定他,这有价值。
- 新领域,新行业,跨界来临时,搞定他,就当是在玩。
- 总之,不断的把自己的舒适圈扩大,扩大,再扩大,主动学习和挑战新的东西 。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
中…(img-dAvqbu7g-1715727350439)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新