阿里妈妈广告应用团队在平台化支撑业务发展的思路下,启动了对应用系统架构、研发模式、组织阵型各个维度的改革和升级,以期通过打造全新的“广告业务平台”来提升应用系统的工程建设能力、沉淀广告业务资产、建设专业的人才梯队、赋能营销业务的创新发展。
其中,业务中心化是推进应用平台化建设最重要的工作之一,我们将广告业务按照领域进行抽象划分,建成了多个业务中心组成的业务平台,每个中心负责该领域的相关业务,多个中心互相配合横向支撑各业务线的需求。业务中心化后,之前单体的推广服务系统变成了微服务架构下的多个业务中心,之前系统内部的调用变成了系统和系统之间的调用,如何管理好由此带来的大量复杂异构系统间的异步调用和通信,是我们亟需抽象和解决问题。
![](https://i-blog.csdnimg.cn/blog_migrate/90e1407806a7d28df21b58fef5ded2fb.png)
▐ 1. 问题分析
在微服务架构下,中心之间为了配合完成复杂的业务,系统和系统之间的“耦合”变的不可避免。系统间的调用方式大体分为同步和异步两类,由于中心对外以HSF(RPC)服务的方式暴漏,故同步调用问题已经很好的由HSF(RPC)中间件解决,因此我们需要重点关注异步交互方式。
应用间使用的异步交互方式一般有两种:一种是采用基于消息队列的异步消息处理(如: Metaq,Notify);另一种是基于数据库的DRC消息变更。举一个异步交互的例子:广告主应用系统和审核系统属于两个不同的领域,团队和人员也是分开的,在系统交互方式上为了避免耦合,大多会采用消息交互这样的方式。比如:一个商品被处罚,审核系统发送处罚消息出来,广告应用系统在接到这个处罚消息之后,需将该商品对应的广告进行下架。
以基于消息队列的方式来搭建异步交互链路为例,我们来看一下发送端和接收端要做的事情:
1) A系统开发消息发送逻辑
2) B系统引入A系统的数据对象定义(系统之间耦合