TapTap 算法平台的 Serverless 探索之路
分享人:陈欣昊,TapTap/IEM/AI平台负责人
摘要:本文主要介绍心动网络算法平台在Serverless上的实践。
《TapTap算法平台的 Serverless 探索之路》
Serverless 在构建应用上为我们节省了大量的运维与开发人力,在基本没投入基建人力的情况下,直接把我们非常原始的基建,或者说是资源管理水平拉到了业界相对前沿的标准。最直观的数据是,我们组仅投入了个位数的人力,就可以为TapTap整个搜广推相关的所有业务提供全套AI和大数据方面的支持。————陈欣昊
心动介绍
心动创立于 2003年,是一家全球游戏开发和发行商,拥有丰富的研发、发行和代理运营经验。截至 2022 年中,心动运营 38 款免费和付费游戏,在全世界拥有 5,000 万月活跃用户,主要分布在大中华地区、东南亚、北美和南美。2016 年,心动推出手机游戏社区和应用商店 TapTap,玩家可以通过官方渠道免费或付费购买下载手机游戏,亦可在社区中与其他玩家交流,截至2022年6月,TapTap 在全球已拥有超过5,000万月活跃用户。
业务背景
TapTap不同于传统的应用商店的分成模式,至今一直坚持做渠道零分成,这也决定了,TapTap目前的商业化,主要由广告驱动。TapTap的广告属于站内的原生广告,与其他非商业化在内容上形态保持高度一致,给用户更好的体验。比如首页的游戏推荐,发现页的内容推荐,搜索引导页的底纹词,以及搜索输入时会出现的搜索建议词,还有搜索最后的落地页等等,广告的部分就穿插在这些战略内容之间。
我们的serverless实践也是基于这几个业务场景的实际需求来进行推进的。例如,目前搜广推都依赖的深度学习模型自动化更新/部署,以及组内算法同学都需要依赖的模型实验记录平台,还有站内新内容的一些NLP分析处理等。
早期,我们绝大部分的后端服务都是部署在ECS,通过Rundeck来进行管理和部署,在效率和管理上并不是那么理想。在基建升级方案的需求上,我总结了4点:
●能大幅提升开发运维效率
●以较低的人力成本来满足业务需求
●服务足够可靠,能够具备良好的性能
●因为我们工程目前主要是以Go语言为主,所以在后续基建升级上需要对Go有良好的支持。
方案对比
我们考虑了两种主流的方案架构,一个是云主机+自建K8s全套的解决方案, 还有一种就是Serverless架构,使用 Serveless 应用引擎(SAE)和函数计算 FC。
经过对比后,我们选择了后者。一方面是 Serverless 可以免去机器的购买流程,不需要提前购买 ECS。而且本身也自带了一些可选的默认环境,如果没有特殊需求的话,可以基本免去环境搭建的繁琐;另一方面是 Serverless 已经集成了很多基础组件,基本上可以说是做到免运维直接上线的程度。
然后在后续维护上,Serverless 产品在计费精度上相比 ECS 有更高的精度,可以做到分钟级,甚至秒级的计费,做到真正业务使用资源时才进行付费,相比K8s+ECS的模式,在早期开发和后续运维上, 都能节省较大的人力成本。

从我们自己实际实验的体验来理解Serverless的两个产品的话。
函数计算 FC 把业务的调度和触发逻辑与业务逻辑本身解耦,开发、算法同学可以先在函数计算控制台控制整个业务逻辑的触发与调度逻辑,就不需要再额外地开发,可以更加专注业务逻辑本身的设计,这也决定了函数计算更加适用于有业务驱动的场景,在事件真正发生时去申请资源进行业务逻辑的运行。
而 Serverless 应用引擎 SAE 在我们看来类似于功能更丰富的、提供了全套微服务能力的增强版K8s,可以极大降低维护成本,并做到真正的开箱即用。这个就比较适合做微服务改造,把原先在 ECS 上的旧服务直接迁移上来,可以在不投入运维人力的情况下获得一套完整的容器化运维方案。
基本上通过两者结合,可以覆盖掉我们绝大多数的业务场景,实现所有应用服务All On Serverless。
业务实践
函数计算 FC
1)通过 OSS 触发的全自动模型部署/小时级更新服务。

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

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

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

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

在 SAE 的落地上,我们选择了组内的预估服务,这个服务本身整合了搜索、推荐、广告都需要的模型推理、特征开发以及样本回传的能力,本身是一个中台型微服务,所有业务线都可以非常低成本的接入目前组内最成熟的线上预估服务。例如现在的搜索页的推荐词的点击率预估,国际版的游戏点击率预估等。
通过SAE,我们的服务快速具备了 Serverless 的能力,因为 SAE 本身屏蔽了很多资源管理、环境管理以及基础运维组件管理工作,使得我们可以快速地为国内国外的新场景、新业务上线一套独立的预估服务。
与此同时,我们也集成了 SAE 的告警平台,事件中心以及日志服务,我们通过钉钉告警就可以实时感知线上业务的状态,例如是否发生了 OOM 还是重启、错误日志之类的。
另外,本身这个服务也是接入了 Dubbo Go 框架使服务直接具备了服务注册发现,IP直连,优雅上下线等微服务能力。相比之前使用 ECS 的模式,这套方案在运维管理以及开发上线和后续的成本管控上都有较大的优势,基本可以覆盖从开发上线后续运维的全流程,大大节省的组内的开发成本。
业务价值
简单运维,省心省力:开发可以轻松搞定应用开发、部署、管理全流程,让自己更专注于业务,也大大节省了运维的投入和成本。
不停机发布 +分钟级上线:SAE支持灰度发布、滚动发布的能力,还提供了较为完善的Open API,可以集成到Git中快速部署,使我们的服务具备了分钟级发版的能力,这个对于新业务尤其具有吸引力。
秒级弹性缩扩容:SAE支持配置像CPU、内存、QPS、RT、定时等不同维度指标的扩缩策略,可以帮助提升资源利用率。尤其是业务规模大了之后,通过配置更加精细的弹性策略,可以显著降低机器成本。
多语言微服务能力:SAE提供了PHP、Python、GO等多种运行时,并且基于K8s Service多语言服务注册发现,实现了Go 语言低成本微服务化。
更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。
TapTap 算法平台的 Serverless 探索之路的更多相关文章
- 全世界最强的算法平台codeforces究竟有什么魅力?
大家好,之前说过由于和LeetCode结了梁子,所以周末的LeetCode专题取消了,给大家写点其他专题的算法问题.目前选择的是国外著名的编程竞赛平台--codeforces.它在竞赛圈名气比较大,对 ...
- 算法导论学习笔记1---排序算法(平台:gcc 4.6.7)
平台:Ubuntu 12.04/gcc 4.6.7 插入排序 #include<vector> #include <algorithm> #include<iostrea ...
- Google发布跨云Serverless管理平台Knative
企业只要使用由Google与Pivotal.IBM.红帽和SAP等企业共同开发的跨云Serverless管理平台Knative,就能在支持Kubernetes的云平台上自由的迁移工作负载,无论是跨私有 ...
- ServerlessBench 2.0:华为云联合上海交大发布Serverless基准测试平台
摘要:华为云联合上海交大重磅推出ServerlessBench 2.0,为社区提供涵盖12类基准测试用例.新增5大类跨平台测试用例.4大类关键特性指标.且多平台兼容的Serverless开放基准测试集 ...
- 阿里重磅开源全球首个批流一体机器学习平台Alink,Blink功能已全部贡献至Flink
11月28日,Flink Forward Asia 2019 在北京国家会议中心召开,阿里在会上发布Flink 1.10版本功能前瞻,同时宣布基于Flink的机器学习算法平台Alink正式开源,这也是 ...
- Serverless 的初心、现状和未来
作者 | 不瞋 导读:Serverless 是如何产生的?当前有哪些落地场景?Serverless 的未来又将如何?本文分享了阿里云高级技术专家不瞋对于 Serverless 的看法,回顾其发展历程, ...
- 精通visual c++指纹模式识别系统算法及实现
通过学习,掌握以下几个问题: 1.核心算法,并且向GVF衍生: 2.核心库封装的方法 2016年11月16日06:52:51 昨日实现了梯度场和频率场的计算.最大的感觉就是建立基础代码库的重要性. 如 ...
- Alink漫谈(一) : 从KMeans算法实现不同看Alink设计思想
Alink漫谈(一) : 从KMeans算法实现不同看Alink设计思想 目录 Alink漫谈(一) : 从KMeans算法实现不同看Alink设计思想 0x00 摘要 0x01 Flink 是什么 ...
- Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构
Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构 目录 Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构 0x00 摘要 0x01 Alink设计原则 0x02 A ...
- Alink漫谈(十二) :在线学习算法FTRL 之 整体设计
Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 目录 Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 0x00 摘要 0x01概念 1.1 逻辑回归 1.1.1 推导过程 ...
随机推荐
- MacOS Monterey 配置 PHP 环境记录
目前 中文网中对于 MacOS 下安装 PHP 教程比较老,并且我个人感觉很难看懂.我在安装 PHP 过程中遇到了很多网络中没有出现过的问题,特此环境配置过程记录如下. 电脑:MacBook Pro ...
- 数据库是mysql,使用DBeaver的SQL编辑器执行sql脚本文件时,报错:No active connection 。
遇到这种问题,多半是因为没有与数据库关联 具体操作点击右键,选择与数据库关联 结果如下 出现这个就好了.
- serdes调试常见功能汇总
初始化流程 CORE复位流程 FW手动加载 FW版本自生成(可选) lane复位流程 TX复位流程 RX复位流程 TX,RX使能,disable(可选)关闭数据通道 速率频点配置,CPU模式配置,PL ...
- C# 获取系统DPI缩放比例以及分辨率大小
一般方法 System.Windows.Forms.Screen类 // 获取当前主屏幕分辨率 int screenWidth = Screen.PrimaryScreen.Bounds.Width; ...
- 如何根据月份查询每月Xxx的总数
我以我的项目根据月份查询每月新增会员的总数为例 Controller @GetMapping("/getMemberReport.do") public R getMemberRe ...
- 神经网络优化篇:机器学习基础(Basic Recipe for Machine Learning)
机器学习基础 下图就是在训练神经网络用到的基本方法:(尝试这些方法,可能有用,可能没用) 这是在训练神经网络时用到地基本方法,初始模型训练完成后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练 ...
- 2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠, 一位需要 付费 的油漆匠
2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不同的墙刷油漆需要的开销和时间.你有两名油漆匠, 一位需要 付费 的油漆匠 ...
- 探索 Linux Namespace:Docker 隔离的神奇背后
在 深入理解 Docker 核心原理:Namespace.Cgroups 和 Rootfs 一文中我们分析了 Docker 是由三大核心技术实现的. 今天就一起分析 Docker 三大核心技术之一的 ...
- Windows手工入侵排查思路
文章来源公众号:Bypass Windows系统被入侵后,通常会导致系统资源占用过高.异常端口和进程.可疑的账号或文件等,给业务系统带来不稳定等诸多问题.一些病毒木马会随着计算机启动而启动并获取一定的 ...
- Redis 使用的 10 个小技巧
Redis 在当前的技术社区里是非常热门的.从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路. 随之而来的一系列最佳实践,使得大多数人可以正确地 ...