1. 运营人员通过运营后台编辑货源匹配规则,启用后触发货车匹配;
2. 货车匹配:
dispatch_task服务:
1. 负责规则的增删改查,规则的增删改通过kafka通知dispatch_flow;
2. goods_match函数负责规则的匹配,复杂的规则拆分成原子规则,每个原子规则通过一个函数实现,例如,同城匹配函数用到redis的geohansh查找货源20km内的司机id;每个函数找到的司机id,通过原子规则之间的逻辑运算符(and / or)进行交集或并集,最终一层层往上得到最终的符合货源的司机id;
dispatch_flow服务
1. task_detail_reboot_task函数负责项目启动时将规则读取进入内存,货源调度匹配时直接读取内存中的规则;
2. monitor_task函数负责接收kafka的规则变更消息,规则变更,则修改flow服务的内存中的全局规则变量;
3. match_goods_task函数负责将匹配任务加载进apscheduler,匹配任务询问dispatch_task获取匹配的司机id;
4. push_goods_task负责最后的货源推送,依赖于极光推送实现。
成就:
- 通过新版调度,提高了车货匹配的效率,主动地为司机推送很多适配的货源,提高司机的赚钱效率;
- 同时,为运营提供了一个可以配置调度规则的调度系统,能更精细化地运营用户的车货匹配;