开发者学堂课程【从 0 入门函数计算:函数粘合云服务提供端到端解决方案】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/645/detail/10721
函数粘合云服务提供端到端解决方案
内容简介:
1.模型介绍
2.其他服务
1.模型介绍
首先是应用中最常见的两种模型,第一种是 UI 驱动,第二种是消息驱动。
在 UI 驱动中,可能客户端不那么智能,原因是一些逻辑服务,比如认证服务,搜索服务,交易等都需要实现在服务端的应用程序中,随着业务的复杂程度的不断增加,服务端会越来越难以维护。
而在消息驱动中,需要用户实现一个常驻的消费者服务,然后去消费消息,同时消费者的可用性也需要用户去保证。
以上两个例子可以看出,假设单体应用不断膨胀,对一个庞大的单体应用进行拆解,充分利用云服务的体系结构,是一个非常好的解决方案。关键是如何为应用程序的每一个组件选择和使用正确的云服务,然后通过函数作为粘合剂将云服务串联起来。
2.其他服务
目前很多人将 FaaS 等同于 service,所谓 FaaS 就是 Function as a Service,即“函数即服务”,比如阿里云的函数计算。但实际上有许多其他的服务也是Service,她们和函数计算一起构成 Service 应用,比如使用 API 网关可以使用户从API网关的线流等繁琐的配置中解放出来;使用表格存储和对象存储来持久化数据,可以取代用户去管理数据库实例;使用日志服务或者 DataHUb 这种外部数据源可以收集数据;使用 MNS 可以管理自己的消息。
用户可以使用一个函数将这些函数串联起来,从而能达到构建具体的应用和复杂业务逻辑的目标。
同时,用户也可以使用 Service 工作流来编排函数和其他云服务,让用户更加聚焦于具体逻辑的开发和流程的编排。
当然,用户也可以使用阿里云提供的开发工具链来简化自动化部署和持续集成,使用这些开箱即用的工具可以帮助用户快速达到想要的目标和效果。
如果一个庞大的单体应用或者是一个面向服务的体系结构,开发者需要负责所有的事情,包括代码的编写、管理和部署数据库以及其他后端相关服务。切换到Service架构以后,我们可以看到特定的模块交由特定的云服务处理,之后再使用具体的代码函数将它们串联起来。
为了使这种架构运行的更加更有效率,事件驱动是一个不可缺少的特性。比如说用户尝试往 OSS 上传一个文件,这个上传事件可以自动触发一个函数对这个文件进行处理。
比如用户变更一个表格存储的数据,也会自动触发一个编写的逻辑,引出以下例子。
用户上传一张图片到存储 OSS,触发一个函数,这个函数对这个图片生成缩略图并保存回 OSS。
之后 OSS 会触发另一个函数,这个函数会把刚刚生成的缩略图的信息写入 Service数据库表格存储。表格存储又触发另外一个函数,将缩略图的信息更新到搜索模块。
这样我们可以看到数据的上传、存储、信息的入库以及搜索模块的更新。被这三个函数联合成了一个具体的业务逻辑。
再回到最开始的实例,UI 驱动可以转化为这种 Service 架构,第三方 Service 认证服务可以取代服务端中的认证逻辑,一些页面显示中的内容可以直接读取 Service 数据库,这样可以使用户端的很多业务逻辑可以慢慢移动到客户端,同时可以使涉及安全的函数等也可以放在服务端,这样可以充分利用一些云服务保证了一些逻辑的高可用,使自己更专注于具体的业务逻辑。对于消息驱动的模式,可以看到之前的常驻的消费者服务交由 FaaS,用时高可用等都交给了云平台。