实时项目
2023-05-10 15:06:41 8 举报
直播项目
作者其他创作
大纲/内容
统计直播间的人气值
方案二
统计10分钟内,各个分类、各种事件类型的热门商品
OpenResty+lua脚本
数据源
OpenResty = Nginx + Lua
lua脚本,将接受的数据转JSON 按时间生成log文件
行为数据采集
ClickHouse
实现Kafka到ClickHouse的数据一致性将 Topic、Partition、Offset 拼接成唯一id
SourceTAILDIR
Kafka
Nginx
热门商品Top实时统计
优化方案(写入redis)
直播礼物实时分析
实时入仓
online ++
实时统计累计观众
FileBeat
按照主播ID、deviceId进行KeyBy使用ProcessFunction定义定时器
实时统计直播间在线人数
方案一
统计各个主播的累计观看用户 uv统计各个主播的观看次数 pv
onlin-user
设计ClickHouse的表
将一段时间的数据攒起来,才能统计出TopN(事件时间的滑动窗口)实现步骤: 1.对数据进行KeyBy 2.划分窗口 3. 在窗口中进行聚合 4. 排序(倒排)
支持覆盖(ReplacingMergeTree)(对查询结果准确性要求高的,表名后面加final)
Flume
app
统计新老用户
主题:Accessyjx
JDBC Sink
Flume和FileBeat
生成唯一ID
方案三
直播数据分析
Flink(实时计算)
需求开发
Flume 通过 TAILDIR source(监听日志log)将log数据发送到 Kafka Chancel 优化:1.source 优化:使用Linux的INODE作为文件的唯一标识 避免重复读取2.配置KafkaChannel的ACK机制-1,避免数据丢失---Flume 注重数据的传输,有事务,保证数据不丢失Filebeat是一个轻量型日志采集工具,span style=\
web
状态+布隆过滤器
按照主播(直播间)统计礼物的积分
方案二:按设备ID进行keyBy。 一个分区对应多个组,一个分区一个BloomFilter 避免了数据倾斜,节省资源
filter('live')——>filter('live inter' and 'live leave')——>udafspan style=\"font-size: inherit;\
online --
方案一:按设备类型(huawei-p40)进行keyBy。 一个分区对应多个组,一个组一个BloomFilter 可能数据倾斜,一组一个资源浪费
Log(本地)
插件ngx_kafka_module-master
方案一:来一条处理一条写入redis/Mysql,Job明细数据写入clickhouse 延迟低,效率低 舍弃方案二:数据攒起来批量写入reids(使用定时器,有特殊聚合布隆过滤器不适合使用窗口),明细数据写入clickhouse
异步IO获取到高德地图地地理位置信息,逆地理编码经纬度——>位置信息缺点:冗余高,需要多次调用keyby改进:多维聚合,例如构建Cube
消费数据
各个主播的收到礼物的积分值打赏礼物的数量、受欢迎礼物topN
KafkaChancel
异步IO获取地理位置
0 条评论
回复 删除
下一页