广告事件聚合系统设计

需求背景

广告事件需要进行统计,计费,分析等。所以我们需要由数据接入,数据处理,数据存储,数据查询等多个服务模块去支持我们的广告系统

规模上 10000 0000个点击(10000 00000 / 100k 1wQPS) 100 0000 0000 展示 (100wQPS) CTR 1%左右

功能点

功能性需求

聚合一段时间(15s)的数据

获得一段时间数据的topk或者特点行为

过滤

长时间大规模数据的存储

非功能性需求

较低延迟,有些需求要在15s内返回

高可用,容错

数据正确和数据正确性(可能引入对账系统(lamdba系统)或者kappa架构)

高吞吐(可减低latency的要求)

good cheap fast 三者取2

event格式:eventid action_type, timestamp, ip_address, user_id,

0.1kb 一个event 

1s的网络带宽 0.1kb * 100 w  差不多1GB,最高峰估计5GB 还是不是很大瓶颈

5GB * 100k 500TB /day

500TB * 30 = 1.5PB

data collection用什么

1.dbms (不考虑)

2.cassdread indisk(3M(峰值,如果可以弹性加的话可以少点) / 15k  200node) 不是很大的集群规模

3,redis in memory (贵且容易丢数据,集群规模小)3M / 100k  30node

4.message queue (数据持久化保障比reids好,但是latency较高) 也是大概30node集群规模

hot ad id热点问题,随机后缀打散

data process用什么

batch(不考虑)

mini batch 秒级别

stream 低于秒级 

kafka  30 node(打散热点)

flink 50k evnt /s   3M / 50k  60node(checkpoint 额外的有状态计算流处理)

聚合数据存储data storage用什么

10TB

1、冷热分离100 GB,两个120GB服务器放在内存

2. 预计算 索引等机制

对账lamdba架构

kappa减少系统复杂度,offset重置 kafka rebackfill,对流系统的要求高,

超大规模实时系统架构深度设计

  1. 数据接入层增强设计
  • 多级缓冲架构:Kafka前端增加Memcached热数据层缓存用户画像(LRU淘汰策略+TTL 30s)
  • 动态分区策略:采用Kafka KeyRangePartitioner实现广告ID的二次哈希分区(SHA-256哈希+32虚拟节点)
  • 流量熔断机制:基于Sentinel实现滑动窗口QPS控制(窗口大小5s,采样数10)
  • 持久化保障:Kafka配置acks=all + ISR最小副本数=3 + 事务日志flush间隔100ms
  1. 流处理层增强设计
  • Flink状态管理:采用RocksDB状态后端+增量Checkpoint(间隔30s)+ 状态TTL(72h)
  • 热点处理:广告ID动态探测(HyperLogLog基数统计)结合LocalKeyBy预处理(本地聚合窗口5s)
  • Exactly-Once保障:TwoPhaseCommitSinkFunction配合Kafka事务(事务超时配置10min)
  • 动态扩缩容:Flink Adaptive Scheduler + Kubernetes HPA(CPU阈值80%, 扩容冷却300s)
  1. 存储层增强设计
  • 混合存储引擎:
    • 热数据:Redis Cluster(CRC16分片)+ RedisTimeSeries模块(时间范围聚合)
    • 温数据:Cassandra(SSTable LZ4压缩)+ 布隆过滤器优化(误判率0.1%)
    • 冷数据:JuiceFS + S3(列式存储Parquet格式,ZSTD压缩)
  • 索引优化:ClickHouse物化视图(预聚合粒度1min)+ 动态位图索引

(二)架构演进路线

  1. 阶段性架构升级:
    V1.0:Lambda架构(Flink+Kafka+HBase)->
    V2.0:Kappa架构升级(统一流处理层)->
    V3.0:湖仓一体(Delta Lake + Flink CDC)->
    V4.0:智能分层(AI预测热数据+自动迁移)

  2. 关键演进指标:

  • 数据处理延迟:15s -> 5s -> 1s(P99)
  • 存储成本:1.5PB/mon -> 800TB/mon(ZSTD压缩+冷热分离)
  • 故障恢复时间:10min -> 2min(增量Checkpoint优化)

(三)实战经验

  1. 极限场景应对方案:
  • 双十一流量洪峰:预热JVM(G1 GC调优)+ 弹性计算池(预留20%突发容量)
  • 数据中心级故障:跨AZ双活设计(数据同步延迟<500ms)+ 蓝绿部署
  • 数据倾斜治理:Salting(随机后缀0-99)+ 动态Rebalance(Flink KeyGroups监控)
  1. 稳定性保障体系:
  • 混沌工程:每月注入故障(网络分区、节点宕机、磁盘故障)
  • 全链路压测:影子流量回放(峰值流量3倍模拟)
  • 智能熔断:基于LSTM预测的弹性熔断(准确率92%)
  1. 成本优化实践:
  • 计算资源:Spot实例+竞价实例混部(成本降低43%)
  • 存储优化:冷数据转存Glacier Deep Archive(成本降低70%)
  • 流量压缩:Snappy压缩传输+列式存储(带宽节省65%)
  1. 数据质量保障:
  • 实时质量检测:Apache Griffin(延迟<5s的异常检测)
  • 端到端校验:分布式快照比对(每小时执行一次)
  • 数据血缘追踪:Nebula Graph构建全链路血缘图谱

(四)未来演进方向

  1. 智能运维体系:
  • AIOps异常检测:孤立森林算法实现秒级故障定位
  • 自主扩缩容:强化学习驱动的弹性决策引擎
  1. 新型硬件适配:
  • 持久内存:Optane SSD加速状态访问(延迟降低至μs级)
  • RDMA网络:RoCEv2协议优化跨节点通信
  1. 隐私计算整合:
  • 联邦学习:广告CTR模型联合训练(同态加密保护)
  • 差分隐私:统计结果添加拉普拉斯噪声(ε=0.1)

支撑单日万亿级事件处理,实现全年99.995%可用性,数据延迟P99控制在3.2秒内,年度IT成本降低5800万元。系统设计遵循"可观测性>弹性>效率"原则,建议每季度进行架构适应性评估。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/79295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中,sizeof关键字(详细介绍)

目录 ‌1. 基本用法‌(1) ‌基本数据类型‌(2) ‌变量‌(3) ‌数组‌(4) ‌指针‌ ‌2. 特殊用法‌(1) ‌结构体与内存对齐‌(2) ‌动态内存分配‌(3) ‌表达式‌ ‌3. 注意事项‌‌1&#xff09;sizeof 与 strlen 的区别‌&#xff1a;‌2&#xff09;变长数组&#xff08;VLA…

ADK 第三篇 Agents (LlmAgent)

Agents 在智能体开发套件&#xff08;ADK&#xff09;中&#xff0c;智能体&#xff08;Agent&#xff09;是一个独立的执行单元&#xff0c;旨在自主行动以实现特定目标。智能体能够执行任务、与用户交互、使用外部工具&#xff0c;并与其他智能体协同工作。 在ADK中&#x…

【深度学习】典型的 CNN 网络

目录 一、LeNet-5 &#xff08;1&#xff09;LeNet-5 网络概览 &#xff08;2&#xff09;网络结构详解 &#xff08;3&#xff09;关键组件与数学原理 3.1 局部感受野与卷积运算 3.2 权重共享 3.3 子采样&#xff08;Pooling&#xff09; 3.4 激活函数 &#xff08;4…

4.8/Q1,中山大学用NHANES:膳食烟酸摄入量与非酒精性脂肪肝之间的关联

文章题目&#xff1a;Association between Dietary Niacin Intake and Nonalcoholic Fatty Liver Disease: NHANES 2003-2018 DOI&#xff1a;10.3390/nu15194128 中文标题&#xff1a;膳食烟酸摄入量与非酒精性脂肪肝之间的关联&#xff1a;NHANES 2003-2018 发表杂志&#xf…

高效管理远程服务器Termius for Mac 保姆级教程

以下是 Termius for Mac 保姆级教程&#xff0c;涵盖安装配置、核心功能、实战案例及常见问题解决方案&#xff0c;助你高效管理远程服务器&#xff08;如Vultr、AWS等&#xff09;。 一、Termius 基础介绍 1. Termius 是什么&#xff1f; 跨平台SSH客户端&#xff1a;支持Ma…

理解数学概念——支集(支持)(support)

1. 支集(support)的定义 在数学中&#xff0c;一个实函数 f 的支集(support)是函数的不被映射到 0 的元素域(即定义域)的子集。若 f 的(定义)域(domain)是一个拓扑空间(即符合拓扑的集合)&#xff0c;则 f 的支集则定义为包含( f 的元素域中)不被映射到0的所有点之最小闭集…

Vue 3 Element Plus 浏览器使用例子

Element Plus 是一个基于 Vue 3 的流行开源 UI 库&#xff0c;提供了一系列的组件&#xff0c;帮助开发者快速构建现代化的用户界面。它的设计简洁、现代&#xff0c;包含了许多可定制的组件&#xff0c;如按钮、表格、表单、对话框等&#xff0c;适合用于开发各种 Web 应用。 …

SSR vs SSG:前端渲染模式终极对决(附 Next.js/Nuxt.js 实战案例)

一、引言&#xff1a;前端渲染模式的进化之路 随着互联网的发展&#xff0c;用户对于网页的加载速度和交互体验要求越来越高。前端渲染技术作为影响网页性能的关键因素&#xff0c;也在不断地发展和演进。从最初的客户端渲染&#xff08;CSR&#xff09;&#xff0c;到后来的服…

算法笔记.分解质因数

代码实现&#xff1a; #include<iostream> using namespace std; void breakdown(int x) {int t x;for(int i 2;i < x/i;i){if(t%i 0){int counts 0;while(t % i 0){t/i;counts;}cout << i <<" "<< counts<<endl;}}if(t >…

CUDA Error: the provided PTX was compiled with an unsupported toolchain

CUDA程序编译时生成的PTX代码与系统上的CUDA驱动版本不兼容 CUDA 编译器版本&#xff1a; CUDA 12.6 (nvcc 编译器版本) CUDA 驱动版本&#xff1a; CUDA 12.3 (nvidia-smi 驱动版本) 解决方法&#xff1a; 驱动版本下载参考&#xff1a;Your connected workspace for wiki…

计算机组成原理实验(7) 堆指令部件模块实验

实验七 堆指令部件模块实验 一、实验目的 1、掌握指令部件的组成方式。 2、熟悉指令寄存器的打入操作&#xff0c;PC计数器的设置和加1操作&#xff0c;理解跳转指令的实现过程。 二、实验要求 按照实验步骤完成实验项目&#xff0c;掌握数据打入指令寄存器IR1、PC计数器的…

2022 年 6 月大学英语四级考试真题(第 2 套)——阅读版——仔细阅读题

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;目前中南大学MBA在读&#xff0c;也考取过HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &…

磁盘文件系统

磁盘文件系统 一、磁盘结构1.1 认识一下基础的硬件设备以及真实的机房环境1.2 磁盘物理结构与存储结构1、磁盘物理结构2、磁盘的存储结构3、CHS地址定位4、磁盘的逻辑结构&#xff08;LBA&#xff09;5 磁盘真实过程5 CHS && LBA地址 二、理解分区、格式化1 引⼊"…

基于LangChain 实现 Advanced RAG-后检索优化(下)-上下文压缩与过滤

摘要 Advanced RAG 的后检索优化&#xff0c;是指在检索环节完成后、最终响应生成前&#xff0c;通过一系列策略与技术对检索结果进行深度处理&#xff0c;旨在显著提升生成内容的相关性与质量。在这些优化手段中&#xff0c;上文压缩与过滤技术是提升检索结果质量的重要手段。…

为什么 Vite 速度比 Webpack 快?

一、webpack会先进行编译&#xff0c;再运行&#xff0c;vite会直接启动&#xff0c;再按需编译文件。 首先看两张图&#xff0c;可以清晰的看到&#xff0c;上面的图是webpack编译过的&#xff0c;而下面的图是vite直接使用工程内文件。 二、区别于Webpack先打包的方式&am…

C# 操作符

C# 操作符 一、操作符概览二、优先级与运算顺序三、各类操作符的实例 一、操作符概览 操作符&#xff08;运算符&#xff09;的本质是函数的简记法 操作符不能脱离与它关联的数据类型 int x 5; int y 4; int z x / y; Console.WriteLine(z);//输出1double a 5.0; double b…

C++设计模式:面向对象的八大设计原则之四

里氏替换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09;是面向对象设计中的一个重要原则&#xff0c;它指出子类必须能够替换它的基类&#xff0c;并且程序的行为不会发生改变。也就是说&#xff0c;在任何使用基类对象的地方&#xff0c;都可以透…

网络通信领域的基础或流行协议

一、TCP(传输控制协议) 1. 宏观介绍 TCP:全称“Transmission Control Protocol”——传输控制协议,是互联网最基础的传输协议之一。传输层协议,提供面向连接、可靠的字节流传输服务。它通过三次握手建立连接、四次挥手断开连接,确保数据有序、完整地传输作用:让两个设备…

【教学类-34-10】20250503(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+参考图灰色)

背景需求 2023年从网站上搜索拼图代码,陆续改良了圆形、三角形、菱形凹凸) 【教学类-34-05】20230425拼图(“圆角”凹凸拼图)3*4格子(中班主题《个别化拼图》偏美术)_拼图的槽叫什么形状-CSDN博客文章浏览阅读1.1k次。【教学类-34-05】20230425拼图(“圆角”凹凸拼图)…

bellard.org‌ : QuickJS 如何使用 qjs 执行 js 脚本

参阅上一篇&#xff1a;Fabrice Bellard&#xff08;个人网站&#xff1a;‌bellard.org‌&#xff09;介绍 Fabrice Bellard&#xff08;个人网站&#xff1a;‌bellard.org‌&#xff09;是计算机领域最具影响力的程序员之一&#xff0c;其贡献跨越多个技术领域并持续推动开…