热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

聚焦业务价值:分众传媒在Serverless上的探索和实践

聚焦,业务,价值,分,众,传媒,在,serverless,上

作者 | 吴松(分众传媒研发总监)

**关注 Serverless 公众号后台回复 分众 即可获得云原生峰会 PPT! **

本文总结于分众传媒研发总监吴松在阿里云云原生实战峰会上的分享,从三个方面详细讲述了对 Serverless 技术的探索。​

分众传媒的业务现状

​ 分众传媒的业务场景很简单,就是广告主买量,然后进行投放排期和统计,最后进行效果展示。业务场景前期要做广告设计、视频处理,后期还有一个广告投放、效果展示,可能会给客户提供各种各样的数据展示。分众传媒主要的业务形态有静态海报(市场占有率超过 73%),电梯屏幕 30 万块,覆盖 91% 中高档的写字楼。 我们把云原生应用架构应用于手机 APP 和视频终端,而业务应用则有很多,比如员工接入、CRM、视频处理、图片识别、数据上报、数据分析、视频直播。其中,视频直播是新开发的业务,就是为了把直播视频实时推到分众传媒的屏端上。 云服务则用到 SLB、MQDT、转码服务、IoT 等等。先说一下 IoT,我们现在所有屏端都是用的都是阿里云的 IoT 服务。这项服务带来的最大优势是屏端连通率大概可以保持在 95% 左右,这大大提升了团队工作效率。

因为以前我们的屏端都是要人工去插卡上刊,现在接入 IoT 之后,我们的业务量从原来的 50% 提升到了现在的 95%,也就是说,在外面 100 台设备有 95 台设备连网,这可以很好地支撑我们的业务,给我们的技术实现带来了很大的价值。

另外,我们有 200 万个静态的电梯海报,每周都需要上刊,在上刊之后会有图片处理的流程。这块目前使用的是自动识别处理,每次上刊之后需要判断图片是否上错或者图片有没有放反。这一系列操作现在全部可以实时通知到上刊人员,一旦出现上刊之后图片放错、放反的问题,可以及时通过手机短信通知到相关负责人,提醒他们立刻采取措施去解决,保证在一个小时之内完成。

Serverless 的探索实践

传统服务器无法满足我们的业务高速增长,主要有三大痛点。耗时太长、资源利用率低、运维复杂,对人员技能要求高。

  • 耗时太长:以前的人工上刊无法及时知道上刊是否正确或者错误,需要花费很多时间去核对和修改;

  • 资源利用率低:上刊的主要业务是集中在周六和周日,因此所有资源基本在周六周日使用,大部分时间段是不需要使用服务器资源的;

  • 运维复杂、人员技能要求高:大家都会遇到的常规痛点,由于业务的复杂度对相关业务人员的技能要求也高,同时也需要招聘更高级的人员来支持对应的运维工作。

于是,对于我们来说,上云有两个选择。第一个是用 K8s 服务自己搭建一套容器集群,第二个是用函数计算 FC。那我们是如何选择的呢?​ 在选择 Serverless 时,其实我们也有一些担忧。第一是大规模的实践案例,第二是图象识别的算法往往很大,函数计算 FC 能否适用?第三,FC 最高规格只能支持 2C3GB,这对我们业务有很大的考验。第四,是否可以提供 CPU 使用和内存使用的监控等等。这些都是我们很担忧的一些问题。

K8s 和 Serverless 运行原理的差异大家可以从上图中看到,如果用 K8s 请求云主机,我们需要自己搭建 K8s,通过对外的 API 来提供请求;而使用 Serverless 计算平台,我们不需要关心用了多少服务器或者多少人力,我们只需要关心每一次 API 请求是否正确到达和触达,就可以确认每次的图象识别是否有确切识别到图片,并把识别错误的东西发出来,通知到上刊人员。

因此我们最后选择了函数计算,因为它有以下 3 个突出优势:

  • 自动弹性收缩:比如只需要告诉他每周六每周日有两百万处理量,要在两天完成,其中高峰是早上九到十点或者下午三到四点,就可以实现资源的自动弹性收缩;

  • 资源免运维:解决我们需要请专业人员来负责支持运维的痛点;

  • 可提供大规模的识别能力:当我们请求每天上刊人员在早上六点、七点、八点上刊时,背后能够实时的,在固定时间提供算力;

我们用到很多开发语言,例如 PHP、C++、Python,如果用 K8s 去改造,难度很大。但如果用 Serverless,改造成本就小很多。 我们在图片识别系统进行了的初步试水,就是刚才说的我们分众有两百万电梯海报,每周上刊需要每张图片精准送达。所以说我们在上线图片识别系统时,每一张图片都会上传 OSS,通过 OSS 打通我们 MNS 服务,再把消息发送到函数计算 FC,然后再对消息进行处理,之后就可以对图片进行加水印、图象识别、图片匹配了,从而可以精准地告诉正在上刊的工人,你的图片上刊成功了,可以上刊下一张图片了。

在这个业务峰值图上可以看到,FC 支持一分钟内扩充到 7000+ 的实例。如果我们自己部署 K8s 会牵扯到很多人力和物力,因此我们最终选择了 Serverless。​

All On Serverless 化繁为简

2021 年年底我们对 Serverless 进行了业务升级。以前服务是在 NAS 上,这会导致我们们必须实时关注 NAS 有没有挂掉,因为 NAS 挂掉的话,FC 业务就启动不起来了。比如我们周末排查业务时发现 NAS 挂掉了,导致算法接不进这类问题。于是,我们对服务端就进行了升级,把业务放在容器里,通过镜像来部署,这样可以提高缓存,解决很大的高峰时的业务问题,镜像启动比以前通过 NAS 挂载要快很多,这是对业务提升最大的地方。

升级后的 Serverless 提供了丰富的监控指标提升监控效率,提升了很多错误统计、CPU 效率等指标,可以基于监控数据快速定位到现在业务运行状态。

通过 Serverless 的实践,可以让我们的开发更关注到业务开发里,比如可以让图象识别的开发人员更关注图象识别的识别率,把更多运维工作交给 FC 去处理,所以说 Serverless 给我们提供了极致弹性、自动扩容、应对流量突增、让开发更加关注业务等益处。

​ 我们用了 Serverless 之后,可以看到团队的开发运维效率提升了 80%,计算成本下降了 50%。以前我们会部署很多的服务器,以及 GPU 服务器去实现我们的图像算法的一块业务,现在我们都不用了,弹性效果提升了十倍以上。​

总结和思考

我们现在将 Serverless 主要应用于图象识别算法上,他具有 CPU 密集型、对弹性有极致要求的特点。此外,Serverless 也适用于事件驱动的业务模型,来简化架构复杂度,从而不需要关注背后的东西。如果用 K8s,这会牵扯到很多的业务逻辑。

后续,我们还会考虑将 Serverless 和 Kafka 进行结合,用在大数据的处理上,这样的效率会更的,简化Flink的使用成本。视频直播业务上,直播流实时推送到视频终端的部分,也是我们尝试使用 Serverless 来解决。

微服务方面,我们也正在考虑另一款 Serverless 形态的产品——Serverless 应用引擎 SAE,来简化我们的运维、提高效率,值得期待。

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。


推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • Kubernetes(k8s)基础简介
    Kubernetes(k8s)基础简介目录一、Kubernetes概述(一)、Kubernetes是什么(二& ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 本文介绍了简书APP的PRD文档规范写法及内容概述。PRD文档的要求因公司、团队或产品而异,本文总结了简书APP的PRD文档框架,包括版本信息、文档说明、产品简介、产品特色、用户分析和产品架构等内容。简书APP致力于提供最好的分享体验,为写作者打造最优秀的写作软件,为阅读者打造最优雅的阅读社区。主要用户为喜欢分享交流、爱生活拥有文艺气息的年轻人,喜爱文字并想在喧嚣网络中沉淀文字的读写人。产品架构包括了主要模块,并应展开至最小用户可见单元。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。那么如何实现跨域呢,以下是实现跨域的一些方法。 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • IDC数据:2021年上半年中国公有云PaaS市场,亚马逊云科技排第二
    2021年10月下旬,IDC发布《中国公有云服务市场(2021上半年)跟踪》报告,数据显 ... [详细]
  • 2019我的金三银四
    先讲一下自己的情况吧,二本学生,17年毕业,目前在一家跨境电商从事Java技术开发工作(不是阿里,没那么厉害),技术栈目前偏向于容器云、持续集成持续交付这一块,也就是SpringBoot、Kuber ... [详细]
author-avatar
叫我小小小火枪的天空_603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有