4000-9696-28

下一代技术架构之serverless

2023年02月09日 16:31供稿中心:北大青鸟总部

摘要: 现在各大云厂商如AWS、阿里云、腾讯云都在投入重大精力去做serverless(无服务器)服务,云计算正在经历从IAAS—>PAAS—>SAAS—>BAAS&FAAS的过渡。什么是serverless?今天小编带大家体验一波新技术。

当前在互联网圈最如火如荼、大家干的热火朝天、呼声最高的事情莫过于微服务、上云了。

传统的企业在嘟囔着数字化转型,要将以前的单体式应用进行微服务化,要将自建的数据中心迁移到云厂商提供的云服务上(私有云或混合云)。然而这波未平、下波技术热潮又来了,现在各大云厂商如AWS、阿里云、腾讯云都在投入重大精力去做serverless(无服务器)服务,云计算正在经历从IAAS—>PAAS—>SAAS—>BAAS&FAAS的过渡。

那么什么是serverless?它的核心技术包含什么?具体又如何使用呢?今天小编带大家体验一波新技术。


什么是serverless?

关于serverless的定义,目前主要是引用MartinFowler在《serverlessArchitectures》中的定义,即充分与第三方协同、基于云的服务与应用,serverlesswas first used to describe applications that significantly or fullyincorporate third-party, cloud— hosted applications and services,to manage server-side logic andstate。简单一点,望文生义,就是无服务器。这样的解释可能难以理解与消化,那么我们结合一个用户请求如何运行的来给大家讲解一下。

常见的web服务架构如下,由用户在客户端发起一个请求,经过服务器处理,期间调用数据库等进行数据的存储与运算,最后返回给客户端结果,呈现给用户。



如果我们拆分的再细一些,客户端往服务器发送请求时,会需要身份认证、安全校验、负载均衡等,最后才是业务函数进行业务逻辑的处理,那么上图就有了新的方式。



在这个结构下我们看到的是一堆函数,已经看不到服务器了,研发人员只需要关心应用程序本身的逻辑实现和状态,对于服务器的管理、服务之间的通信等全交由云厂商来完成。这就是serverless无服务器的由来。

serverless是在容器技术(docker)、微服务技术(servermesh)的技术上发展起来的,强调的是后端服务与服务器函数服务的结合与提供,它有两大核心技术:BAAS(backendas a service)、FAAS(functionas a service)。


核心技术讲解

FAAS函数即服务,即不需要管理服务器系统,不需要自己编写服务器应用程序,就可以直接运行后端代码。比如文件存储、数据存储、推送服务等,可通过API驱动、邮件驱动、消息队列驱动。

BAAS后端即服务,即不用编写、管理服务端软件(如负载均衡、服务注册等),使用通用的远程组件来提供服务。相当于在微服务架构中的常用组件如服务注册中心eureka、服务网关zuul、服务配置中心zookeeper等的功能全由云厂商打包在一起提供了,不需要开发者再去维护这些组件与服务之间的调用关系。


使用serveless实现helloworld?

学习任何一门语言的第一课永远都是helloworld,今天我们在腾讯云提供的云函数上来进行servelss的第一个课—helloworld。注册登录腾讯云后,选择新建函数,输入名为helloworld的PHP函数,选择使用模板函数即可。



点击下一步即可看到整个函数的index.php代码



点击运行,即可看到整个函数的执行结果、执行时间、运行内存、运行时间、整个的执行日志。



在这个过程中,除了业务代码hello.world的执行之外,其余的事情我们什么都没有做,对不对?与后端的通信、服务器资源的管理等全都不用我们管,真正的实现了无服务器。我们也可通过看时机中的PHP函数是如何运行的来感知serverless的无服务器服务。

对于一个PHP应用来说,当用户在前端发起请求之后,请求会传递到web服务器apache或nginx来接收用户请求,接收用户请求之后再传递给PHP-FGM解析器进行业务逻辑的处理,获取结果后生成html数据返回给用户。



而采用了serverless服务之后,对于服务器的管理这块全交由云厂商来进行维护了,云函数的执行环境实例就是Apache/Nginx。



在本次helloworld的执行代码中,main_handler函数的传入参数context便是提供了执行环境的上下文,而event就是驱动的事件。


虽然serverless简化了整体的开发流程,但是也会存在一些问题,典型的问题有两个。

1)调试不方便,因为太多的基础服务都是云厂商提供的,在本地可能会因为内网限制等原因导致调试不方便,太过于依赖云厂商也导致想做迁移时也不方便。

2)冷启动,刚刚提到serverless都是事件驱动型的,也就是说一般情况下都处于睡眠状态,启动时间至少也要几百毫秒或几秒。对于有些业务来说,是不可忍受的。不过云厂商也在想办法解决这些问题。


回过头来看看,技术架构的演变经历了从早期的单体式架构、SOA架构、微服务架构,再到serverless无服务架构的阶段,整个发展和人类经济的发展史也很像。

早期的时候生存生活的每件事情都自己做,比如小编今年想吃土豆,那必须从春天开始耕种,然后施肥、锄草,再到秋天收获,存储粮仓,到年末时做成土豆大餐,这和单体式架构完全承担了应用程序的每个功能是一样的。

随着社会的发展,小编发现这样的模式太累了,想吃玉米或者红薯了也还得自己去播种耕耘,于是他就和隔壁种玉米的小A、种红薯的小B商量,等到秋收成熟时,通过土豆去换他们的玉米、红薯,到年末时,一顿美味的大餐就做成了,土豆玉米红薯全都有,这和SOA架构的核心原理是一样的。整个业务拆分成了多个服务,服务之间彼此合作,提升了业务的可用性和效率。

经过了改革开放后,整个国家的经济像火箭一般的发展,小编也不再满足于年末的土豆玉米红薯了,他想吃螃蟹大虾鸡鸭鱼肉,这时候整个社会的分工也开始进化了,有专门生产海鲜类,有专门提供果蔬类,有专门提供生禽类,这时候小编的年末大餐就变的丰富了,鸡鸭鱼肉海鲜螃蟹全都有了,这和微服务架构把整个业务拆分成多个服务,每个服务由不同的人来进行维护,各自开发迭代是一样的道理。

在全国人民的共同努力下,国家的经济越来越好了,互联网技术也发展的如火如荼,大数据、云计算、人工智能等技术应用在了零售行业,小编年末想要吃大餐时,再也不用把所有的生鲜食材全买回来自己做了,而是可以到比如盒马鲜生这样的新零售店,选择好了食材之后,只需要应用自己的核心技术来去烹饪就好了,这就和无服务器的核心原理是一样的,只需要提供运行函数,其余的服务器购买维护升级都全都不用管。

毫无疑问,serverless无服务架构必将是下一波技术浪潮,整个社会进化的目的是为了提供生产生活效率,技术架构的发展也必将如此,越底层的内容就交给专业的云厂商去做,而开发者们只聚焦于业务价值的实现即可。


标签:
关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
BCVE视频特效课程
BCUI全链路UI设计
BCSP软件开发专业
BCNT网络工程师
启能职业教育基础课程
学习客户端下载
青鸟优师
青鸟云课堂
微信 公众号 咨询 顶部 首页
官方新版意见收集

*

官方新版意见收集

提交成功,感谢您的反馈。

我们会认真阅读和考虑每个用户的反馈。