zoukankan      html  css  js  c++  java
  • AWS扫盲

    http://www.kuqin.com/system-analysis/20080914/17891.html

    从贮存到支付,云计算的领导者(亚马逊)提供了一系列的低价服务来吸引注意。我们将紧密关注这些。

      亚马逊网络服务( AWS)是基于一个简单的想法:亚马逊已经建立了一个跨越全球的硬件和软件基础设施,来支持该公司的互联网业务,那么为什么不将那些基础设施的组件模块化并且出租?这是类似一个建设州际公路的大型建筑公司,出租其设备和专门的技术,把他们投入到例如,修建一条小路,铺平了一间超级市场的停车场,修理管路,或者开掘后院游泳池的工程中。

      更具体地, AWS通过REST或者基于SOAP的网络服务呼叫使亚马逊业务体系的各个模块都能够连接和使用。这些模块可以比作是有X2GHz处理器和2GB内存的虚拟电脑系统,并且存储系统能够容纳数TB的数据,数据库,支付管理系统,订单追踪系统,虚拟店面系统,所有上述情况的组合,甚至更多。当我说“实用”,我真正的意思是指“值得” 。你只需要为你使用的服务(和他们的资源)买单。

      最为关键的是,你可以租用大量的虚拟机,存储数TB的数据,或建立一个互联网范围的消息队列,并且你将只需向Amazon支付你消费的资源费用。因此,如果你的业务需求的一组CPU群和数百十亿字节的储存空间来处理你每周星期三才要处理的工作,也就是说,你并不需要一间房子来存放一个星期有六天不工作的服务器。你可以使用AWS。因此,AWS对有间歇性或短暂的处理需求的商业系统尤其具有吸引力。

      费用也非常合理。举例来说,贮存100 GB的数据一个月,将花费15美元( 15美分每GB每月) ,开发者每发送1GB数据到“计算云”需要支付10美分费用(亚马逊网络服务的网站提供了一个简单的在线AWS计算器,计算你每月使用的任何服务组合的费用) 。

      [想了解更多AWS以及其云计算的竞争对手?请参阅我们的特别报告"Inside the emerging world of cloud computing."。准备涉足AWS,但又不知道从何开始?请阅读"Hooking your apps into Amazon Web Services." ]

      正如上面所示,这种服务范围包括从硬件(尽管虚拟)到处理。这些服务分为三类:基础设施服务,电子商务服务,和网络信息服务。

      调查基础设施服务

      基础设施服务有弹性计算云(EC2);简单储存服务(S3),持久存储系统;简单数据(SimpleDB)组成,他实现了一个远端存取数据库;和亚马逊的简单排队服务(SQS) ,一个消息队列服务和约束分布式应用程序代理,由E2,S3 ,和SimpleDB 组合构成。

      这些服务的提供无限的计算,存储和通讯设施。他们非常适合被称为“间歇性”的应用:他们需要大量计算或贮存设施,并且不安常规(例如,一个应用程序只在每周周五晚上进行收集数据的处理) 。一个应用程序,需要全世界连通性-也就是说,一个系统对图形文件进行处理并且将结果通过互联网提供给客户-也可以善加利用基础设施服务。最后,这些服务作为大型分布式应用的优秀概念验证实验室。发展内务正在寻求证明,一个被提议的企业环境应用程序能通过使用基础设施服务来实现一个蓝本的可行性,并且可以避免硬件成本,但如果该蓝本被认为不可行,将是一个净损失。

      弹性计算云(EC2)。
            想象一个广阔空间充满了服务器系统,所有网路连结在一起。坐在你的单一工作站,你创建一个虚拟机的形象,它定义了一个1.2 GHz主频处理器,1.7GB内存和一个160 GB的硬盘的虚拟机运行Linux,并且预装你特别用来压缩大量待处理数据的软件。你部署他对外服务,并且管理这些服务器。在将来某个时间, 你的数据挖掘操作将获得大量的数据矩阵。你指示服务实例化50部虚拟机,并释放每一个数据矩阵中。在几秒钟内, 50部1.2 GHz主频处理器都将积极处理你的的数据。他们完成后,他们的把结果存放在一个预先指定的储存点,然后消失。

      EC2简言之。 他完全是一部具有无限采集能力的虚拟计算机,用户能够用来执行一些处理任务。然而“无限”并不不意味“无边际”; 相反,他是具有上限的。 亚马逊的文献阐明,你能同时租用“上百,甚至数以万计”虚拟机。

      [ EC2如何同他的竞争对手较量呢?请参阅测试中心的测试评论:"Cloud versus cloud: A guided tour of Amazon, Google, AppNexus, and GoGrid."]

      因为在EC2中的系统是虚拟的,亚马逊提供了一个广泛的硬件支持能力。在低端,你可以调用一个主频是1.26GHz和1.8GB内存的Opteron级机器。在高端(截止到写这篇文章时) ,你可以调用一个拥有15 GB内存的64位多核系统。这些规格是略计。虚拟机器,你实例在EC2计算机单元(ECU) ,亚马逊定义为相当于1 1.0ghz到1.2 GHz主频2007 Opteron处理器。 (该公司建议确定自己的基准,以确定哪些是你的特定应用程序的最好实例) 。

      亚马逊机器映象( AMI )由一个操作系统和当虚拟机启动时你想要预先载入的任何的应用程序组成。目前,只有Linux可作为EC2实例的操作系统 ,虽然这几乎不是一个限制。有不少的亚马逊预制的AMI产品目录发布。审阅这些目录,我发现使用Ubuntu、OpenSolaris、Centos,Fedora和许多其他的立即可用的AMIs–总共有1 00多AMI准备外卖。你可以使用亚马逊免费提供的SDK建立自己的AMI,但过程是漫长的。从产品目中选择一个编译好的AMI要容易得多,并且能够按需定做。即使如此,许多可用的AMI,包括具体应用的软件;你完全可以找到一个满足你需要的。

      简单储存服务(S3)。
           亚马逊简单的储存服务(S3)实际上是一个以太网上的大磁盘。严格来说,你需要知道关于它一切的90%。它没有目录和没有文件名-只是一个大空间,你可以储存和提取大小从1byte到5 G B的非结构化数据。

      我们称之为“块”,S3称之为“对象” ,我们称之为“目录 ”,S3 则比方为“桶” 。因此,当你在S3上储存200KB的JPEG格式的图片时,你是把200KB的对象放进水桶。一特定的AWS帐户可以拥有多达100个水桶。水桶能容纳无限数量的块 ,它可以分配给无论是在美国或欧洲的使用者。据推测,这为用户提供了一个本土化的服务,因为桶可在任何地方通过互联网,从亚马逊获得。在美国和在欧洲提供服务的费用差异是微小的;在欧洲提供1000次的网络存取服务,只比在美国贵大约2000美分。

      更深入,你可以把一对象看做是三位一体:关键字,数值,和元数据。关键字是该对象的名称,数值是它的内容,以及元数据是一组描述对象信息的关键字/数值对。 (虽然访问权限也同对象联系在一起,但被视为单独的存储对象) 。对象的名称可以是3至255个字符,亚马逊对命名唯一约束的地方就是,是他们希望不要同网址混淆。因此,一个对象被命名为“ 192.168.12.12 ”是不合要求的。

      而S3的结构实际上是一个平面文件系统, S3的API允许一位能干的程序员在桶内建立明显的子目录。不够理想的是对象名称中必须包含该目录的名称;不过,人为的可以简单修饰对象名称。因此,如果你想要一个动物的目录和蔬菜的目录,你可能有对象关键字,如“动物-猫” , “动物-狗” , “蔬菜-甜菜, ”和“蔬菜-胡萝卜” 。使存储目标的地址前缀参量,你可以限制被检索对象的关键字为动物或蔬菜。 在亚马逊的简单的数据库应该保存更加复杂的数据结构。

      亚马逊的简单数据库服务(SimpleDB)。
            亚马逊S3是专为大型,非结构化的数据块设计, 而SimpleDB是为复杂的,结构化数据建立的。与其他服务一样,这个名称说明了一切。虽然SimpleDB是使用轻量级并且很容易掌握的查询语言实现的数据库,但他支持大部分你可能会需要的数据库操作(搜索,提取,插入,并删去)。为保持SimpleDB简洁,亚马逊遵循一个原则,就是最好的API拥有最低限度的切入点:SimpleDB有七项。

      SimpleDB数据库不是像Oracle或MySQL那样的关系数据库。 (亚马逊的文件指出,如果你确实需要成熟的关系数据库,你可以在弹性计算云中的AMI平台上免费的运行MySQL服务器)。SimpleDB数据库(一个“领域”在SimpleDB说法)由数据项组成,并且数据项目由属性组成。 属性是一个名字/数值对。 最少,数据项必须有ItemName属性,担当数据项的唯一识别符。 当你发送一次查询时,结果是ItemName数值的汇集-获取数据项的实际内容(属性),你使用那些数值作为输入执行Get操作。

      并不是那么简单,SimpleDB拥有令人惊讶的能力。 一个 SimpleDB数据库可以成长到10 GB的和安置多达2.5亿个属性。你可以为某一特定数据项定义多达256个属性,并没有规定在一个域中所有的数据项具有相同的属性。在此外,特定的属性可以有多个值,因此,客户数据库,可以为单一customername属性存储多个别名。

      最后,SimpleDB是专为支持“实时” (快速周转)查询设计。为确保快速查询响应,当数据项被放置在数据库中时,所有属性将自动索引编号。此外,亚马逊的文件显示,查询应在不超过5秒内完成,否则,查询可能会中止。亚马逊这么做是为确保查询收到一个快速反应,即使使查询达到妨碍调用程序的恶意程度。

      亚马逊简单队列服务(SQS)。亚马逊SQS相对于JMS或MQSeries服务体系来说,只是一个简单的消息队列服务。SQS最显著的特征是它的无所不在。一个亚马逊的书籍文献表明: “在互联网的所有计算机不用安装任何软件或特殊防火墙配置就可以增加或读消息”。 当然, SQS信息的处理端很可能就是EC2上的AMIs。

      像亚马逊其他网络服务,SQS名副其实:消息只许是文字,并且长度必须小于8 KB。你可以构建一个具有四个功能的工作队列:createqueue , sendmessage , receivemessage , deletemessage 。 (还有其他方便的功能; 例如,ListQueues将列出现有帐户的的队列) 。

      SQS队列主要设计支持分布式计算机系统之间的工作流,因此,并发管理和故障排除是绝对的。 当客户从队列读一则消息时,那则消息没有被删除; 它被锁定,导致其他客户看不见。 用那个方式,如果消息作为工作流一部分,代表一项具体任务执行,两个客户不可能同时读一消息,并且复制。 然而,如果消息没有在指定的暂停之前被删除,锁就被解除了。 然而,目的是让消息的原始读者指定的工作完全时将消息删除。 如果原始的读者无法完成工作(或许由于系统事故),那么暂停到期,消息在队列中“再现”,并且一个不同的客户能读消息和承担该指定的工作。

  • 相关阅读:
    比较两个NSDate
    关于修改UIWebView的UserAgent
    iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单
    iOS系统自带分享功能
    swift中的协议
    iOS性能优化:Instruments使用实战
    iOS利用HealthKit框架从健康app中获取步数信息
    iOS设备型号
    iOS消息推送机制
    Swift进阶
  • 原文地址:https://www.cnblogs.com/puncha/p/3877021.html
Copyright © 2011-2022 走看看