阿里妈妈广告应用团队在平台化支撑业务发展的思路下,启动了对应用系统架构、研发模式、组织阵型各个维度的改革和升级,以期通过打造全新的“广告业务平台”来提升应用系统的工程建设能力、沉淀广告业务资产、建设专业的人才梯队、赋能营销业务的创新发展。

其中,业务中心化是推进应用平台化建设最重要的工作之一,我们将广告业务按照领域进行抽象划分,建成了多个业务中心组成的业务平台,每个中心负责该领域的相关业务,多个中心互相配合横向支撑各业务线的需求。业务中心化后,之前单体的推广服务系统变成了微服务架构下的多个业务中心,之前系统内部的调用变成了系统和系统之间的调用,如何管理好由此带来的大量复杂异构系统间的异步调用和通信,是我们亟需抽象和解决问题。

▐  1. 问题分析

在微服务架构下,中心之间为了配合完成复杂的业务,系统和系统之间的“耦合”变的不可避免。系统间的调用方式大体分为同步和异步两类,由于中心对外以HSF(RPC)服务的方式暴漏,故同步调用问题已经很好的由HSF(RPC)中间件解决,因此我们需要重点关注异步交互方式。

应用间使用的异步交互方式一般有两种:一种是采用基于消息队列的异步消息处理(如: Metaq,Notify);另一种是基于数据库的DRC消息变更。举一个异步交互的例子:广告主应用系统和审核系统属于两个不同的领域,团队和人员也是分开的,在系统交互方式上为了避免耦合,大多会采用消息交互这样的方式。比如:一个商品被处罚,审核系统发送处罚消息出来,广告应用系统在接到这个处罚消息之后,需将该商品对应的广告进行下架。

以基于消息队列的方式来搭建异步交互链路为例,我们来看一下发送端和接收端要做的事情:

1) A系统开发消息发送逻辑

2) B系统引入A系统的数据对象定义(系统之间耦合度增加)

3) B系统开发消息订阅、消费逻辑、重试机制、流控机制等

通过这种方式搭建异步链路存在以下几方面问题:

研发效率低: 为了搭建异步链路,B系统的研发人员不得不写消息订阅逻辑、异常重试逻辑、流控逻辑,而这些逻辑与核心业务处理并无太多关系,属于“无效代码”的范畴(既无业务价值又无技术含量的代码)。且联调过程中需要异步链路上下游多个系统的人员进行配合,研发和联调的效率都比较低。

链路运维难: 由于异步链路的代码散落在各个系统中,没有一个集中的平台来进行管理和运维,整体异步链路处于不可见不可管不可控的状态;也没有一个人清楚系统间共有多少条异步链路,每条异步链路流转的情况,尤其是在大促节点,需要排查、限流的时候就会很无助;另外异步链路交接也是个问题,通常只有当时负责开发的同学清楚整个链路,一旦有人员变动,原有链路几乎就会处于无人维护的状态,这无疑给业务的稳定性带来了很大隐患。

问题排查难: 一旦出现问题,排查人员需要把异步链路中涉及到的各个节点从头到尾熟悉一遍,且由于各个系统日志记录的方式、格式、详细程度各不相同,存储的位置分散,这大大影响了问题排查效率。

上述异步链路存在的问题,最根本原因还是链路处于不可见不可管不可控的状态。那么,如何做到可见可管可控呢?我们应该都了解ESB(企业服务总线)的思想,ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务级别上动态的互连互通,是一种在松散耦合的服务和应用之间标准的集成方式。我们的异步链路正是缺少了这样一个集中的点来进行配置、管理和问题排查,借鉴ESB的思想,我们希望整个异步链路的交互应该由网状结构调整成更便于管理的总线型结构。

▐  2. 方案设计

本着这个目标,我们打造了工具平台:AMB应用消息总线(以下简称AMB),来解决应用内部、应用之间基于消息的异步处理请求,由AMB完成消息转换、路由、处理等功能,并提供统一的监控、报警、重试、流控等机制。

AMB的系统架构如下图,主要分为控制台和后端。

控制台主要面向异步链路的开发运维同学,包含“创建任务”和“任务管理”两块。“创建任务”模块可以在上面进行链路的可视化、拖拽式配置,我们抽象了一组标准组件,基于这些组件可以完成流程的配置;

“任务管理”模块主要负责链路的启停管理,链路运行状态及日志的查看。

AMB的后端采用分层的思想进行设计(如下图所示):

  • 最上面是Connector层,负责对接外部各种协议,如:Metaq, Notify, DRC, HSF等,这一层支持扩展,以便适应需要新增协议的场景。

  • 再往下是链路组件层,包含我们抽象的一组用来搭建流程的标准组件,目前有:过滤器、转换器、处理器、分流器、路由器等等,组件库本身也是可扩展的,根据业务场景的需求可以不断丰富组件库的组件。

  • 再往下是平台服务层,是平台本身提供的一些标准化的公共能力,如:日志、重试策略、监控报警、流控等。

  • 最底层是我们的执行引擎,AMB的运行时是跑在我们另一个任务托管的工具平台鹊桥上的。一条AMB流程占用一个Jstorm的拓扑,流程和流程之间做到了完全隔离。利用Jstorm的扩容缩容机制,我们可以快速响应流程压力的变化。

▐  3. 技术亮点

从目前实际场景出发,AMB建设有以下几方面亮点:

易用性:AMB的用户是我们的研发同学,在日常研发场景中,用户对于易用性和效率有很高的要求,需要让用户感知到配置流程比开发流程更快更方便。为此,我们研发了自助化的流程配置控制台,基于我们预定义的标准组件,用户通过拖拽式的所见即所得的方式就可以完成一条流程的配置。

丰富的流程组件:组件相当于搭建一条流程的原子积木,组件之间相互配合来完成一条流程的业务逻辑。目前平台已经抽象了一系列的通用组件,基本能够满足大部分的研发需求,对于组件库不能满足的,我们还支持自定义组件,来扩展组件库的能力。同时标准组件库本身也在随着业务需求的演进而不断的丰富。

隔离性:对于业务方来说,流程的运行是从自己的应用内部转到公共的AMB 上,如何保证自己的流程不受其他流程影响,如何获得足够的处理能力等是业务方非常关心的问题。AMB底层依赖Jstorm拓扑来运行流程,单个流程独占一个拓扑,完全做到了流程间的物理隔离。同时借助Jstorm的动态扩缩容机制,流程处理能力能够快速的扩张和收缩,做到实时响应业务处理压力的变化。

运维监控:异步链路的监控和问题排查一直是令研发同学比较头疼的点。AMB作为异步链路的集中化管理节点,拥有统一的监控报警机制、流控机制,另外其集中式标准化的日志,简化了问题排查的路径。

▐  4. 业务效果

AMB系统从16年年初上线至今已经五年半的时间,目前已覆盖阿里妈妈应用系统绝大多数异步链路场景。AMB的出现改变了阿里妈妈广告应用团队异步链路的研发方式,实现了自助式、可视化、拖拽式的流程配置,极大的提高了链路的研发效率,从过去的日级开发变成了现在的小时级配置。同时,AMB优化了广告应用系统的整体架构,做到了异步链路可视可管可控,对于消息重试、流控等公共能力做到了统一规划统一建设,避免了重复和规范不统一的问题。在链路运维上,由于有了统一的可视化平台,链路的运行状态一目了然,规范而集中的日志呈现也使得问题排查变得简单方便起来。

▐  5. 未来展望

AMB作为高效解决复杂异构系统间异步调用和通信问题的工具平台,我们期望助力更多业务发展。同时,我们也将在资源利用率的提高上继续发力,通过将底层流式计算框迁移到Blink,引入智能化资源调度等方式,降低业务支撑成本。

应用平台化的落地虽然带来并行迭代、沉淀复用、工具提效的优势,但也有职能分散、架构复杂的牺牲,因此在大幅提升研发效能、提速业务支撑的同时,也面临着“架构方案最优化抉择难”、“涉及系统多易遗漏”、“信息壁垒使沟通成本高”等诸多问题。

为解决这些问题,建立“业务能力标准化”、“业务编排可视化”,以“机制”代替“人治”的“广告应用中台”的思路逐渐浮现,AMB也将积极参与和广告应用中台的集成,全力支持一站式广告业务接入中台的建设。

—— END ——

加入我们

阿里妈妈应用平台团队,负责阿里集团核心商业产品基础技术设施建设,我们期望通过技术创新赋能业务发展。欢迎感兴趣同学投递简历至:alimama_tech@service.alibaba.com,或关注公众号了解岗位详情。

阿里妈妈应用系统大规模异步交互治理方案相关推荐

  1. 系统间数据交互的方案探讨

    系统间数据交互的方案探讨 ===================================== 互联网时代, 1等公民是建立规范和协议的人 2等公民是提供服务的人 3等公民是开发软件的人 4等公 ...

  2. 请查收 | 2021 阿里妈妈技术文章回顾

    2021年5月13日,「阿里妈妈技术」正式与大家见面了~ 在过去的237天里,我们分享了50篇原创内容,覆盖了广告算法实践.算法工程&引擎&系统建设.智能创意.风控.数据科学等多个技术 ...

  3. 阿里妈妈数据字化营销与MaxCompute的不解之缘

    摘要: 大数据计算服务(MaxCompute)是一种快速.完全托管的 GB/TB/PB 级数据仓库解决方案,目前已在阿里巴巴内部得到大规模应用.来自阿里妈妈基础平台大规模数据处理技术专家向大家分享了M ...

  4. 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler...

    雷锋网 AI 科技评论消息,继去年 11 月开源面向高维稀疏数据场景的深度优化工具 X-Deep Learning(截至发稿,GitHub Star 数已达到 1972)之后,阿里妈妈团队于今日正式开 ...

  5. 【分层实验框架】阿里妈妈大规模在线分层实验实践

    引言 在线服务系统的AB-test方法有很多种.搭建多个可服务集群,从物理上对流量进行隔离是比较常见的一种方式.这种方式应用于大型复杂的在线服务系统时,存在部署比较慢的问题.这种方式的典型架构如下图所 ...

  6. 爆料:阿里妈妈大规模冻结淘宝客佣金

    (配图为2011年反淘宝联盟小卖家聚集淘宝总部) 最近接到一位匿名站长爆料,大意是最近阿里妈妈大规模冻结淘宝客佣金,冻结的人比较多.原因大多都是流量劫持,金额不限,有几百元的,高的也有十多万元的.提供 ...

  7. 高并发图片实时渲染技术在阿里妈妈的大规模应用

    个性化推荐已经广泛应用到新媒体.电商.游戏等领域,当你打开手机淘宝的时候,淘宝会根据你的浏览和购买等历史行为,提供个性化的商品推荐.那么,这些形式多样.风格各异的个性化商品展示是怎样最终呈现到APP中 ...

  8. 每天超50亿推广流量、3亿商品展现,阿里妈妈的推荐技术有多牛?

    作者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 随着深度学习.强化学习.知识图谱.AutoML 等 AI 技术出现更多突破,推荐系统领域的企业和开发者开始将这些技术与传统推荐算法 ...

  9. 阿里妈妈基于TensorFlow做了哪些深度优化?TensorFlowRS架构解析

    一. 综述 深度学习比传统的逻辑回归有着更强的模型刻画能力,同时也带来了计算力百倍提升的需求.相比图像.语音.视频等领域,搜索.广告.推荐等场景有着独特的场景特点: 样本规模和特征空间通常非常巨大,千 ...

最新文章

  1. 那些对混合云开发和应用程序环境的错误认识
  2. Linux文件系统的隐藏权限:chattr lsattr(journal)
  3. linux下手动删除数据库实例
  4. Java接口四个类四则运算_用JAVA设计一个接口,声明有关算术运行的方法,并创建四个应用该接口的类,分别进行+-*/四则运算...
  5. NIST发布企业移动应用安全建议参考指南
  6. c ++查找字符串_C ++类和对象| 查找输出程序| 套装3
  7. C++设计模式-装饰模式
  8. C# Invoke 和 BeginInvoke的区别和共同点
  9. Oracle性能优化求生指南 Oracle数据库专家Guy Harrison权威著作
  10. java开发个人简历模板_java程序开发个人简历模板
  11. linux下隐藏tomcat版本号
  12. knx智能照明控制系统电路图_汇勒智能照明控制-KNX/EIB系统如何安装跟布线的
  13. 凤凰项目:一个IT运维的传奇故事--阅读心得
  14. 网站整站下载工具推荐【Z】
  15. PXE安装windows系统,pxe-e55:ProxyDhcp service did not reply to request on port 4011
  16. vue3实现表格单元格可编辑
  17. 【ELM回归预测】基于非洲秃鹫算法优化极限学习机预测附matlab代码
  18. Python灰帽子环境配置
  19. 风雨哈佛路,我在折戟沉沙的路上浴火重生
  20. 学会学习3--选择恐惧症和收据控

热门文章

  1. IOS9+基础之警报框弹出和操作表弹出
  2. 高校计算机课程建设研讨会通知,常熟理工学院新闻网
  3. 关于vue项目中添加less,less-loader不能运行的问题
  4. html5获取域对象,entity-framework – EF5如何获取域对象的导航属性列表
  5. 零c语言txt下载,C语言问题c-0是什么意思
  6. 获取某个输入框的字符长度_收藏,最全的字符串函数方法,总有你用到的~
  7. python坐标轴刻度设置_学习python中matplotlib绘图设置坐标轴刻度、文本
  8. Android开发之在任意Activity在广点通页面添加自定义布局在穿山甲页面添加任意布局
  9. php 各种进制表示,php各种进制的转换
  10. c++ 传入回调函数 参数没有传入_一文读懂回调函数