媒资统一分发中心系统主要负责公司的生产的电影、电视剧等媒资元数据信息以及对应的介质实体文件地址信息,通过接口发送到三方系统。因三方系统接口类型多样性、媒资元数据信息传递格式的多样性和需求多变性,要求媒资分发中心有很高的灵活性,功能方面要有很强的扩展性。随着后期对接项目越来越多,又要求一个项目有需求变动,不能影响其它项目。自从2015年接手媒资数据分发业务以来,媒资分发中心经历了几次系统重构,刚接手时平台采用传统定时任务+条件确定执行流程的方案;第一次重构改为消息队列+组装配置流程+线程池+模板的方案;最近一次重构成流程引擎+消息队列的方式。
下面记录不同版本的方案以及问题
一、传统定时任务方式
本方案采用quartz定时器实现,从母公司直接copy过来,不再过多介绍。
1、新增项目时,需要在系统里添加新对接类型,在程序里判断项目类型,重新实现业务流程。
2、修改需求时,在对应项目的业务流程修改逻辑。
3、代码强偶合,任何修改都可能影响其它流程。
4、业务改动时,需要升级系统,暂停其它项目的注入。
5、基本没有灵活性和扩展性
二、生产流程水线方式
本方案采用工业生产流水线的思想,把媒资元数据注入流程拆分成多个单独的子功能,每个功能由单独线程实现,每个功能线程从MQ中读取数据,处理完后,放回MQ中,下个线程接着处理。把所有的线程用配置文件的方式,根据各线程读写MQ队列数据的关系串起来,组成一套数据处理流程生产线。整个系统共用一套生产线,所有分发域将要分发的数据都经过该生产线。分发域基本配置信息中,可以配