TapTap 算法平台的 Serverless 探索之路

news2024/11/22 16:26:18

作者:陈欣昊

Serverless 在构建应用上为 TapTap 节省了大量的运维与开发人力,在基本没投入基建人力的情况下,直接把我们非常原始的基建,或者说是资源管理水平拉到了业界相对前沿的标准。最直观的数据是,仅投入了个位数的人力,就可以为TapTap整个搜广推相关的所有业务提供全套AI和大数据方面的支持。

——陈欣昊 TapTap/IEM/AI平台负责人

心动创立于 2003年,是一家全球游戏开发和发行商,拥有丰富的研发、发行和代理运营经验。截至 2022 年中,心动运营 38 款免费和付费游戏,在全世界拥有 5,000 万月活跃用户,主要分布在大中华地区、东南亚、北美和南美。2016 年,心动推出手机游戏社区和应用商店 TapTap,玩家可以通过官方渠道免费或付费购买下载手机游戏,亦可在社区中与其他玩家交流,截至2022年6月,TapTap 在全球已拥有超过5,000万月活跃用户。

业务背景

TapTap 不同于传统的应用商店的分成模式,至今一直坚持做渠道零分成,这也决定了,TapTap 目前的商业化,主要由广告驱动。TapTap 的广告属于站内的原生广告,与其他非商业化在内容上形态保持高度一致,给用户更好的体验。比如首页的游戏推荐,发现页的内容推荐,搜索引导页的底纹词,以及搜索输入时会出现的搜索建议词,还有搜索最后的落地页等等,广告的部分就穿插在这些战略内容之间。

TapTap的 Serverless 实践也是基于这几个业务场景的实际需求来进行推进的。例如,目前搜广推都依赖的深度学习模型自动化更新/部署,以及组内算法同学都需要依赖的模型实验记录平台,还有站内新内容的一些 NLP 分析处理等。

早期,TapTap 绝大部分的后端服务都是部署在 ECS,通过 Rundeck 来进行管理和部署,在效率和管理上并不是那么理想。在基建升级方案的需求上,我总结了4点:

1. 能大幅提升开发运维效率

2. 以较低的人力成本来满足业务需求
3. 服务足够可靠,能够具备良好的性能
4. 因为 TapTap 工程目前主要是以 Go 语言为主,所以在后续基建升级上需要对 Go 有良好的支
持。

方案对比

我们考虑了两种主流的方案架构,一个是云主机+自建 K8s 全套的解决方案, 还有一种就是 Serverless 架构,使用 Serveless 应用引擎(SAE)和函数计算 FC。

经过对比后,我们选择了后者。一方面是 Serverless 可以免去机器的购买流程,不需要提前购买 ECS。而且本身也自带了一些可选的默认环境,如果没有特殊需求的话,可以基本免去环境搭建的繁琐;另一方面是 Serverless 已经集成了很多基础组件,基本上可以说是做到免运维直接上线的程度。

然后在后续维护上,Serverless 产品在计费精度上相比 ECS 有更高的精度,可以做到分钟级,甚至秒级的计费,做到真正业务使用资源时才进行付费,相比 K8s+ECS 的模式,在早期开发和后续运维上, 都能节省较大的人力成本。

在这里插入图片描述

从 TapTap 实际实验的体验来理解 Serverless 的两个产品的话。

函数计算 FC 把业务的调度和触发逻辑与业务逻辑本身解耦,开发、算法同学可以先在函数计算控制台控制整个业务逻辑的触发与调度逻辑,就不需要再额外地开发,可以更加专注业务逻辑本身的设计,这也决定了函数计算更加适用于有业务驱动的场景,在事件真正发生时去申请资源进行业务逻辑的运行。

而 Serverless 应用引擎 SAE 在我们看来类似于功能更丰富的、提供了全套微服务能力的增强版 K8s,可以极大降低维护成本,并做到真正的开箱即用。这个就比较适合做微服务改造,把原先在 ECS 上的旧服务直接迁移上来,可以在不投入运维人力的情况下获得一套完整的容器化运维方案。

基本上通过两者结合,可以覆盖掉 TapTap 绝大多数的业务场景,实现所有应用服务 All On Serverless。

业务实践**

函数计算 FC

1)通过 OSS 触发的全自动模型部署/小时级更新服务。

在这里插入图片描述

TapTap 有一个通过 OSS 触发的模型自动部署与更新服务,实现模型导出及部署。算法同学在训练完自己的模型,无论是 TensorFlow 还是 PyTorch 以及其他格式的机器学习模型,只需要导出到指定的 OSS B 存储空间 ucket ,就会触发模型的更新与部署服务,实现完整的导出即部署。这样算法同学哪怕在不依赖其他工程人力的情况下也能自行进行模型的部署、更新以及后续的弹性缩扩容。

2)通过 HTTP 触发的模型实验管理平台(WEB 服务)

在这里插入图片描述

算法同学通过 HTTP 触发器实现的内部模型实验管理与参数平台提交模型训练任务之后,我们会自动地将它训练的参数以及日志地址、日志实例记录下来,实现所有的实验可追溯、可管理,这本身是一个 Web 服务,它是有前端的,但又是一个对内的服务,对 QPS 和性能要求不是很高,于是就放到函数计算上,在管理成本上相当有优势,尤其是近期函数计算有免费额度,所以基本没花钱。

3)通过 Kafka 触发新内容 NLP 处理/解析服务

在这里插入图片描述

当 TapTap 站内的用户发了一个新的帖子,我们会通过 Kafka 推送到 NLP 分析服务商进行NLP 的处理与解析,存下来用于之后的搜索,这可以实现用户发一条内容调一次服务,精确地控制成本。

4)每周/每日定时统计资源消费
在这里插入图片描述

每周/每日定时触发的 MaxCompute、EAS 资源消费统计,TapTap 会自动拉取阿里云后台的非结构化消费账单,然后将它聚合到每一位同学,每个任务以及每个模型上,推送给组内的同学,协助组内同学提升自己的成本意识,也帮助各个业务线更好地做成本管理。

Serverless 应用引擎 SAE

在这里插入图片描述

在 SAE 的落地上,我们选择了组内的预估服务,这个服务本身整合了搜索、推荐、广告都需要的模型推理、特征开发以及样本回传的能力,本身是一个中台型微服务,所有业务线都可以非常低成本的接入目前组内最成熟的线上预估服务。例如现在的搜索页的推荐词的点击率预估,国际版的游戏点击率预估等。

通过 SAE,TapTap 的服务快速具备了 Serverless 的能力,因为 SAE 本身屏蔽了很多资源管理、环境管理以及基础运维组件管理工作,使得 TapTap 可以快速地为国内国外的新场景、新业务上线一套独立的预估服务。

与此同时,TapTap 也集成了 SAE 的告警平台,事件中心以及日志服务,TapTap 通过钉钉告警就可以实时感知线上业务的状态,例如是否发生了 OOM 还是重启、错误日志之类的。

另外,本身这个服务也是接入了 Dubbo Go 框架使服务直接具备了服务注册发现,IP直连,优雅上下线等微服务能力。相比之前使用 ECS 的模式,这套方案在运维管理以及开发上线和后续的成本管控上都有较大的优势,基本可以覆盖从开发上线后续运维的全流程,大大节省的组内的开发成本。

业务价值

简单运维,省心省力 开发可以轻松搞定应用开发、部署、管理全流程,让自己更专注于业务,也大大节省了运维的投入和成本。

不停机发布 +分钟级上线 SAE 支持灰度发布、滚动发布的能力,还提供了较为完善的Open API,可以集成到 Git 中快速部署,使 TapTap 的服务具备了分钟级发版的能力,这个对于新业务尤其具有吸引力。

秒级弹性缩扩容 SAE 支持配置像 CPU、内存、QPS、RT、定时等不同维度指标的扩缩策略,可以帮助提升资源利用率。尤其是业务规模大了之后,通过配置更加精细的弹性策略,可以显著降低机器成本。

多语言微服务能力 SAE 提供了 PHP、Python、GO 等多种运行时,并且基于 K8s Service 多语言服务注册发现,实现了 Go 语言低成本微服务化。

(标题图片来源于视觉中国)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录Day55|392.判断子序列、115.不同的子序列

文章目录392.判断子序列115.不同的子序列392.判断子序列 文章讲解:代码随想录 (programmercarl.com) 题目链接:392. 判断子序列 - 力扣(LeetCode) 题目: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。…

koa 使用

(贴个官网,koa 内容真不多,非常的小巧轻量) 1. koa 是什么 一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,…

关于新正方教务系统(湖北工程学院)的one day越权漏洞的说明

关于正方教务系统漏洞的说明 此漏洞基于湖北工程学院教务管理系统进行演示,漏洞覆盖新正方教务系统8.0以下版本,为本人一年前提交的漏洞,所以并非0day漏洞 此漏洞影响范围巨大,几乎涉及国内一半高校的教务系统,包含武…

我国油气行业勘探开发投入提升 石油资源存在供需短缺矛盾 天然气需求高速发展

根据观研报告网发布的《2022年中国油气市场分析报告-市场竞争策略与发展动向前瞻》显示,油气是指石油和伴生的天然气,被誉为“能源之王”、“工业的血液”,是全世界各国的战略性产业。油气资源种类多样,根据开采难度可分为两大类&…

Python:三方库安装路径及路径变更

文章目录一、安装三方库的几种方式二、指定第三方库的镜像源三、查看安装默认路径四、修改安装默认路径五、查看安装的库六、导出库安装文件七、安装小结一、安装三方库的几种方式 1.直接pip install安装(有网的环境下通用) : 在python–>…

CSDN上讲得最好的——Linux权限

目录 一、shell原理精讲 二、Linux权限概念 三、权限管理 1、访问者分类 2、文件类型及访问权限 3、表示方法 4、设置方法 (1)chmod (2)chown (3)chgrp (4)umask 四、目录权限 五、粘滞位 一、超级管理员删除 二、该目录的所有者删除 三、…

GDAL之重投影(详细篇)

一、空间坐标系对应EPSG编号 二、通用横向墨卡托(UTM)投影坐标系和WGS84地理坐标系转换 一、目标地区的编号查看(中国东部地区属于UTM Zone 50N) 从180“W开始,有60个纵向投影区,编号为1到60。除了挪威和斯瓦尔巴群岛附近的一些例外,每个区…

【毕业设计_课程设计】基于 U-Net 网络的遥感图像语义分割(源码+论文)

文章目录0 项目说明1 研究目的2 研究方法3 研究结论4 论文目录5 项目工程0 项目说明 **基于 U-Net 网络的遥感图像语义分割 ** 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 实验训练使用 Anaconda 版 Python 3.7 下的 TensorFlo…

OpenSSL BIO源码简析

文章目录1. BIO简介BIO chainBIO数据结构BIO_METHOD数据结构2. Base64示例分析初始化构造BIO链写数据free1. BIO简介 相关文档 /html/man7/bio.html /html/man3/BIO_*.htmlbio - Basic I/O abstraction,即IO抽象层。 BIO有两种: source/sink BIO,即数…

win7系统升级IE11,打补丁KB2729094失败解决办法

因银行这边很多都需要IE11版本,但win7系统大部分需要打一些补丁才能安装。其他补丁都打上了,唯独这个KB2729094一直失败,搞得很无语。还好找到可以直接用命令安装。就不需要打这个补丁了,直接安装使用即可。 1、下载IE11离线安装…

DBCO-PEG-Dopamine,二苯并环辛炔-聚乙二醇-多巴胺,DBCO聚乙二醇衍生物

●中文名:二苯并环辛炔-聚乙二醇-多巴胺,多巴胺聚乙二醇环辛炔 ●英文名:DBCO-PEG-Dopamine,Dopamine-PEG-DBCO ●外观以及性质: DBCO-PEG-Dopamine产物呈固体或粘性液体,取决于PEG分子量,DBCO…

“R语言+遥感”的水环境综合评价方法

目标: 1、掌握R语言基础应用及水环境数据分析方法 2、掌握水环境遥感数据预处理方法 3、掌握水线提取——水体指数与阈值混合法(遥感) 4、掌握水深提取——多元回归分析方法(R语言遥感) 5、掌握水温提取——支持向…

(附源码)springboot学生社团信息管理 毕业设计 011238

目 录 摘要 1 1 绪论 1 1.1 研究背景 1 1.2 研究意义 1 1.3论文结构与章节安排 1 2 学生社团信息管理系统系统分析 3 2.1 可行性分析 3 2.2 系统流程分析 3 2.2.1 数据增加流程 4 2.2.2 数据修改流程 4 2.2.3 数据删除流程 5 2.3 系统功能分析 5 2.3.1 功能性分析 5 2.3.2 非功…

D. Secret Santa(构造)

Problem - 1530D - Codeforces 每年12月,VK都会为其员工举办名为 "秘密圣诞老人 "的传统活动。它是这样发生的。 从1到n的n名员工参加了这个活动。每个员工i被分配到一个不同的员工bi,员工i必须给这个员工做一份新年礼物。每个员工正好被分配…

如何使用Chrome浏览器模拟弱网情况

点击谷歌浏览器图标 打开浏览器后,按下F12键 弹出开发者工具窗口 刷新网页,页面的加载速度为597ms 在开发者工具中,点击Online,在弹出的菜单中点击Slow 3G(慢速3G网络) 重新加载网站,…

PyTorch logit函数

1.PyTorch vs TensorFlow tensorflow是静态图,需要你把啥都准备好,然后它像个傻子一样执行,tensorflow,目前业界更适合部署,毕竟是静态图,infer的时候速度快。 pytorch,它会在执行的时候&…

Android -- 每日一问:如何检测内存泄露,如何进行内存优化?

经典回答 Android 系统为每一个应用程序都设置了一个硬性的 Dalvik Heap Size 最大限制阈值,这个阈值在不同的设备上会因为 RAM 大小不同而各有差异。如果你的应用占用内存空间已经接近这个阈值,此时再尝试分配内存的话,很容易引起 OOM 。 …

效果分析的关键是指标能算出来……

看到题目会不会有一些奇怪? 这算什么关键…… 经历过才知道,这是一个不起眼但却极为重要的部分,企业在数据驱动发展进程中必然会遇到指标算不出来的情况,而且随着企业规模的不断扩大,这一问题会持续伴随。“指标能算…

[附源码]Python计算机毕业设计Django学习互助辅助系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

外汇天眼:美国12月Markit制造业PMI初值不及预期 市场担忧经济下滑

美国12月企业活动进一步萎缩,因新订单降至两年半以来最低水平,但需求疲软帮助大幅冷却通胀。标普全球(NYSE:SPGI)周五表示,追踪制造业和服务业的美国综合PMI产出指数预览值本月从11月的46.4降至44.6。这是该指数连续第六个月低于私营部门萎缩…