作者 | 西流  阿里云技术专家

导读:阿里云 Serverless 产品函数计算可以作为粘合剂,串联其他云服务提供端到端解决方案,从而简化编程模型,快速实现最上层的业务目标。

传统单体应用的拆解

首先我们来看下单体应用里面常见的两个编程模型,如上图所示,一种是 UI-driven,另外一种是 Message-driven。单体应用这种体系结构,客户端可能相对不那么智能,系统中的许多逻辑(比如身份验证、页面导航、搜索、交易等)由服务器应用程序实现,随着业务逻辑复杂度的增长,服务端的应用程序会越发膨胀和难以维护。

而在 Message-driven 异步消息处理这种模式中,需要用户实现一个常驻的、弹性高可用的消费者服务。为了更专注具体业务逻辑的开发,对一个庞大的单体应用进行拆解,充分利用云服务体系结构是一个非常好的解决方案。在这里,最大的关键是如何为应用程序的各个组件选择和使用正确的云服务,而通过函数作为粘合剂来串联云上的托管服务,就是一个非常好的实践。

如上图所示,UI-driven 切换到 Serverless 架构以后:

  • 第三方 BaaS 服务取代认证逻辑;
  • 允许客户端通过临时 token 直接访问架构与第三方上的数据子库(BaaS);
  • 宠物商店服务端的逻辑可以转移到客户端中,例如跟踪用户访问、读取数据库转化为可视视图等,客户端则慢慢转化为单页面应用;
  • CPU 密集型或者需要访问大量数据,比如搜索,使用 FaaS 实现,无需一直运行的 server;
  • 购买功能使用另外一个 FaaS 实现,因为安全原因放在服务端。

Message-driven 切换到 Serverless 架构以后:

与单体应用示例相比,这里改动很小,同时使用 FaaS 功能替换了长期存在的消息消费者应用程序,消息消费的高可用性交给了云平台去负责。

事件驱动与编排助力完整 Serverless 应用

目前,在很多的人的第一印象中,一般将 FaaS,也就是 Fucntion as a Service(函数即服务)等同于 Serverless,比如阿里云的函数计算、AWS 的 Lambda,但是实际上有许多其他的云服务也是 Serverless,他们和 FC 一起构建成完整的 Serverless 应用,让用户完全聚焦他最上层和核心的原始业务。

比如,用户直接使用 API 网关,就可以从 API 限流、鉴权等许多 API 层面上需要考虑的繁杂工作中解放出来;直接使用 Serverless 的 NoSQL 数据库 TableStore 或者对象存储 OSS 来持久化数据,替代自己管理数据库实例;使用 SLS 或者 Datahub 从外部系统收集数据流;使用消息服务 MNS/MQ 来管理消息等。

用户可以使用一个个函数将这些 Serverless 服务串联起来,从而达到构建具体复杂的业务逻辑和应用的目标。在这里,用户也可以选择 Serverless 工作流来编排函数和其他云服务,简化了开发和运行业务流程(比如自己去编写代码进行任务协调、状态管理、错误处理以及重试等繁琐工作),让用户聚焦业务逻辑开发。当然,用户也可以使用阿里云提供的开发工具链来简化自动化部署和持续集成。使用这些开箱即可使用的工具可以帮助用户快速达到想要的目标和效果。

如果是一个庞大复杂的单体应用或者是一个面向服务体系的架构,开发者需要负责所有的事情,包括代码的编写、管理和部署数据库以及其他相关的后端服务等,切换到 Servrless 架构,可以看到:特定的模块交由特定的托管云服务去处理,之后再使用实现了具体业务代码的函数将它们串联起来,也实现了解耦。为了使这种架构运转得更有效率,事件驱动是一个必不可少的特性,比如用户尝试往 OSS 上传一个文件或者更新表格存储会自动做一些逻辑处理,对于开发者来说,最关心的是什么样的事件可以触发我的编写逻辑。

Serverless 粘合云服务示例

这里有一个有趣的例子:

如上图所示,用户上传图片文件,产生消息事件触发了 FC 函数执行,处理生成了图片缩略图,并将缩略图存储至对象存储 OSS,之后触发了另一个 FC 函数,将图片产生的更新信息写入表格存储数据库,最后再触发一个 FC 函数,完成搜索模块的更新。整个过程中文件处理存储、搜索服务、表格存储数据库服务被几个 FC 函数粘合为一个业务处理逻辑。

参考文章:https://martinfowler.com/articles/serverless.html

函数计算如何粘合云服务,提供端到端解决方案相关推荐

  1. 函数粘合云服务提供端到端解决方案

    作者 | 西流 阿里云技术专家 导读:阿里云Serverless 产品函数计算可以作为粘合剂, 串联其他云服务提供端到端解决方案, 从而简化编程模型, 快速实现最上层的业务目标. 传统单体应用的拆解 ...

  2. 阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破

    阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破 1. 什么是 HTTPDNS ? 传统的 DNS(Domain Name System)使开发者常面临着域名劫 ...

  3. 10分钟上线 - API网关 + 函数计算实现图片处理服务

    摘要: 阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务.通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统 ...

  4. 云服务提供商现状调查

    云服务提供商现状调查 1.1云服务提供商分类 1.电信运营商:沃云.天翼云.移动云 (数据中心资源丰富.用于带宽资源和政府关系资源) 2.互联网巨头:阿里云.腾讯云.百度云.新浪云.京东云.搜狐云台. ...

  5. 华为发布量子计算模拟器HiQ云服务平台

    华为在HUAWEI CONNECT 2018发布量子计算模拟器HiQ云服务平台,包括量子计算模拟器与基于模拟器开发的量子编程框架.基于华为云的超强算力,HiQ可模拟全振幅42量子比特以上,单振幅81量 ...

  6. 飞利浦Zoom!正式进入中国市场;西门子医疗首台发热门诊“无人”CT落地;埃森哲意向收购法国领先云服务提供商 | 美通企业周刊...

    一周企业资讯看点:飞利浦Zoom!正式进入中国市场.西门子医疗全球首台发热门诊"无人"CT落地.埃森哲意向收购法国领先云服务提供商.雅诗兰黛集团全球研发中心中国项目开工建设.霍尼韦 ...

  7. 传博通正洽谈收购云服务提供商VMware,后者市值约400亿美元

    NEW 关注Tech逆向思维视频号 最新视频→[周鸿祎:元宇宙代表了人类的没落] 5月23日消息,据知情人士透露,芯片制造商博通正在洽谈收购云服务提供商VMware事宜. 知情人士称,博通和VMwar ...

  8. 云服务提供商 | 等级保护测评报告

    文章目录 背景 云服务商 用户的需求 背景 自从2017年6月1日之后,等级保护越来越重视了.毕竟合规是要做的.不做的话哈哈. 我司的云平台刚刚做了等保,因为云平台里的用户也需要过等保,他们要过等保的 ...

  9. 为什么很多企业要自研CRM系统,而不够买SAAS云服务提供的CRM系统或SCRM系统?...

    很多企业要自研CRM系统,而不够买SAAS云服务提供的CRM系统或SCRM系统最主要的适用性的问题,标准化的产品与企业个性化需求产生了矛盾导致了很多企业在系统推广使用中产生诸多问题.SAAS云服务提供 ...

最新文章

  1. 什么是棉绒,它如何节省您的时间?
  2. 蓝桥杯练习系统习题-算法训练2
  3. 使用PowerShell deprovision O365 资源
  4. 蓝天采集器自动化采集发布
  5. RedHat5 升级OpenSSH服务
  6. 光纤接口怎么接 图解_视频光端机怎么连接,视频光端机接法图解
  7. C# MP3操作类,能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件
  8. 神州数码IPv6路由怎么配置?
  9. 实验吧:天网管理系统
  10. ios android 联机游戏平台,iOS 和安卓游戏终于互通了
  11. 阿里双11集团技术总指挥——汤兴:一场不亚于移动化的变革已经发生
  12. 淘宝 触屏主页面 菜单
  13. 记录一次服务器被攻击的经历
  14. HTML5:爱奇艺首页图片轮播效果
  15. Django-rest-framework简介
  16. 【计算机网络】数据链路层:使用广播信道的以太网(1)
  17. 为什么我学51单片机很顺利,学STM32却一头雾水?
  18. 从Masonry 源码探 Objective-C [源码学习开篇]
  19. DDR4内存条电路设计
  20. 常用概率分布的矩母函数、特征函数以及期望、方差的推导

热门文章

  1. ubuntu使用apt-get时出现could not get lock怎么解决
  2. hihocoder217周 树形DP
  3. hihocoder1033交错和
  4. 学习笔记——指针那些事儿
  5. cuda11.0 cudnn 11.0 torch1.7.1+cu110 torchvision 0.8.2+cu110 安装包
  6. c/c++教程 - 总集1. c基础语法
  7. 算法应用-百钱买百鸡
  8. 匿名函数与内置函数(python3入门)
  9. 脚本加密http://www.datsi.fi.upm.es/~frosal/sources/
  10. mongodb 启动脚本和配置