对Serverless的一点理解和思考-阿里云开发者社区

开发者社区> 夜明孤行灯> 正文

对Serverless的一点理解和思考

简介: 什么是Serverless,不同的Serverless云服务商各有什么特色
+关注继续查看

什么是Serverless

技术圈新鲜的词汇和概念层出不同,有些是新的理念,有些是新瓶装旧酒,还有就是已经广泛应用了但是最近才理论抽象化的。

那么Serverless是什么?

Serverless还真算不上一个全新的词汇。从字面上看就是无服务器的意思,最早的时候就是单纯指不需要服务器端的软件,绝大部分本地软件都属于这个范畴。

到了云时代,这个词就囊括了不需要关心服务器的相关技术和服务,比如使用了LeanCloud作为数据库,使用了Auth0作为用户认证服务等。此类服务对于使用者而言屏蔽了服务器等概念,一般也称为Baas(Backend as a Service)。Baas更偏向于服务外包,因为不管是服务器还是内在代码本身都是不透明的,使用者也无法感知。

再进一步,Faas(Function as a service)出现了,即函数服务/函数计算。这里的函数就是一个代码块,这个代码块没有明确的定义,但是在实际使用了为了响应速度,这个代码块的冷启动时间必须在毫秒级。

这样就可以在只有需要的时候才调用,做到按需运行,按量扣费。结合云服务商的其他服务,实现多种方式驱动和调度,做到真正的无服务化。当然这里的无服务化只是针对使用方而言的。

实现这个的本质其实是将一部分或者说一大部分控制都托付给了云服务商。Faas让开发者专注于业务逻辑本身,实际上也只有业务代码本身是开发者受控制,其运行环境,预热时间,缓存机制等都不再受控。

所以说Faas是Serverless的一种,而且CNCF也将提供Faas和Baas中一种或两种的服务商算作Serverless服务商。但是因为Faas的变革性更大,目前很多场合基本混用Serverless和Faas两者。

所以本文接下来讨论的Serverless专指Faas,中文也有函数计算,云函数,无服务器计算等称呼。

Serverless的服务商绑定问题

对于公有云平台的任何技术,使用者的主要顾虑就是单一服务商绑定。

因为一旦绑定,将造成数据和业务迁移困难,后续发展可能缺乏选择。还需要考虑云平台出现故障的情况,是否有异构容灾能力,是否会对业务造成不可逆的影响等。

虽然乍一看,因为业务代码是受控的,且不依赖特定环境,Faas似乎不像Baas那样有绑定问题,但是仔细看Serverless的使用范围不光受代码语言影响,更重要的是驱动的事件。

对于部署的函数,最终都需要使用云服务商提供的事件来驱动。

来看下使用Serverless的简要步骤:

  1. 编写函数,并发布到云
  2. 声明事件触发器,由事件触发器触发函数
  3. 云服务商的基础设施监控事件触发器,在触发时分配必要的资源和运行环境给对应的函数,执行函数

云服务商提供的事件类型越丰富,Serverless的适用面越广。比较通用的事件是HTTP调用和定时调度,其他大部分都是云服务商独有的,所以Serverless是存在较大绑定性的。

Serverless的服务提供者

从Amazon在2014推出Lambda至今已有5年,各大云服务商基本都是陆续跟进提供了Serverless服务。

主流大玩家们包括:AWS Lambda,Azure Functions,Cloud Functions,国内阿里云,腾讯云,华为云等都提供类似服务。

还有一派自然是开源类型的,需要自建Serverless平台,包括:IBM OpenWhisk,kubeless,knative等。

云服务商中对于语言的支持基本类似,包括主流的Java,Python,Nodejs,AWS Lambda还支持C#,Ruby,Go等,应该是支持语言中最多的。

事件类型方面是云服务商强绑定的,比如阿里云支持OSS事件触发器,HTTP 触发器,定时触发器,MNS 主题触发器,Table Store触发器,RDS 触发器,CDN 事件触发器,SLS 触发器等,而AWS Lambda支持的事件更多,应该是所有厂商中整个生态最完整的,具体支持的事件列表可以参考官方文档。

Serverless常用场景

目前公认的Serverless常见的使用场景包括:

  1. 异步,并发,易于并行化为独立的工作单元
  2. 不经常或有零星的需求,在扩展要求方面存在巨大的不可预测的差异
  3. 无状态,短暂的,对初次冷启动时间没有强需求

多媒体处理是Serverless最早的例子,当用户上传多媒体到云存储,云存储发出事件驱动函数,进而对多媒体进行转码,压缩等操作。

除此之外以下场景也可以考虑使用

  1. 数据库更改数据捕获
  2. 物联网传感器传入数据
  3. 大规模流处理
  4. 批处理作业
  5. 计划任务
  6. 聊天机器人/客服机器人
  7. 部分HTTP REST API Web应用程序
  8. 部分移动应用

写在最后

因为Serverless对于开发,测试还有部署流程都有很大的变动,且相对较新,所以各大云厂商都提供了一定程度的免费额度以供使用。

AWS Lambda与阿里云函数计算的免费套餐基本相同,都是
调用次数:每月前 100 万次函数调用免费。
执行时间:每月前 400000(GB*秒) 费用免费。

参考阅读

https://skyao.io/learning-serverless/introduction/cncf-whitepaper.html
https://martinfowler.com/articles/serverless.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6796 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4350 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7720 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9396 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
16698 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
1030 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
3165 0
5
文章
1
问答
来源圈子
更多
阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖阿里云 MVP 奖项为我们提供了这样一个机会,向杰出的意见领袖表示感谢,更希望通过 MVP 将开发者的声音反映到我们的技术路线图上。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载