工程化-serverless
什么是 serverless
参考链接:
https://serverless-stack.com/chapters/zh/what-is-serverless.html
https://www.redhat.com/zh/topics/cloud-native-apps/what-is-serverless
推荐阅读:Serverless 架构开发 / 优化案例 - InfoQ
Serverless,又叫无服务器。Serverless 强调的是一种架构思想和服务模型,让开发者无需关心基础设施(服务器等),而是专注到应用程序业务逻辑上。Serverless 也是下一代计算引擎。
Serverless 具有的特质:
这里叫特质,而非特性,因为这些属于 Serverless 架构的固有的。
- 免运维:不需要管理服务器主机或者服务器进程。
- 弹性伸缩:根据负载进行自动规模伸缩与自动配置。伸缩范围零到无穷大。
- 按需付费:根据使用情况决定实际成本。
- 高可用:具备隐含的高可用性。
serverless 一旦完成当前请求就会进入“静默”状态。
Serverless的优缺点
优点
- 无服务器计算可以提高开发人员的工作效率,降低运营成本。通过摆脱诸如服务器置备和管理等例行任务,开发人员就会有更多的时间专注于自己的应用。
- 无服务器有助于 DevOps 的采用,可以减少开发人员明确描述基础架构(需要相应的置备操作)的需要。
- 可以通过整合第三方 BaaS 产品的完整组件来进一步简化应用开发。
- 在无服务器模型中,由于您只需为所需的云计算时间付费,而不用全程运行和管理自己的服务器,因此大大降低了运营成本。
- 可用性冗余,以便单个机器故障不会导致服务中断
- 冗余副本的地理分布,以便在发生灾难时保留服务
- 负载平衡和请求路由以有效利用资源
- 响应负载变化进行自动缩放以扩展或缩小系统
- 监控以确保服务仍然运行良好
- 记录以记录调试或性能调整所需的消息
- 系统升级,包括安全修补
- 迁移到新实例时可用
缺点
- 不运行自己的服务器或控制自己的服务器端逻辑也有弊端。
- 云提供商可能对其组件的交互方式有着严格的限制,从而影响您系统的灵活性和定制能力。采用 BaaS 环境时,开发人员可能要为代码不受其控制的服务负责。
- 放弃对 IT 堆栈这些方面的控制,也同时意味着您会受制于供应商技术锁定。即便您决定要更换提供商,也可能需要升级系统以符合新供应商的规范,而这无疑会增加成本。
受限制于云提供商,缺乏灵活性,内存规格受到限制。例如:如果需要定时唤起 serverless 需要使用 serverless 工作流去做,就意味着要开启更多的服务。
适用场景
- 事件触发的计算
无服务器可应用于涉及多个设备访问各种文件类型的场景,例如移动电话和上传图像,视频和文本文件的PC。 - 实时视频广播的弹性调整大小
无服务器架构是实时视频广播场景的理想选择。例如,广播室客户端从主机和受众收集音频和视频流,并将它们发送到功能计算以进行多路复用。函数计算将收集的数据发送到多路复用服务进行综合,并将合成的视频流推送到CDN。观众可以实时提取实时流以查看多路复用和合成的视频。 - 物联网数据处理
无服务器架构可以应用于物联网(IoT)场景。 - 共享交付调度系统
客户可以使用调度平台从各种卖家提供的服务中进行选择,例如订购食品或购买产品。然后,调度平台通知最近的交货人员从最近的卖家处取出相关产品并将产品交付给客户。
每个云服务厂商都会有他们自己的 serverless 的服务,提供一些 serverless 函数进行配置。
Faas(函数即服务) + Baas 服务是 serverless 架构模式的一种实现。
如何使用
本文以阿里云为例。
参考链接:
阿里云 - serverless 体验场景 - 基于函数计算快速搭建Hexo博客系统
使用函数之前需要开通阿里云的函数计算服务。也可以使用阿里云 serverless 的教程进行免费的体验。
如果自己测试的话,阿里云内部调用不会收取费用,外部调用就会收取一定的费用。
或者在体验场景中进行模拟体验。
函数触发方式
选择函数触发方式。
通过事件触发:通过定时器和其他阿里云服务的触发器来触发函数执行。
这种方式需要设置阿里云 serverless 工作流 - timer 进行触发。
通过 HTTP 请求触发:通过发送 HTTP 请求触发函数执行,适用于快速构建 Web 服务等场景。
可以设置 webhook,如 jira 的 webhook,大部分协同网站都会有自己的 webhook 配置。
扩展阅读:什么是 web hook
其他教程:
Serverless 实例连接:https://help.aliyun.com/document_detail/185471.html