1.Amazon Web Service
应该可以说,Amazon Web Service目前是云计算领域的领头羊,其业务规模、开发水平和盈利能力在业界内都是首屈一指的。从本科毕业离开学校就一直做Java后端,后来又接触到大型的SOA组件和中间件,现在读研毕业后有幸加入到了AWS开发团队,真是做梦都没想到。在异常复杂的系统、大量资料面前,不敢懈怠,抓住这个学习的好机会学习一下AWS。当然,一来因为刚入职不久了解很浅,二来也没法泄露公司内部的资料,所以本文只能比较全面地简要介绍一下各种流行的AWS服务。
关于参考资料,《Amazon Web Service in Action》是一本还不错的书,但也别指望里面能有什么特别深入的干货,毕竟AWS不是开源的。如果想再深入一些学习的话,可以看看AWS的官方文档以及博客,经常会有些讲到设计思想和开发经验的不错的文章。本文介绍了不少AWS的服务,都比较常见,可以重点关注S3、RDS、EC2、SWF等最为核心的服务。其他像Lambda、IAM、VPC等了解不多,所以一笔带过,还请见谅。虽然整体上介绍的比较浅显,但为了增加些乐趣,会加入一些自己的所见所闻。
2.存储介质与数据库
2.1 EBS (Elastic Block Store) & Instance storage
AWS提供了两种块级别存储(Block-level):EBS和Instance storage。首先,我们为什么需要Block-level的存储呢?有像S3这一种存储不就够了吗?答案是S3不是万能的。块级别存储就是给像MySQL等传统数据库,通过调用操作系统的系统调用与磁盘交互的软件。EBS提供了Network-attached storage(NAS),在AWS中是一种独立于EC2实例的资源。可以单独创建单独付费,然后挂接到某个EC2实例上,提供类似RAID 1级别的备份(数据完全备份到多处)。
而后者Instance storage,则是类似于在EC2实例所在的虚拟机上挂接一个普通的磁盘,所以EC2实例停止或销毁后,存储也就不存在了。因为Instance storage是EC2实例的一部分,所以无需额外付费。其应用场景有:部署缓存软件、用于临时处理和中间结果保存、应用级别有Replication的情况。例如我们使用NoSQL等数据库时,一般情况下都会在Application级别复制,所以就无需使用EBS存储。
因为不管是EBS和Instance storage,同一时刻只能属于一个EC2实例,所以无法实现块级别的数据共享。对于这种情况,AWS提供了一个新的EFS服务(Elastic File System),基于NFSv4(曾经Sun公司的Network File System)。
2.2 S3 (Simple Storage Service)
S3是AWS的主要存储服务,内部