摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场景是否对用户有一些指导意义。
前情详见:基于阿里云Serverless架构下函数计算的最新应用场景详解(一)
利用弹性扩容(视频直播多人连麦场景)
场景描述:
直播间的客户端把主播和连麦观众的音视频采集发送给函数计算做混流服务,函数计算把数据汇集后交给混流服务进行合成,并把合成画面视频流推送给CDN,终端观众实时拉取直播流,能实时看到混流合成画面。
视频直播应用场景中,有一种场景视频直播的多人连麦,主播可以同时和多个工作进行连麦,把多个观众或者好友画面接入,并把画面合成到一个场景中,供给更多观看直播的观众观看。这个场景中,有几个技术难度需要关注:
- 连麦的观众不固定,需要考虑适度的并发和弹性。
- 直播不可能24小时在线,有较为明显的业务访问高峰期和低谷期。
- 直播是事件或者公众点爆的场景,更新速度较快,版本迭代较快,需要快速完成对新热点的技术升级。
综合以上几个特点,可以通过Serverless这种架构的来完美解决以上痛点。
函数计算作为连麦观众和主播接入的实时音频和视频转发集群,当并发量过来时候,函数计算自动扩容多个执行环境来处理实时数据流,当业务高峰期过去后,会适度缩减资源使用,代码管理部署在云端,代码迭代可以随时进行修改和维护,无需再多管理一套软件运行环境。
视频直播场景常规做法:
- 购买负载均衡应付并发。
- 购买计算资源做数据处理。
- 业务低谷期需要想办法释放硬件资源来节省成本。
- 多版本要维护多套运行环境。
函数计算解法:
1、把负载分发程序写到函数里。
2、多版本迭代无需更换运行环境,仅仅替换代码版本即可。
3、业务访问按需付费,业务低谷期无费用。
整个架构图分成2部分内容:
- 一部分是Web应用,模拟一个社交内容更新和数据处理的流程,Web用户通过API网关把请求转发到函数计算进行处理,函数计算把处理后的内容更新到数据库中,并更新索引,另外一个函数计算把索引更新推送的搜索引擎供给外部客户进行检索,完成整个数据闭环处理。
- 另一部分是智能设备通过IoT网关把设备状态推送到函数计算处理,函数计算通过API接口把消息通过移动推送服务,推送给移动端进行状态确认和管理。在智能设备状态处理的场景中,同样也会碰到几个核心技术问题要解决,当海量设备把状态发送到IoT平台后,如何设计一套高效非轮询的技术框架来处理设备状态数据;如何把处理后的数据高效透传其他产品,例如写数据库或者推送给移动端。
IoT设备状态场景常规做法:
- 设置消息通道接收事件,并编写业务代码。
- 购买服务器资源做后端数据处理。
- 开通多个产品,并调用SDK代码来完成业务交互。
- 维护相关硬件软件环境。
函数计算解法:
- 定制IoT平台的事件通知,直接把业务代码写到函数计算中。
- 不需要维护运行环境,用完即可释放。
- 控制台配置,就可以把信息透传给相关产品。
共享派单系统详解
客户通过派单平台选着某种商家提供的服务,可能是餐饮、商品、或者服务。派单平台通知最近的骑手到最近的商家拿到服务并派送到客户手里。一个简单的流程图如下:
流程详解:
步骤1、客户通知派单平台下单某商品
步骤2、派单平台通知最新骑手
步骤3、派单平台同时通知商家商品售卖出去
步骤4、骑手到指定的商家获取商品
步骤5、骑手配送到客户所在地
这个派单场景中,要解决几个棘手的技术:
整合多种资源,计算资源会涉及到,骑手位置信息、最优路径规划、车况情况、调度系统等
低延迟:派单系统对订单的响应要求很高,从接单到商家在到客户,整个闭环都需要在段时间内完成。
海量数据:涉及到三方面的数据,客户数据、商家数据、平台骑手数据、位置信息、商品信息等。
请求明显波峰波谷:派单系统在一天中的资源使用非常不均衡,波峰期,例如外卖,在中午和晚饭达到高峰,平时空闲。
通过技术选型转化成阿里云产品的解决方案后,函数计算结合其他产品比较完美的解决上述问题,解决方案图如下图所示:
流程详解:
客户APP把订单请求通过API网关透传给函数计算,函数计算把处理后的数据传输给表格存储,表格存储存放了骑行数据、商家信息、位置信息等,其中骑行日志会存放到日志服务里,便于后续做报表分析。骑行过程中骑手头像、随手拍街景会存放到OSS中,骑手位置可以通过函数计算去拉取第三方地图信息,例如高德地图等。这个方案中,函数计算可以完成动态扩容问题,API网关可以解决鉴权和安全访问问题,函数计算打通了多款产品,可以无缝使用其他资源和内容。所有处理后的数据可以存放到表格存储数据库中,所有日志都可以直接加载到日志服务为后续数据报表服务。
共享派单系统常规做法:
- 购买多台服务器来支持高峰期的访问,访问波谷期自行设置释放原则。
- 通过编程方式完成多个产品的交互。
- 为了保证负载均衡,需要购买相关的产品来支撑。
- 人工维护相关硬件软件环境。
函数计算解法:
- 定制IoT平台的事件通知,直接把业务代码写到函数计算中。
- 不需要维护运行环境,用完即可释放。
- 控制台配置,就可以把信息透传给相关产品。
两种解法都能达到目标,从资源利用率和可维护性来看,使用Serverless架构的方式会更优。
通过上面几个个场景的详解,我们大致可以得出这样的结论,通过事件触发场景、有业务访问高峰和低谷的场景、迭代次数较多、需要快速打通多款产品场景,通过函数计算能完美的解决成本、效率、联通等问题。
表3-1函数计算和传统自建服务器的优劣对比
函数计算 |
自建计算环境 |
|
维护性 |
内置打通API网关,OSS,Table Store、IoThub、Log Service、Message Service、Datahub等产品,只需要简单配置。 沙箱执行环境,无需配置。 自动伸缩和负载均衡。 触发条件简单,入口多。 |
多款产品链接需要自己编写代码来实现,有技术门槛。 自建物理环境,需要配置运行环境,消耗人力物力。 需要自行搭建伸缩机制和负载均衡,耗时较多。 |
可靠性 |
代码和配置存放在OSS中,自动多重冗余备份。 |
受限于硬件可靠性,易出问题,一旦出现运行环境或者数据损坏,容易出现不可逆转的数据丢失。 人工数据恢复困难、耗时、耗力。 |
成本 |
按执行付费,在业务请求波谷期费用低廉 上行流量免费 无需运维人员和托管费用 阿里云产品内部传输无费用 同比计算能力,成本节省1/3 |
业务请求的波峰需要资源扩容,波谷的时候资源浪费。 需要专人维护运行环境和硬件资源,人力成本较高。 产品之间联通如果走公网,需要额外支付流量费用。 |
安全 |
沙箱运行在阿里云企业级别安全环境里。 多用户运行是服务器级别隔离机制。 提供多种服务授权和子主账号。 |
需要另外购买清洗和黑洞设备 需要单独实现安全访问机制 |
函数计算虽然适用于很多场景,但也不是覆盖全部应用场景的万金油。例如某些业务在一天中没有明显的请求波峰波谷,请求相对平缓,那么使用函数计算成本不见得会节省多少。Serverless这种框架是新兴的技术,目前相应的支持开发工具较少,整体这个框架还在探索中。另外函数计算的执行环境是不记录状态的,有些耦合性较强的应用也不太适合用Serverless这种框架。受限于资源大小分配,一些大型的应用程序也不太容易能拆分能搬上来。
相关推荐
在这个"利用Serverless架构下函数计算实现网站文件处理的最佳实践"的资源中,我们将深入探讨如何在无服务器环境下,通过函数计算高效地处理网站文件。 一、Serverless架构基础 1. 定义:Serverless并不意味着完全...
阿里云Serverless工作流解决方案是基于Serverless架构的技术创新,它可以帮助用户快速构建、自动化和优化工作流程,提高业务效率和降低成本。本解决方案可以应用于多种业务场景,例如音视频处理、数据处理流水线、...
Serverless架构的应用场景和最佳实践 Serverless架构是指一种软件架构模式,它将应用程序解耦合为多个小型、独立的组件,每个组件都可以独立地扩展和部署。这种架构模式可以提高应用程序的灵活性、可扩展性和可维护...
Serverless 架构升级是指在 Serverless 环境下,使用函数应用架构来构建应用程序的过程。这项技术可以帮助开发者快速构建和部署应用程序,同时也可以提高应用程序的可扩展性和灵活性。 Serverless 架构升级的优势有...
标题“阿里巴巴serverless架构演进.pdf”揭示了文档的主题,即探讨阿里巴巴如何在云西大会上介绍serverless架构,并分享了在该领域的最佳实践与技术演进路径。serverless架构是一种新兴的云计算模型,它允许开发者...
阿里云云原生 Serverless 案例集是基于云原生架构的 Serverless 计算服务,提供了全托管的 Serverless 计算资源和丰富的事件触发机制。该服务支持当前主流的编程语言和自定义运行时,能够满足不同场景下的需求。 ...
2021阿里云云原生 Serverless 技术实践营演讲PPT汇总,共5份。 此次活动分别从技术、产品、架构和开发者工具的视角围绕 Serverless 的发展趋势、落地实践与参会者零距离分享最佳实践心得,全程弹幕互动答疑,和到场...
首先,我们要了解“腾讯云-云函数”(Tencent Cloud Function)这一服务,它是一种无服务器计算(Serverless)平台,允许开发者在无需管理底层基础设施的情况下运行代码。这种模式可以显著降低运维成本,提高开发...
在同程旅游公司的实践中,Serverless 架构被广泛应用于各种业务场景中,如用户注册、订单处理、支付结算等。Serverless 架构可以帮助同程旅游公司降低系统的维护和管理成本,提高系统的可扩展性和灵活性。 微服务...
阿里云原生技术+云原生架构+云原生实践等资料合集,13份。 2021阿里巴巴DevOps实践手册 2021云原生开发者洞察白皮书 阿里巴巴-云原生大规模应用落地指南 阿里巴巴经济体-云原生实践 阿里巴巴云原生架构白皮书 阿里...
Serverless架构是一种新兴的云计算模型,它将传统的服务器管理和运维工作交给云服务提供商,开发者只需关注应用程序的逻辑,而无需关心底层基础设施。AWS Lambda是亚马逊Web服务(AWS)提供的一个核心Serverless计算...
Serverless 架构的原理是基于事件驱动的设计理念,每个函数都可以响应特定的事件,并执行相应的操作。Serverless 架构可以提供更高的灵活性和可维护性,因为每个函数都可以独立地开发、测试、部署和维护。 从...
云原生架构的定义:云原生架构是一种基于云计算的软件架构模式,通过容器、微服务、Serverless 等技术,实现高效、可扩展、灵活的 IT 架构。 云原生架构的主要技术包括: 1. 容器技术:使用 Docker 等容器技术,...
这里的"fc-java-sdk"正是阿里云提供的Serverless函数计算Java SDK,它为开发者提供了在Java中构建、部署和管理Serverless应用的能力。 使用阿里云FC(Function Compute)Java SDK,开发者可以实现以下关键功能: 1...
阿里云Serverless解决方案的核心在于帮助企业或开发者克服传统软件研发与运维中的挑战,通过引入无服务器架构,实现更高效、弹性的资源管理和应用部署。以下是详细的知识点解释: 1. **现代软件研发问题与进化**: ...
《Serverless架构:无服务器应用与AWS Lambda》的作者Peter Sbarski 是最早完全拥抱无服务器架构的开发者之一,他将自己在应用无服务器架构中获得的宝贵经验总结成本书,呈现给广大的读者。更难能可贵的是,全书贯穿...
阿里云Serverless工作流解决方案是一种高效、弹性且自动化的服务,它针对各种IT场景提供了强大的支持,包括音视频处理、数据处理流水线、订单审批流程、自动化运维和机器学习流水线。这一解决方案的核心优势在于其...
标题中提及的“NBF:新零售服务开放的Serverless架构与深度实践”指的是冯微峰作为阿里巴巴供应链中台基础技术团队负责人,在2016年开始基于盒马的业务场景设计的新零售服务开放框架NBF(New-Retail Business ...
Knative 是一个基于 Kubernetes 的 Serverless 框架,旨在提供一个抽象的 Serverless 应用平台。Knative Deployment 是 Knative 的核心组件之一,负责管理 Serverless 应用的生命期。Knative Pod 是 Knative ...