在Omega实时触达系统的系列技术文章中,已经对行为采集中心、CEP规则中心、用户触达中心三个子系统进行了详细介绍。闲鱼定义了自己的DSL语言(领域特定语言),它把复杂的代码开发转换成了一种类SQL形式的简练表达,而在底层具体实现上,端侧、前端和云端可以使用的不同高级语言,如:python、c++、javascript、java等。使用DSL的表达方式这样降低了不仅可以降低技术门槛,还提升了研发效率这就带来了本文所要介绍的问题:如何实现自定义DSL语言到多种底层高级语言的翻译?
DSL语言翻译中遇到的问题
Omega系统中不仅实现了云端的复杂事件计算(CEP)引擎,端侧和前端也实现了各自的复杂事件计算引擎,相较于云端可以计算跨用户行为,端侧和前端CEP则更关注于单用户行为的计算,其更加实时和安全。因为各端CEP计算引擎的实现差异,导致了开发人员只能局限在各自领域内做开发,对于跨端开发有较高的技术门槛,另外时间成本也会不可控。因此,我们提出用自定义DSL语言来屏蔽各端的技术差异,在理想的情况下,开发人员应该只关注业务逻辑,其他技术细节不应该花费精力,如下图所示红色部分。