网站建设360 全景制作方案,namecheap购买域名,百度灰色关键词排名推广,珠海制作企业网站直播因其能与观众进行实时互动的独特优势#xff0c;成为目前最为流行的娱乐形式之一。想要优化直播效果#xff0c;有许多指标需要跟踪。最常见的指标比如#xff1a;人流量、评论数量、直播卡顿时长等等。
本教程将分享如何使用 RisingWave 监控直播流量指标。我们为本教…直播因其能与观众进行实时互动的独特优势成为目前最为流行的娱乐形式之一。想要优化直播效果有许多指标需要跟踪。最常见的指标比如人流量、评论数量、直播卡顿时长等等。
本教程将分享如何使用 RisingWave 监控直播流量指标。我们为本教程设置了一个演示集群以便大家可以轻松尝试。
1. 开始之前
确保您的环境中安装了 Docker 和 Docker Compose。请注意Docker Compose 包含在 Windows 和 macOS 的 Docker Desktop 中。如果您使用 Docker Desktop请确保在启动演示集群之前已经运行。确保 PostgreSQL 交互式终端 psql 已安装在您的环境中。有关详细说明请参阅下载 PostgreSQL。
2. 启动演示集群
在演示集群中我们打包了 RisingWave 和一个工作负载生成器。一旦集群启动工作负载生成器将开始生成随机流量并将它们发送到 Kafka。
首先将 RisingWave 仓库克隆到环境中。
git clone https://github.com/risingwavelabs/risingwave.git导航到 integration_tests/livestream 目录并从 docker compose 文件启动演示集群。
cd risingwave/integration_tests/livestream
docker compose up -d命令未找到 -Compose V2 中的默认命令行句法以 docker compose 开头。详见 Docker 文档。 -如果您使用的是 Compose V1请改用 docker-compose。 必要的 RisingWave 组件将被启动包括 Frontend 节点、Compute 节点、Meta 节点和 MinIO。工作负载生成器将开始生成随机数据并将它们发送到 Kafka topic。在这个演示集群中物化视图的数据将存储在 MinIO 实例中。
连接到 RisingWave 以管理数据流并执行数据分析。
psql -h localhost -p 4566 -d dev -U root3. 将 RisingWave 连接到数据流
我们已经使用演示集群在 Kafka 中设置了数据流以 JSON 格式我们可以使用以下 SQL 语句连接到这些流。数据包含了直播流量指标的信息以及每个流的独特观众数量。
CREATE MATERIALIZED VIEW live_video_qos_10min AS
SELECTwindow_start AS report_ts,room_id,SUM(video_total_freeze_duration) AS video_total_freeze_duration,AVG(video_lost_pps) AS video_lost_pps,AVG(video_rtt) AS video_rtt
FROMTUMBLE(live_stream_metrics,report_timestamp,INTERVAL 10 MINUTE)
GROUP BYwindow_start,room_id;RisingWave 已连接到流但尚未开始消费数据。要处理数据我们需要定义物化视图。创建物化视图后RisingWave 将从指定的偏移量开始消费数据。
4. 创建物化视图
在本教程中我们将创建不同的物化视图用于跟踪直播流量性能和观众数量。
4.1 设置直播流量性能的物化视图
第一个物化视图将总结每个流每 10 分钟的流量性能。为了创建它我们将使用 tumble 函数将每个事件映射到一个 10 分钟的窗口并根据每个房间聚合以计算流卡顿的时长、每秒平均丢包数和平均往返时间。
CREATE MATERIALIZED VIEW live_video_qos_10min AS
SELECTwindow_start AS report_ts,room_id,SUM(video_total_freeze_duration) AS video_total_freeze_duration,AVG(video_lost_pps) AS video_lost_pps,AVG(video_rtt) AS video_rtt
FROMTUMBLE(live_stream_metrics,report_timestamp,INTERVAL 10 MINUTE)
GROUP BYwindow_start,room_id;我们可以使用以下 SQL 语句查询结果。
SELECT * FROM live_video_qos_10min ORDER BY room_id, report_ts;这里是一个示例结果。
report_tsroom_idvideo_total_freeze_durationvideo_lost_ppsvideo_rtt2022-10-19 11:30:0000:00399878395015284.64286196.214292022-10-19 11:40:0000:00399878395036354.66667196.533332022-10-19 11:50:0000:0039987839506034.09091175.181822022-10-19 11:30:0000:0065850832714314.32143201.357142022-10-19 11:40:0000:0065850832736195.23333191.86667
4.2 设置观众数量的物化视图
接下来我们将设置两个物化视图来跟踪观众数量。
第一个物化视图将每分钟跟踪整个直播网站的独特观众数量。我们将使用 tumble 函数将每个事件映射到一个一分钟的窗口并计算每个时间窗口内的不同观众数量。
-- 实时总 UV 数据看板。
CREATE MATERIALIZED VIEW total_user_visit_1min AS
SELECTwindow_start AS report_ts,COUNT(DISTINCT user_id) AS uv
FROMTUMBLE(live_stream_metrics,report_timestamp,INTERVAL 1 MINUTE)
GROUP BYwindow_start;我们可以使用以下 SQL 语句查询结果。
SELECT * FROM total_user_visit_1min ORDER BY report_ts;这里是一个示例结果。
report_tsuv2022-10-19 11:35:0000:0022022-10-19 11:36:0000:0022022-10-19 11:37:0000:0022022-10-19 11:38:0000:0022022-10-19 11:39:0000:002
第二个物化视图将每分钟跟踪每个主播的独特观众数量。我们将使用 tumble函数将每个事件映射到一个一分钟的窗口然后按 room_id 分组计算每个主播的独特观众数量。
CREATE MATERIALIZED VIEW room_user_visit_1min AS
SELECTwindow_start AS report_ts,COUNT(DISTINCT user_id) AS uv,room_id
FROMTUMBLE(live_stream_metrics,report_timestamp,INTERVAL 1 MINUTE)
GROUP BYwindow_start,room_id;我们可以使用以下 SQL 语句查询结果。
SELECT * FROM room_user_visit_1min ORDER BY room_id, report_ts;这里是一个示例结果。
report_tsuvroom_id2022-10-19 11:35:0000:00139987839502022-10-19 11:36:0000:00139987839502022-10-19 11:37:0000:00139987839502022-10-19 11:38:0000:00139987839502022-10-19 11:39:0000:0013998783950
完成后运行以下命令以断开 RisingWave 的连接。
\q可选要删除容器和生成的数据请使用以下命令。
docker compose down -v5. 总结
在本教程中我们学到了
如何分析直播流量指标。如何设置实时数据看板以跟踪独特观众数量。
这些数据指标不仅能帮助主播实时调整直播策略还能帮助平台深入洞察用户行为进而优化产品极大地改善用户体验。本 Demo 只是抛砖引玉欢迎大家充分利用 RisingWave 的强大功能挖掘其在直播领域的更多应用。
6. 关于 RisingWave
RisingWave 是一款开源的分布式流处理数据库旨在帮助用户降低实时应用的开发成本。RisingWave 采用存算分离架构提供 Postgres-style 使用体验具备比 Flink 高出 10 倍的性能以及更低的成本。
加入 RW 社区欢迎关注公众号RisingWave 中文开源社区
想要了解和探索 RisingWave欢迎浏览我们的官网risingwave.com/
快速上手 RisingWave欢迎体验入门教程github.com/risingwave
深入理解使用 RisingWave欢迎阅读用户文档zh-cn.risingwave.com/docs