AMS的学习笔记

494 阅读3分钟

AWS-Amazon Web Services 亚马逊提供的一站式云计算服务,可以理解为海外版,其强大的托管服务 可以解决一个互联网企业线上部署、存储、大数据计算等需求,线上服务的高可用,负载均衡,容灾等都有其对应 且强大的解决方案,特别是大数据基本有对标开源方案的所有服务。

最近需要用这套服务,所以需要学习一下,重点还是在用,特别是S3和Lambda,刚接触,觉得不错。

本文内容参考了网上的其他文章,侵删。

首先要了解几个概念:

EC2

即线上虚拟机(分Linux和Windows2种),一般的虚拟机功能都有,比如新建、删除示例,生成远程访问密钥对,生成快照,挂载EBS【理解成外置硬盘】,基本能想到的功能都会有,具体用到的时候多看看。

EBS(Elastic Block Store)

没啥好说的,理解成硬盘,按性能和价格(成正比)分为4种【2种SSD、2种HHD】,按需选择。

S3(Simple Storage Service)

可以理解成为HDFS

其中有重要概念存储桶(Bucket)=》类似mysql的数据库实例,存储桶可以选择数据存在哪个机房【比如美国西部】

S3配合AWS的静态网站托管服务,甚至可以直接部署一个静态网站,还有防盗链等功能。

有以下优点:

  • 存储任务数据量的数据【可以是图片】,存储单元为Object,每个Object的大小从1byte到5T
  • 弹性(扩缩容),持久【11个9的持久性】,可靠性【3个9的可靠性】
  • 支持数据加密(可以用aws提供的key或者用户自定义的key)
  • 数据在整个region内冗余(高可用-副本)
  • Object级的访问控制(可以在权限页面上配置)
  • 易于访问(可以用页面或者命令行访问),用sql语句可以查看数据,可以类比hive

S3存储性能调优

以下3种场景都有解决方案

  1. QPS<100(aws自行调优)
  2. TPS>100 或QPS>300
  3. TPS>500或QPS>800,需要提交给AWS的Support组提供支持。 以上只有第二种方案是我们需要关注的:

首先,如果是纯QPS(获取单条数据)的场景,建议使用CDN等方式解决。

如果是混合请求场景,比如请求是GET、PUT、DELETE/LIST Bucket,AWS的建议解决方案如下:通过打乱key顺序模式,是key在多个partition分布。【相信很多场景下都会有这个问题,其实就是数据热点问题解决的思路】

key前面添加 key的16进制的hash值的前4位 反转key的字符串

Amazon CloudWatch(监控系统)

  1. 首先支持监控AWS自身服务以及客户的业务指标。
  2. 可以在平台上图形化查看或者调用API显示在客户自己的监控平台页面上
  3. 提供报警发邮件配置服务
  4. Auto Scaling【比如监控到CPU使用率比较高,可以对EC2进行扩展】
  5. 提供日志管理【RDS和Lambd的执行日志】

Lambda-AWS的Serverless服务

只要写函数就可以支持很多种功能,本人最近需要用到定时触发Lambda将S3的数据转存到mysql数据库。当然,触发Lambda的事件很多,有很多公司的成功案例,网上应该不少。