本篇文章4760字,读完约12分钟

无服务器无服务器架构是一个新事物。它出现才两年,目前还没有公认的权威定义。亚马逊在2014年正式发布了无服务器服务lambda。经过近两年的酝酿,谷歌、微软和阿里也在2016年推出了自己的相关服务。

据业内人士称,无服务器代表了软件设计的一种新范式,这也可能颠覆我们对云的普遍理解。在这个辛勤工作的开放课堂上,雷锋邀请了“醒目”的创始人兼总设计师龚来谈论什么是无服务器服务以及它是如何发展的。

引人注目的是一个自助式网站建设平台,它提供模板、设计资源、编辑器等。它可以在短时间内建立自己的网站并提供托管服务。这是从yc孵化出来的第一家国内初创公司,主要帮助不了解技术但需要建立网站的用户。

龚,引人注目的创始团队成员和第一工程师。毕业于复旦大学计算机科学学院,曾在摩根士丹利的企业基础设施部门工作,后来引人注目地加入。在2013年引人注目地加入后,他从事产品工作,进行操作和维护自动化,学习网络分析和搜索引擎优化,并进行数据分析。目前,他负责后端开发、系统运行维护和数据分析部门的项目研发和团队管理。

详解Serverless服务 它会颠覆你对云的理解

下面是雷锋组织的公开课的主要内容。要了解更完整的内容,你可以观看雷锋公开课的视频。(公开号码:雷锋。com)以上:

我们从2014年开始使用aws。2014年,亚马逊发布了无服务器服务。当时,这仍然是一个颠覆性的想法,很少有人使用它。去年年初,我们还在系统中引入了无服务器。

那么什么是无服务器服务呢?早期的互联网应用依赖传统的国际数据中心作为系统架构。专业的操作和维护人员应管理计算资源,并应严格评估和预测系统负载,以便有时间购买新服务器。后来,虚拟化技术提高了灵活性,计算资源所有者可以打包资源并根据其使用时间收费,这催生了iaas服务。

Iaas在系统的可扩展性和成本控制方面发挥着重要作用,但虚拟化对初创公司来说还不够。因此,云平台在虚拟化的基础上被进一步抽象,使得开发者只关注应用逻辑,而不考虑服务器配置和应用部署,这被称为paas。

然而,尽管它简化了系统的复杂性以及开发和应用的迭代速度,paas仍然需要调整计算资源的数量以适应系统的变化。如果计算资源可以随着系统的变化而自动扩展,会怎么样?这就是无服务器诞生的原因。

无服务器不是没有服务器。无服务器和传统计算服务的区别主要包括:

粒度计算资源分配;

基本上没有必要提前计划计算资源;

高度灵活和可扩展;

按需使用,根据使用情况付费。

然而,这些也可能是云计算的特点,真正的区别就像上图中的比喻。从自己打井、装缸到随时使用自来水,无服务器就像一个水龙头,将服务的灵活性发挥到了极致,其本质就是最好的云平台服务形式。

毫无疑问,行业最前沿的无服务器制造商是亚马逊aws,该公司自2006年以来一直提供云计算服务,这一领先地位一直延续至今。微软azure和阿里巴巴云也推出了无服务器服务。

为什么aws应该无服务器开发?事实上,用户对云的便利性和灵活性有越来越高的要求,所以无服务器是一个必然的趋势,即使它不是aws,其他制造商也会提出它。下图显示了awsserverless服务的发布时间表。

也许最著名的是lambda,但是无服务器包括所有方面。例如,s3是典型的无服务器服务,它根据存储的数据量和访问次数收费。

值得注意的一点是,aws在2014年发布了lambda,但是无服务器在近两年后逐渐吸引了人们的注意。这是因为容器技术刚刚成为2014年的焦点,无服务器太前卫了。所有的云供应商都不知道如何开发它,生态也不成熟。项目实施中还存在许多问题。

Aws已经花了一年多的时间推广无服务器,相关工具也已经开发出来,这让一些用户尝到了甜头。这也导致其他制造商在2016年跟进并推出服务。Aws还将lambda扩展到其他服务,如物联网和大规模数据传输,而其他供应商正在迎头赶上。

谷歌云平台在2008年发布应用引擎时进入了云服务。目前,其无服务器服务云功能仍处于试验阶段。微软的azure Cloud和阿里巴巴的Cloud也在2016年发布了azure功能和功能计算,两者都在试用中。

无服务器看起来像什么?接下来,它介绍了几种典型的无服务器服务以及如何构建实用的解决方案。

下图将aws服务分为三类。首先,直接基于ec2构建服务。第二种类型是托管服务,它不需要管理底层虚拟机,只需要配置资源大小,它会自动分配资源。托管服务在云供应商之间有很大不同,它们也是竞争对手。第三类是无服务器服务,完全由aws托管。它甚至不需要提前分配计算资源,也不需要考虑实现弹性伸缩。

代表性的无服务器服务如下。

一个是λ

这是一个事件驱动的无服务器服务。首先,它不需要管理服务器和抽象计算资源;第二,受事件驱动,它可以自动扩展计算能力;第三,实现了成本控制,计时可以精确到4秒。

如何使用lambda?一种是将现有代码打包成lambda函数;第二是选择计算单元的大小。aws提供了一个单一且独特的指示器。它只需要选择运行时所需的内存大小来自动适应gpu、i/o等。;第三,代码被打包并上传到aws;第四是指定事件的触发模式,例如来自api的请求和来自sns的消息,它们具有与其他服务交互的能力。

使用lambda时应注意:

它是一个无状态的计算模型,因此有必要避免在运行过程中安装代码依赖;

第二,它的实现机制有一个流量预测算法,但是没有流量就无法预测,所以在一段时间没有执行后重启时会有延迟,所以冷启动应该酌情避免;

第三,需要合理使用内置版本和别名机制;

第四,正确编译平台相关代码。

Dynamodb是aws中的分布式nosql数据库服务。它的主要特点是:完全由aws托管,无需任何设置就能获得快速稳定的读写。存储空也将随着数据量的增加而增加。它也支持lambda,所以它也支持像每一项数据一样的访问控制。

曙光

它是一个与aws第三方接口兼容的关系数据库服务,目前仍处于预览阶段。这似乎是因为传统的数据库解决方案不是为云平台设计的,需要用云思维重新定义。

Aws引入soa概念,重建数据库引擎,将传统的数据组件分解成独立的模块,并通过自身云平台中的现有服务实现这些服务模块。这使用户不必担心数据库升级和容量扩展的问题。

如上所示,整个数据库服务分为数据层和控制层。控制层通过dynamodb存储元数据,路由53提供服务发现,swf负责soa中的工作协调。在数据层,使用可靠性强的s3实现数据的高可用性存储。

Aws还通过共享存储实现了读写分离和高可用性,能够满足大多数用户对数据库的需求。奥罗拉的价格几乎接近开源数据库,只有高端商业数据库的十分之一。

下图显示了aurora(蓝色)和mysql(绿色和红色)数据库在读写方面的性能比较。

总的来说,它在经济成本、管理成本和实用价值方面都超过了传统的数据库。

无服务器设计模式的经典三层web应用程序

典型的web应用程序通常分为动态和静态资源。在设计中,s3可以用作静态资源的存储,而cloudfront的cdn可以用来加速服务。动态动态数据库作为网站数据存储,前端静态页面调度通过api网关和lambda实现。整个体系结构中使用了无服务器服务。

您还可以设计更复杂的体系结构,如下图所示:

静态部分仍然是s3和cloudfront,但是添加了高级功能。Iam支持被添加到动态部分,流控制和认证被添加到api网关层。你也可以加入防火墙服务。

然而,在无服务器架构中有太多的组件。如果api有几十个甚至几百个节点,那么lambda函数就太多了,手工管理会很不方便。因此,亚马逊也推出了相应的解决方案,山姆。下图:

Aws cloudformation是亚马逊专门用来配置和管理计算资源的服务。sam是AWS Cloud Formation的一个子集,它可以用来打包整个架构设计,同时自动打包和配置所有内容,以实现自动化。

数据批处理

数据批量处理的许多逻辑可以分解为合理的映射约简操作。但是,Amazon lambda提供的想法是将原始数据存储在云中,然后定义三个lambda函数:filter(将输入数据分配给多个映射器)、maper(执行映射逻辑并将映射结果存储在dynamodb中)和reducer(处理映射逻辑并将最终结果存储在s3中)。由于s3和dynamodb的事件可以触发lambda函数的执行,整个过程可以完全自动完成并自动缩放。此外,因为起点和终点都是s3,所以多个地图缩减逻辑可以串联连接以形成更复杂的处理模型。

详解Serverless服务 它会颠覆你对云的理解

数据流处理驱动是亚马逊的数据流处理品牌。下图是一个简化的处理系统,s3和lambda数据流分两步收集。

第一步是用lambda实现初步处理器流处理器,它将在处理流数据后在s3上保存结果。其次,lambda函数由cloudwatch计时器函数周期性地触发,中间结果被进一步处理,最终结果被存储在s3上。为了提高效率,第二步中的lambda是一个任务分配器,它可以触发多个lambda函数来处理数据,并同时处理多个s3中的中间结果对象。

这里有一个潜在的危险,它来自lambda和motis集成方案之间的技术差异。当两者对接时,前者的并行能力将受到后者的并行能力的限制。同时运行的流处理器的数量不能超过驱动数据流分配的数据,这将导致数据流的推积。

解决方案是,如果瓶颈在于对接驱动的lambda函数,它可以缩短函数的执行时间。具体来说,lambda函数不负责特定的数据处理,但是应该把它交给更多的lambda并行处理。由于从lambda函数触发其他lambda函数没有并行限制,它可以立即处理来自驱动的数据。

无服务器的优点和缺点无服务器的优点已经提到,现在我们将讨论它的问题和挑战。一般来说,一些传统的发达技术和经验是不适用的。

首先,服务的细粒度增加了开发大规模应用的难度。传统的web应用程序可以管理数百个API,但是在无服务器环境下,开发人员需要有足够的管理能力来处理它们。

其次,无服务器只能选择云供应商支持的特定技术堆栈,这对于代码行为有一定的限制。

建立本地开发环境困难,调试不方便。目前,有些人使用docker在本地模拟运行环境,这值得一试,但不能完全接近生产环境。

应用安全模型还不够成熟,测试如何实现加密、认证和权限管理需要时间。

无服务器的意义对于开发工程师来说,无服务器是一个新的职业发展机会。它不会完全取代现有的传统开发和部署模式,但它肯定会在某些领域大放异彩。它还降低了开发高度并发应用程序的门槛,并且可以实现应用程序的高可伸缩性和高可用性。

对于运维工程师来说,我们可以清楚地了解云计算时代系统运维行业的危机。云计算的一个发展趋势是云供应商将他们在架构、操作和维护实践中的经验产品化并提供给用户。它们的共同特点是越来越不依赖操作和维护,开发工程师可以独立完成系统部署。

但是,这个行业的发展方向是重视发展,做到运行维护自动化。无服务器还为希望转向自动化操作和维护的工程师提供职业发展机会,并可以使用无服务器的新操作和维护逻辑来完成操作和维护自动化。

对于首席技术官和架构师来说,无服务器有助于理解全新的体系结构设计思想,用无服务器实现部分系统体系结构,提供开发和运行效率,以低成本实现可扩展性和可用性。

对于首席执行官和产品经理来说,了解无服务器有助于判断一个产品特性是否适合快速实施这项服务。

对于学生来说,学习更新的知识总是正确的。学习无服务器可以帮助他们理解新的软件设计模式,并为他们的职业发展做准备

可以说,无服务器代表了一种全新的软件设计范式,需要一种新的方式来看待云计算,它颠覆了对云的理解。

雷锋原创文章。严禁擅自转载。详情请参考转载说明。

来源:搜狐微门户

标题:详解Serverless服务 它会颠覆你对云的理解

地址:http://www.shwmhw.com/shxw/59994.html