View on GitHub

个人笔记

SongPinru 的小仓库

所属需求

原型链接

设计目标

实时解析直播数据,转化合并后写入下游OLAP

上游数据繁杂,需要整理合并,统一数据字段

整体设计

graph TB
	前端--"记录sec_uid"-->tb_dd[(Mysql_订单表)]
	tb_dd.->tb_user[(Mysql_用户表)]
	subgraph sc direction LR [Schedule]
        schedule-.监控时间.->tb_dd
        schedule--请求爬虫接口-->Spider_主页信息       
        schedule--请求直播接口-->Spider_直播
        
    end
    
    Spider_主页信息-->tp2[Kafka]
    Spider_主页信息--同步接口,补充uid-->tb_dd
	Spider_直播-->tp2[Kafka]
	tp2-->ck_主播历史明细
	tp2-->flink1
	
	flink1-->ck_商品历史明细
	
	tp2-->flink2
	flink2-->ck_直播间状态历史
	
    flink2-->Mysql_直播间状态
    tp2-->flink3
    flink3-->ck_观众事件明细
    flink3-->ES_弹幕词云
    
	

详细设计

直播间状态

graph LR
	topic-->flink((Flink))
	flink-->filter
	filter--直播状态数据-->calculate-->res
	res--追加-->Clickhouse[(Clickhouse)]
	res--更新-->mysql[(Mysql)]
type desc
WebcastRoomUserSeqMessage 直播间观众消息
WebcastStartLiveMessage 直播开始
WebcastEndLiveMessage 直播结束
WebcastLikeMessage 直播间点赞消息(点赞数)
WebcastEcomMessage 直播正在购买消息
WebcastLiveRoomInfoMessage 直播间

核心字段:

  • 开始时间
  • 结束时间
  • 观看人数
  • 峰值人数(观看人数最大值)
  • 平均在线人数
  • 总点赞数
  • 预估购买人数

直播观众事件

graph LR
	topic-->flink((Flink))
	flink-->filter
	filter--观众事件-->tb1[(Clickhouse)]
	filter--弹幕内容-->tb2[(ES)]

type desc
WebcastChatMessage 弹幕
WebcastFansclubMessage 加入粉丝团
WebcastGiftMessage 送礼
WebcastSocialMessage 互动?
WebcastScreenChatMessage 屏幕消息(房管或其他主播发送的消息)
WebcastLikeMessage 点赞
WebcastMemberMessage 进入直播间总览信息

观众事件核心字段:

  • user信息
  • 观众事件类型

商品数据

graph LR
	topic-->flink((Flink))
	flink-->filter
	filter-->clickhouse[(Clickhouse)]
type desc
product 直播间商品消息

商品核心字段:

  • 产品ID
  • 产品名称
  • 产品图url
  • 价格
  • 初始最高价
  • 最低价
  • 商品类型
  • 佣金比例
  • 佣金费用
  • 上架时间
  • 下架时间
  • 全网总销量
  • 预估销量
  • 上架时在线人数

Clickhouse字段设计

https://docs.qq.com/sheet/DZHRsU3BzdEpCdVBJ