问:有没有在 AWS 当中提供引入 Docker 的技术?
费良宏: 实际上 Docker 的技术在 AWS 的云计算架构里面很早就引入进来,并且提供了商业化的部署支持环境,那目前有一个称之为 ECS 的服务,在这个服务当中呢,Docker 已经被非常好的集成进来,如果大家感兴趣可以尝试一下!
问:AWS 这些服务在大陆都有了吗?
费良宏: 目前在国内市场,在大陆呢,已经有两个 AZ,这两个 AZ 也部署了许多的服务,我这里面提到的基本的架构服务呢,在中国所提供的云计算的服务当中基本上都有,而且据我所知,在今年不断的增加了一些新的服务,所以随着时间的进展,包括云计算市场的普及,我相信在很短的时间内,我们今天谈到的服务以及目前在国外市场上已经成功部署的,大部分的 AWS 的服务都会在中国落地,那目前在中国市场的 AWS 的服务是一个有线预览的这个状况,所以如果大家有兴趣的话呢,可以尝试联系一下 AWS,比如说发邮件,或者打电话致电,那呼吁我们的销售人员跟客户来进行联系,来辅助大家完成有线预览用户的注册,以及资源的申请。
问:关于 IAM?
费良宏: IAM 是 AWS 一个非常基础的服务,这个服务是我们今天谈到的所有云计算这些服务的一个非常基础的部分,他提供了非常强大的用户身份的认证,存取访问的限制,策略的管理,用户决策的分配、设置等,一系列功能,因为今天谈到的架构呢,主要是针对高扩展性的这样一个场景,所以对安全的,或者管理的层次涉及的并不是很多,所以如果大家非常感兴趣,未来我们会专门针对安全的话题,以及这个管理的话题会跟大家分享更多的内容。
问:SOAing 带来的通讯成本和延迟上升?
费良宏: 这是一个普遍的现象,就是随着松耦合的架构的普及和应用,那模块之间,层次之间的通讯的开销势必是这个架构带来的一个负面的,或者是一个反面代价。但是我们要相信一点,就是目前这个架构尽管是有通讯成本和延迟上升的这样的开销,但是相比较来,紧耦合带来的不可扩展,或者说这个复杂的维护成本来说,松耦合目前可以相信它是一个发展的趋势,所以这些问题都可以通过一些新的技术,通过新的架构实践可以解决,我们目前看到在国外的很多成熟的大规模应用的案例当中呢,已经有过很多好的方法去解决这个问题。
如果大家感兴趣,我推荐大家去搜索一下,那在今年年初的时候呢,Netflix 前任的 CTO,他曾经跟我分享过一个案例,在那个分享当中,他就谈到了 Netflix 如何应用这个松耦合架构,利用一些成熟的技术来去解决了这些问题。
问:AWS Kinesis 是一个什么服务?
费良宏: Kinesis 简单来说是一个数据流的服务,它经常被用于比如说作为数据的汇集,作为实时数据的采集,作为这个日志的采集处理等等这样的一个场所里面,它可以提供数据产生压力非常强大的,请求过大的环境下的数据的处理和管理的能力,所以对大型的实时数据分析,或者是数据汇集这样场景,它是非常有价值的。所以在很多场景里面 Kinesis 也经常会和类似像数据仓库产品 Redshift 以及 S3 这样的产品结合在一起,构建一个完整的数据分析的这样的一个平台。
问:AWS Lambda 产品?
费良宏: 那 AWS Lambda 是一个比较新的产品,就是在今年年初的时候新发布的一个产品,那这款产品它非常有意思,它的设计简单来说就是一个基于事件驱动的这样一个平台,简单解释一下,就是我们可以设定一些 Triger,这个 Triger 可能是在这个 S3 当中保存的某一个文件,或者是某一个特定条件满足了之后,就去自动执行的某一段代码,这段代码可以 是 JavaScript ,也可以是 Java 去开发的一块代码块,那我简单跟大家介绍一个场景可以让大家更好的理解如何去使用 Lambda,比如说有的客户呢,他在 S3 当中保存了一幅照片,但是他想去生成,自动的去生成一个缩略图,所以他就设定了一个规则,在 S3 当中如果出现了一个新的文件图片的时候呢,就会自动去触发一段代码,这段代码就会基于 S3 当中的原始文件生成一个缩略图,并且自动的保存在 S3 当中去,那这个过程是完全自动化的过程,是基于事件出发的,那这个平台就是 Lambda 平台,希望大家对这样的一个场景的理解可以帮助我们更好的了解 Lambda 的产品。
问:豆瓣的 BeansDB 和 DynamoDB ?
费良宏: DynamoDB 是一个非常成熟的 NoSQL 的产品,同时在市场当中,目前我们看到了大量的各种不同名称的,各种不同应用场景的 NoSQL 的产品,这个产品各有其优缺点,这个我就不逐一点评了,但是我希望吸引大家注意的是,DynamoDB
它是一个非常成熟的产品,它商用化的使用的时间已经蛮久,而且 DynamoDB 最早一次被大家知道是 2003 年当时基于 DynamoDB 这篇论文当中,正是那篇论文出现引发了整个数据库行业的重新洗牌,很多的产品就是基于那篇论文才不断的创立出来,所以 DynamoDB 对整个 NoSQL 推动有一个毋庸置疑的一个巨大的影响力,而且从今天的实践来看,DynamoDB 在全球范围内,在众多的大型的应用架构里面都发挥了非常重要的作用,这方面大家可以再参考一下在亚马逊官方网站上面的一些用户案例里面,可以找到大量的使用 DynamoDB 的一些案例。
问:Cognito 和 IAM 之间的关系?
费良宏: Cognito 和 IAM 之间呢,是面向不同的场景提供的服务,IAM 大家知道,它是面向一个身份的管理,面向用户访问权限策略管理,用户决策管理这样的一个基本的功能,那 IAM 它针对场景是面向移动应用,那面向移动应用用户管理呢,它提供了这样几个特定的场景,一个是对于第三方用户身份验证的服务商的集成,比如说 Googleglass、Facebook、Twitter、ARM 总,或者是自定义的这些身份认证的提供者的集成,第二类功能呢,就是它的数据同步的能力,所以简单来说,Cognito 跟 IAM 是应用场景不大一样,IAM 是面向移动应用的用户身份验证以及数据同步,而 IAM 是面向整个 AWS 云计算架构的基础的用户身份管理的这样一个平台,所以这两个有很大的差别,然后在使用当中呢,英文 Cognito 有大量的去依赖于 IAM 去创建的用户脚色,创建的规则,以及 STS 服务等等,去实现我们细力度的用户资源访问的这样的一个限制。
问:AWS 在中国的商用时间表?
费良宏: 这个 AWS 目前在中国已经提供了一些预览服务,所以如果大家感兴趣的话,可以联系 AWS 的销售,或者相关的人员,会有销售会帮助大家去完成有线预览的用户的注册。
问:如何榨取 EC2,把它性能发挥到极至?
费良宏: 榨取它更多的性能,我非常推荐大家呢,去在网上搜索一篇文章,非常抱歉,我现在不太方便给大家找到那个链接,应该是搜索一下可以看到,在去年年底 AWS 在美国拉斯维加斯举办的 2014 年 AWS re:Invent 大会上,专门有一个话题就是请到了 Netflix 的工作人员去分享了一个 AWS EC2 实力优化的一介绍,这个介绍呢,在互联网上能够看到它的 PDF 的版本,甚至有视频可以被大家分享到,那篇文档当中,以及视频当中包含了非常细节的,非常好的,如何对于 Linux kernel 及其相关参数进行优化,也有榨取 EC2 实力的性能的分享,我觉得那篇文章,以及相关内容呢,可以回答大家的问题了。
问:Kinesis 能分析 CDN 日志吗?
费良宏: Kinesis 其实并不做分析工作的,如果跟 CDN 的日志结合起来是这样一个场景,简单来描述起来就是,CDN 的日志然后通过相关的程序,或者一些其他的开源的项目等,比如说 Kinesis 等等,将这些日志呢,汇入到英文里面,那英文本身呢,它会有长达最多有 24 小时的一个缓存的这样的机制,那这些数据呢,通过 Kinesis 会被保存起来缓存起来形成一个数据流,然后呢,我们会将这些数据流呢,比如说指向到我们的英文 Kinesis 里面,英文就是 AWS 的另外一个数据仓库产品,也可以将这些数据呢,直接存储到 EMR,就是 AWS 的一个 Hadoop 机群里面,然后利用这个 Hadoop 机群,或者是 Kinesis 处理能力来对这个事进行处理,所以呢,Kinesis 并不是直接用于日志分析,它可以跟其他的日志分析的工具软件集成在一起,形成一个自动化的,高吞吐量的时时的这样的一个日志,或者数据处理的一个架构。
问:OpenStack 的发展?
费良宏: OpenStack 其实更多的是应用在混合云,或者说私有云的环境里面,它跟 AWS 提供的服务定位有很大的差异,而且 OpenStack 它实际上是很多不同的服务、产品、项目的集成的这样的一个平台,那 AWS 是由亚马逊公司来去开发、运营、管理、维护的这样的一个公有云的平台,所以这两者之间有很大的差异性,但是我相信随着云计算的不断发展和普及呢,技术之间是互相参考和借鉴,所以任何一些好的经验都会在未来的不同的产品上都会有所体现,所以我期待着在 OpenStack,或者 AWS 在未来的产品技术发展当中了,能有更好的产品不断的推出来。
问:中国地区的 AWS 服务和其他区域有什么区别呢?
费良宏: 关于这个问题是这样,就是中国地区的 AWS,它的帐户是独立的帐户,在中国之外是一个 Global 帐户,而中国区域有自己的帐户,这是一个很大的不同,那另外呢,在中国区域目前所上线的服务的数量呢,只是全球一个服务的子集,当然这个随着时间的发展,有不断多的 AWS 的服务逐渐的会在中国的这个可用区里面去部署,因为我们已经看到了在今年以来已经有很多新的服务成功上线了,那我相信在接下来的时间里面有更多的服务和产品,也会逐步面向中国市场提供服务。
问:在尝试转用 SAAS 应用,在权限处理上遇到瓶颈?
费良宏: 实际上 AWS 提供的数据库的服务,大家知道它的名称叫做 RDS 服务,就是关系数据库服务,这些关系数据库的服务实际上是由若干个不同的数据库服务器产品的一个集合,这里面包括了 SQLServer,Oracle,MySQL,Postgresql 等等,以及 ARM 总自己开发的英文的新型的关系数据库平台,那这些产品除了英文之外,英文目前还是一个预览的版本,那其他产品都是一个商业化的使用的一个状况了,那些产品它的数据库优化完全是基于我们目前所使用的标准的产品的优化策略,或者优化引擎,所以这个在 AWS 上面基于数据库的 SQL 的引擎来说,并没有和其他产品有特别特殊的地方。
问:Log server,有人问到说,有没有 Log Server 这样的服务?
费良宏: 其实在 AWS 的很多服务里面都会有相关的日志处理,但是不同的资源服务,他们的日志是不大一样的,所以一种方法呢,可以考虑直接将不同的服务的日志汇集起来来进行统一的管理,一个常见的方法是可以将这些日志存储到 S3 里面,或者是存储到 Redshift 里面,另外呢,也有人使用让日志保存到 Elasticsearch 里面进行全文检索,甚至呢,可以将日志放入 EMR 当中做一些汇总,加工,做一些处理,那除了这些之外,除了传统的这些操作系统,或者是这个服务的日志之外,也可以通过 AWS CloudWatch,CloudWatch 是 AWS 一个托管的监管的服务,CloudWatch 本身也会产生很多日志,这个可以按照我们的定义,然后这些日志也可以按照刚才谈的思路保存到 S3 里面,保存到 Redshift 里面,这里面有很多具体的实现的策略技巧等等,这些方面在网上也有一些文章,包括在 AWS 的官方文档里面也有一些这样的介绍,所以大家可以参考。
问:SQS 和 SNS,Lambda 这三个消息服务应用场景是什么,有没有区别?
费良宏: 这三种服务,它都是一种面向消息也好,面向事件的一种服务,但是他们的用场景有很多的不同,但是在具体功能实现当中呢,大家可能会感觉在某一些场景下,使用到这个 SNS 也好,SQS 也好,或者是 Lambda 都可以达到同样的一个效果,这里面会有些细微的差别,简单来说 SQS 是一个消息队列,它跟我们其他的常见的消息队列都非常的类似,那 SNS 它更多的是一种通知服务,比如说在移动应用里面的,我们应常会用到的,消息推送,它是那样一种场景,当然在 SNS 提供的并不仅仅是面向移动的通知服务,它甚至可以去远程的去触发一个 HTTP 的一个 URL,所以它可以做得更灵活一些,Lambda 它是设计之初,它的目标主要就是针对一个事件驱动的平台,所以有人将它用在很多不同的领域里面,甚至有人将 Lambda 一些数据的采集 LT 的应用结合在一起,一般来讲,这些应用场景并没有一些固定的,或者是固化的用法,完全取决于真实的需求,以及实现起来这种成本,或者是性能上具体的考虑,所以这方面,我不建议大家是太多的局限,而是更多的是做一些尝试,或者更好的评估来选择最适合你的产品。
问:有人问说这个 AWS 有现成的数据集权限管理的组件吗?
费良宏: 我不太清楚你说的数据集是指哪一种,因为在 AWS 的面向数据的产品有很多,管理上也有很多的差别,比如说 RDS 这个服务,就是与我们现在大比较熟悉的,这些关系数据库的管理是完全一致的,但是像 S3 也好,DynamoDB 也好,那他们又有一套完全不同的管理的方式和方法,所以这方面的差别是非常大的,首先我觉得你要是考虑这种管理的组件呢,首先就要明确好你的应用场景,以及选用的具体的服务,然后再结合使用的具体的服务呢,去看一看,那目前这些服务所提供的数据库级别的权限管理能不能满足你的需要。
问:那海量的图片文件适合存储在什么组件上才能做到成本最低?
费良宏: 我们看到的大量例子里面,都是使用到 S3,S3 是作为一个海量文件存储的一个非常好的一个载体。
问:亿级的系统,系统架构是一步到位,还是按照刚才介绍内容逐步发展?
费良宏: 其实这个并没有一个标准答案,因为我们这个成长的发展的速度并不太一致,这里面就要考虑到你的成本,还有你的复杂性,所以我觉得我看到的很多这个优秀的系统,或者架构,他们的发展轨迹都是这样,在开始之初呢,他就会考虑到未来发展的一种可能性,所以它的架构里面预留了很多发展的空间,甚至在一些设计的原则上面,比如说松耦合,分层,分模块的想法上面就有了足够多的一个余量,那随着业务的不断发展,压力的不断提升,甚至覆盖的范围不断的扩展,那他们结合了这样大量的实践经验之后,就实现了很好的多 AZ,多地区 Region,甚至全球架构这样的部署的实现,那我的建议是这样,就是从开始之初,你就要考虑到未来的一种可能性,所以你的架构设计为未来留出足够的余量,那随着业务的发展,然后逐步的去增加新的组件新的模块,以及引入新的服务,这样才能够很好的在成本和功能之间做到一个完美的平衡。
问:有人问说 ELB 和 Nginx 哪家强?
费良宏: Nginx 大家用作为服务反向代理,这个服务已经用很久了,而且 Nginx 的口碑也非常好,在很多项目当中得到应用,但是毕竟它是一个开源项目,它并不是一个托管的服务,而 ELB 是一个非常成熟的,由亚马逊托管的服务,所以在选择上,或者对比上就有很大的一个差异,如果对一个开发者,或者一个架构师,或者是一个项目的规划人员来讲,如果你需要一个成熟的应用,你需要简单可靠的去将你的应用部署上来,实现负载均衡,那么推荐大家使用 ELB,如果你对成本会非常的计较,你觉得自己的管理,动手能力也非常强的话,你不妨使用 Nginx 的反向代理的功能去实现这种负载均衡,当然这种选择也非常多,甚至你可以考虑别的开源的项目等等,有很多的经验都给大家去借鉴。
问:不同云服务商之间的迁移如何规划呢?在云应用架构设计里是否需要有所保留,少使用云,服务商个性化服务功能呢?
费良宏: 这点我有不同的看法在于说,那云计算本身代表了一个趋势,所以我们尽早的去拥抱云计算,会给你带来很多这个有前瞻性的辅助的功效,但是对于云计算来说,如果你过多的考虑了在云计算厂商之间的迁移,而放弃了云计算平台所带来的那些卓越的,成熟的,更好的特点,那我觉得等于某种意义上,就放弃了或者主动的拒绝掉了那些最有优势的地方,而且你将回归到那种你需要大量的自行维护管理建设的那样的工作。所以我感觉这种思路呢是跟云计算背道而驰的,但究竟在选择道路上如何去平衡,哪些使用云计算的服务,哪些使用自行搭建的服务,这些并没有一定之规,更多的是结合我们自己的需求,但是从长远来看,我感觉在整体的市场,对于云计算厂商所提供的那种非常有特色的服务的任何程度是慢慢越来越高的。
问:ELB 是不是仅仅针对 HTTP 协议?
费良宏: ELB 是个负载均衡,简单的来解释,它是基于我们所指定的端口来进行一种转发,所以它不仅仅局是局限于这个 HTTP 协议,当然从实际应用场景来说呢,我们看到很多的应用场景都是基于 HTTP 协议的,但是也有一些场景里面是基于其他的一些协议,针对其他的一些端口,所以只要是针对 HTTP 端口这种应用场景里面都可以使用 ELB 来进行这个负载均衡。
问:怎样把 Web Server 放到 VPC 的私有子网里面?
费良宏: 其实这个问题我不太理解你的场景,为什么要把 Web Server 是放到私有子网里面?那它并不是面向公众客户提供服务吗?还是说你有特定的一个服务应用需要部署到私有子网里面?我们把一个 EC2 上的一个 Web Server 放到私有之网里面,或者公有子网里面,这个并没有特别的局限,你完全可以规划一个 VPC,然后把它设定为是私有,或者公有的,是不是对外暴露,或者是隐藏在内网里面,然后在 VPC 里面去部署你的实例就可以达到这个效果,这个其实问题我不是特别理解你的问题在哪里。
关于本次在线课堂的视频录播和 PPT 资料,请点击这里。
感谢 Raymond 对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。
评论