从零到百亿级,揭秘科大讯飞广告平台架构演进之路

亲贝从零到百亿级,揭秘科⼤讯飞⼴告平台架构演进之路
⼝述 | 仉乾隆
⼴告、电商和游戏是互联⽹变现的三个最主要⼿段,⽽电商中除了直接卖东西的部分,其他本质上也是⼴告。科⼤讯飞作为⼀家 AI 公司,拥有 90 余万开发者以及海量数据。利⽤⾃⾝的 AI 实⼒和⼤数据能⼒,科⼤讯飞⼴告业务实现了从零到百亿级的⽇交易量,它的业务架构是如何演进的?期间遇到哪些问题?架构中各⼦系统⼜是如何设计的?
肉模在 TGO 鲲鹏会武汉分会活动现场,来⾃科⼤讯飞数字⼴告事业部技术负责⼈仉乾隆带来了《从零到百亿级⽇交易量:⼴告实时竞价平台架构演进之路》的主题分享,来看看科⼤讯飞如何以技术实⼒赋能营销升级。
我先说⼀下当前的系统现状,整个系统平台是分为⼊⼝和出⼝,每天⼊⼝ PV 100 亿左右,竞价次数每⽇ 300 亿左右,单次会话平均 40ms 左右,每天⽇志数量为 20TB+。上图是业务模型,中间是⼴告交易平台。⼴告交易平台核⼼是交易,所以肯定是有买有卖,卖的是流量,流量即媒体,⼴告主来买。
⽬前,绝⼤部分⼴告主要投⼴告的时候,⼀般是先 DSP,然后通过我们的⼴告交易平台,最后到媒体。
螺钉输送机
⼴告交易平台有两个核⼼服务,⼀是流量交易,⼆是⼴告监测。我们在⼴告上⼀直在不停尝试 AI 相关的算法,希望把⼴告做的更有效果,所以我们强依赖数据服务和算法服务。
接下来再来说⽼架构,最开始时,我们只有⼏个程序员和产品,因此⽆论是服务,还是数据,我们都做得是最精简的。但随着业务量的增长,出现了⼏个问题:⼀、⽆法满⾜⾼可⽤;⼆、⽆法满⾜⾼吞吐;三、⽆法满⾜⾼性能;四、运维成本⾼;五、运营效率低。
这是当前的新架构,⼤框架与之前没有太⼤的变化,还是分为三个部分:流量⽹关、服务集和 DSP。流量⽹关具备限流能⼒,相当于“保险丝”保护后⾯的系统,同时还具备流量统计、分流、故障隔离等功能。
内部容器集分为三种,测试、联调、⽣产集。业务⽇志全部进⼊统计计算引擎,这些数据会辅助做运营决策以及后⾯做⼀些监测,整个系统由 APM 负责监控。原来是没有防⽕墙的,随着业务的增长,为了确保安全,我们上线了并发性⾮常强的防⽕墙。
说⼀下流量⽹关的设计。为什么做流量⽹关呢?⼀是内部存在多个系统都需要⽤流量,不同的系统对接⽐较⿇烦,对⼈⼒成本消耗⽐较⼤;⼆是流量对接与竞价耦合,流量接⼊迭代快上线动静⼤,因此我们做了拆分,把流量⽹关独⽴了出来。
上图是限流系统可视化的解释,⾸先我们要实时检测服务后端,当⼀个流量进来以后实时计算限流的⼒度,根据⼒度决定请求是继续还是回退。
不管限流⼒度还是权重都依赖于服务的健康状态,服务健康状态由多个指标进⾏衡量,如服务的处理时间、⽹络的传输时间、节点所在机器物理资源使⽤量等等。建⽴数学模型,可以看到最终效果就是想限哪个就把它压到那个值。
反作弊系统是整个系统的核⼼保障,流量作弊是没法规避,但如果加了这个额外处理会话时间肯定要上去。为了要保证实时性,因此我们把反作弊流程进⾏了分拆,分为实时和离线两个部分,同时将处理流程尽量异步化。最终把反作弊处理耗时压缩到了 3ms 以内。通过三层过滤,现在可以做到准确识别 98% 以上的虚假流量。
反作弊系统核⼼遵循两个原则,⼀个是实时和离线协同,⼆是机器和⼈⼯协同。AI 算法虽然厉害但是某些部分还是要靠蝽卵
反作弊系统核⼼遵循两个原则,⼀个是实时和离线协同,⼆是机器和⼈⼯协同。AI 算法虽然厉害但是某些部分还是要靠⼈类智慧来总结规则,我们把实时的数据通过三层过滤得到结果,同时把实时数据和历史数据进⾏合并来训练模型,然后加上⼈⼯分析形成⼀些策略在模型训练的时候加进去,最终⽣成⼀个模型,这个模型会实时反馈更新系统。
Alan Kay 说过⼀句话,⾯向对象的核⼼是消息传递。设计⼀个庞⼤且持续增长的系统,最应该关注的是内部⼦系统之间怎么交互,⽽不是先考虑系统具备什么属性。Actor 模型在真正意义上实现了 Alan 所讲的⾯向对象概念。
潜流带
⼀次交易过程涉及的逻辑⾮常多,刚开始做的时候是同步阻塞式的,但是随着处理环节越来越多如果还是采⽤同步阻塞模式耗时就太⾼了,所以我们模拟 CPU 超流⽔线重构了业务处理流程,最终效果是提升了任务并发并提⾼了吞吐。
⽬前,我们对接了国内上百家的 DSP,在巨额宽带费⽤以及会话时间成本、⼈⼯运营成本增加的情况下,我们实现了⼀个智能 QPS 调节模块。
下⾯说⼀下缓存系统的设计,最开始我们所有做的东西是根据需求来,只要满⾜需求,就没有做太多的优化,因为当时量不⼤,所以是可以满⾜的。
随着业务量增加,⽼架构强依赖 DB 限制了服务⽔平扩展,同时还有配置⽣效实时性差、增量更新⽆法感知物理删除以及服务 GC 压⼒⼤、容易发⽣故障等问题。基于这个背景我们做了新架构,设计了新的缓存系统。
新架构不仅整个缓存系统⾼可⽤,⽽且更易于服务的⽔平扩展,⽽且新架构更新基于 binlog ⽀持了物
理删除。再有就是全量与增量分⼯协作,实时性⾼,所有的策略毫秒级⽣效,另外是数据剔除更加精准,消除了重复数据拉取,对 GC 更友好。
⽇志系统的设计,通过这个改进以后,我们把服务跟 flume 客户端做了解耦,当前每天系统处理 20TB+ ⽇志量,实时报表可以秒级更新,离线报表做多维度全景观察,服务与⽇志系统解耦更加⾼可⽤,⽇志查询辅助问题定位。
现在的 APM 系统实现了 SaaS、PaaS、IaaS 全监控,状态可视化,随意组合,所有的数据秒级感知到,全链路追踪,⽽且可以启发优化点。
为什么搞这么多个告警⽹关呢?之前只有短信和邮件,邮件不是经常看,实时告警主要是依赖于短信,之前出现过短信延迟⼀⼩时的情况,因此⽤做了备份告警⽹关。
我们在 2018 年年初引进了 Kubernetes,基于 Docker 实现了全部服务的容器化。master 集服务于上百台的服务机器集,如果 master 挂了整个集就瘫了。我们采⽤分布于 5 个独⽴机柜且独⽴⼦⽹的机器构成 master 集,确保整个集的⾼可⽤。
除了“⼀键”滚动升级与回滚,集还⽀持定向弹性扩缩容、多租户隔离、多粒度资源配置管理,以及透明的服务注册与服务发现。
下⾯说⼀个⽐较务虚但是我认为⽐较重要的东西。要做到系统⾼可⽤、平台⾼可⽤,除了技术上的保障,还涉及到很多⾮技术的东西。⼀件事情如果需要多⽅参与,就不可避免出现协作上的问题,因此在整个过程中需要⼀些规范和⼀些制度来保障。我们所有的代码提交,都必须经过 code review,在 code review 过程中会给版本定级。同时我们还设有⽉度的 bug review,即每个⽉⽉底研发、测试会⼀起来审视当⽉测试过程中发现的 bugs,把 bugs 分级分类,看是哪些⼈犯的,有没有共性,下⼀步怎么改善,同时把这些跟个⼈绩效挂钩以防⽌再犯并⿎励⼤家把测试做好。我们采⽤ JIRA 来做需求流程管理,但我们做了⼀系列的定制,确保每⼀步的产出都是可交付可追溯的。从需求提出到产品设计⽅案、研发编码发版、测试⼈员进⾏测试、运维上线,最后反馈到产品,这整个流程必须全部可交付、可验证,⽽且要留档。只有这样才可以做相应的复盘、⾃我检查和⾃我改进。
只有这样才可以做相应的复盘、⾃我检查和⾃我改进。
最后是价值的跟踪,这个是流程管理的重要⼀环。我们针对全部需求做价值跟踪。⼀般需求分两类,⼀个是效益类(即需求上线提升了多少效益),另外是效率类(即需求上线节省了多少时间)。这些再进⼀步反馈到流程管理的需求提出的这⼀层。再就是 TDD,TDD 执⾏前期⽐较耗时,但是养成习惯以后⾮常有益于从源头做好⽅案设计。
除此之外,还需要具备风险意识,上线以后每⼀秒都在产⽣价值,全部代码都会影响营收,因此我们
要求每个⼈有相应的风险意识。再者是 DevOps,这个不是开发运维⽽是开发运营,我们要求是每个研发⼈员都能主动往前⾛,⾛到需求⽅,看⾃⼰的代码到底满⾜了什么满⾜到了什么程度,然后再回过头看⾃⼰做的东西的价值,以及如何做得更好。这对整体业务是⾮常有帮助的。
⼲货没看够?没关系,更精彩的内容等你来!
2019 年 6 ⽉ 14-15 ⽇,由极客邦科技旗下 TGO 鲲鹏会主办的将正式在上海举⾏,我们精⼼策划了技术、思维、战略、管理、视野及领导⼒等六⼤专场,并邀请⾏业内最具影响⼒的管理者许式伟、季昕华、陆栋栋等⼤咖加⼊讲师天团,他们将通过体系化、有洞见的分享帮你应对不断升级的挑战!
先送上 9 折福利:
太阳能手机充电器
精彩嘉宾议题抢先看
李晓东民⽣银⾏信息科技部技术管理中⼼负责⼈
《⾦融科技的转型探索之路》
更多精彩议题,请前往⼀探究竟,⼀个汇聚 500+ 位⾼端技术管理者,30+ 位重磅嘉宾的技术领导⼒盛会,千万不要错过哦!
如何打造开放式组织
听红帽中国区总裁曹衡康怎么说

本文发布于:2024-09-22 03:46:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/122091.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   服务   流量   技术
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议