您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>数值算法/人工智能>

详解Serverless架构及应用

大小:0.3 MB 人气: 2017-09-28 需要积分:1

  一、直接使用物理设备:

  开发者将应用程序开发测试完毕后,直接将程序和相关软件部署在物理设备上。服务器直接使用物理机。直接使用物理设备部署应用程序不可避免地需要大量人工运维和重复劳动。比方说,用户数量逐渐增长时,我们需要扩容物理设备以应对更高的网站访问压力。

  这时候我们需要购置更多的物理服务器,并且搬运到机房的对应机架机柜中。然后,我们需要手动为新购置的物理服务器安装各种运行软件,填写好配置文件,手动部署启动好需要运行的应用程序。这些大量的重复运维劳动造成产品上线慢,迭代周期长。其次,使用物理设备直接部署应用程序将导致资源浪费。如今的物理服务器的配置越来越强大,64核128G在今天看来也不过是普通配置。很难想象你买了一台32核的物理机,却只想搭建个人博客。此外,电商行业经常为了应对促销秒杀等活动准备大量的物理资源,然而在非促销等流量低谷时段,大量物理资源处理闲置状态,不利于节约成本。

  最后,为了解决资源浪费的问题,我们很容易想到,可以将多个应用程序部署在同一台服务器上来充分利用资源。但由此又导致了新的麻烦,不同的应用程序经常会抢占CPU,磁盘IO,内存,难以做到隔离资源,各行其是,互不干扰。

  二、IaaS托管硬件

  虚拟化技术的成熟直接解决了上述直接使用物理设备的几个痛点。

  首先,使用IaaS平台,服务器由物理机变成了虚拟机。申请服务器资源仅需要调用IaaS平台的API或者点击控制台页面就可以轻松完成。CPU个数,内存大小,网络带宽,存储磁盘大小都可以按需指定,随心所欲。虚拟机被玩坏了也不需要重装系统修复,删除重建新虚拟机即可。扩容服务器不再需要大量的重复人工运维劳动,加速了产品上线和迭代。

  其次,使用IaaS平台一定程度上减轻了资源浪费。在IaaS平台上很容易得申请和删除虚拟机,升降带宽配置等操作,这样当业务低谷时段直接删除多余的虚拟机,降低带宽购买配额,就能节约不少成本。

  最后,IaaS平台解决了资源隔离的问题。不同虚拟机之前有独立CPU,内存,磁盘,网卡,不同虚拟机之前的程序不会进行资源抢占。

  然而,IaaS平台仅仅为开发者做好了硬件托管的工作。开发者依然需要为虚拟机安装操作系统和各种软件,填写配置并部署应用;依然需要关注服务器,带宽,存储等资源的使用量和扩容缩容。此外,IaaS平台没有完全解决资源浪费的问题,实际上,大量虚拟机在日常运行中依然存在超低负载运行的情况。

  三、 PaaS托管应用

  使用PaaS平台,开发者无需关注服务器的申请采购、系统安装和资源容量。PaaS服务提供商为开发者提供好了操作系统和开发环境以及支持的SDK和API,还能自动调整资源来帮助应用服务更好的应对突发流量。有了PaaS平台,开发者仅仅需要把应用开发好,然后在PaaS平台完成服务部署,应用服务即可上线。

  相比IaaS平台,PaaS平台能更加精准的为应用程序所消耗的资源计费。IaaS平台仅仅依据用户申请的资源量,如CPU核心数,网络带宽来计费,而不关注用户是否实际真正充分使用了其所申请到的资源。PaaS平台则可以通过统计应用程序所占用的CPU使用率和内存使用率来做的更精准的计费,甚至可以实现应用层面的计费,比如服务响应时间,或者应用所消耗的事务。

  什么是Serverless?

  详解Serverless架构及应用

  图1:互联网应用传统架构的模型和Serverless架构模型

  Serverless指的是由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发, 完全被第三方管理,其业务层面的状态则被开发者使用的数据库和存储资源所记录。

  以上图1为例,图中上半部分描述的是互联网应用传统架构的模型:用户客户端APP与部署在服务器端的常驻进程通信,服务端进程处理该应用的大部分业务逻辑流程。下半部分则描述了Serverless架构模型。与传统架构模型最大的不同在于,互联网应用的大部分业务逻辑流程被转移到客户端上,客户端通过调用第三方服务接口来完成诸如登录,鉴权,读取数据库等通用业务场景;高度定制化的业务逻辑则通过调用第三方FaaS平台执行自定义代码来完成。总体上看,Serverless架构将传统架构中的服务器端的整串总体流程拆分成在客户端上执行一个个第三方服务调用或FaaS调用。

  回顾之前所述,无论是直接使用物理服务器设备部署程序,还是基于IaaS平台托管硬件,或者使用PaaS平台托管应用,开发部署互联网应用都离不开传统的客户端-服务器模式,即客户端向服务端发送请求,服务器运行处理各种业务逻辑,并响应来自客户端的请求。至于物理机,IaaS乃至PaaS,归根结底只是服务器程序的部署模式不同。

  而在Serverless架构中,软件开发者和运维工程师们不在需要关心服务器的部署,架设,伸缩,这些问题交给云平台商来解决,程序员们得以将精力投入用代码来实现业务逻辑中,而不是管理服务器。Serverless并不意味着不再需要服务器了,只是服务器资源的申请,使用,调度伸缩由云服务商自动实现,应用开发者无需关心。

  Serverless如何工作?

  以一个简单需求为例,论坛网站需要对用户上传的图片生成一个缩略图。

  我们使用我们自研的通用计算(UGC)来实现该功能。

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!