背景
用户下单数据会通过业务系统实时产生入库到mysql库,我们要统计通某个推广渠道实时下单量,以便线上运营推广人员查看不同渠道推广效果进而执行不同推广策略
系统架构
架构图
注:组件不了解的同学可参考其他文章,本文主要讲项目的实现
1、某些同学会问,直接在业务系统加入JS埋点通过发日志不更好吗?
答:第一、JS埋点业务系统涉及产品改造,不可能因为一个需求让你去随便改业务系统。第二、即使加入JS埋点也不可能获得业务系统的全部数据。所以业务系统核心数据还得去业务系统库获取。
2、还有人问加入Kafka太多余
答:第一、加入Kafka为了使系统扩展性更强,可方便对接各种开源产品。第二、通过Kafka消息组可使同一条消息被不同Consumer消费,用户离线和实时两条线。
解析Mysql binlog日志
主要逻辑
1.创建Canal连接
2.解析Mysql binlog获得insert语句
public static void main(String args[]) {
//第一个参数为Canal server服务IP地址如果使用windows开发连接linux Canal服务需要制定IP eg: new InetSocketAddress("192.168.61.132", 11111)
//第二个参数为Canal server服务端口号 Canal server IP和端口号在 /conf/canal.properties中配置
//第三个参