归档
我归档的所有文章。
-
LangGraph 时光旅行:回溯状态、断点重跑与分支分叉
持久化 Checkpointer 不只是为了关了进程再续。通过 get_state_history 倒序遍历快照链条,传入历史 checkpoint_id 触发断点重跑,或者用 update_state 篡改状态并指定 as_node 派生新分支。结合订房业务,拆透时光旅行的执行语义、幂等防线与工程陷阱。
-
什么时候不必上 Agent 框架:三条边界,四笔成本
LangChain 自己也说:很短、没有工具、只有一个 prompt 的 agent,可能用不上任何框架。这篇把这句话拆成三条边界,对照手搓系列看清框架替你做了什么、又要付哪四笔成本,最后给出按层采用的判断顺序。
-
LangGraph:条件边、Send 与子图如何接成一张图
把线性的 agent ↔ tools 循环推成非线性工作流:条件边负责按 State 选路,Send 按运行时数据动态扇出,子图封装单城市规划,再用 reducer 汇总并发结果;最后讲清 recursion_limit 限制的是 superstep,而不是 Python 调用深度。
-
LangGraph:State 不是一份字典,是一组通道
从 add_messages 到自定义 reducer:讲清 State 的通道模型,再用并行写冲突引出 reducer 不可替代的场合。同一轮两个工具写同一个字段会触发 InvalidUpdateError,reducer 是唯一的解法。
-
Redis 深挖(开篇)· 五大结构与核心命令
Redis 阅读路径的第 1 篇:从竞价与投放等高并发场景出发,一文速通 5 大数据结构的核心命令,扫清足以阻塞单线程的 O(N) 危险操作与运维避坑。
-
LangGraph:用 create_agent 挂上人确认
不再手动编排图拓扑,改用 create_agent 直接生成编排好的 StateGraph。通过 HumanInTheLoopMiddleware 将人工确认拦截前置在工具执行前,底层依然基于 interrupt() 实现。配合 SqliteSaver,同样可实现跨进程续跑。
-
LangGraph:用 SqliteSaver 关了进程再续
将进程内的 InMemorySaver 替换为持久化的 SqliteSaver。把白名单和订单提升至 State 中,确保状态能够跟随文件落地。第一次运行在停住时退出进程,第二次运行读取同一份文件和 thread_id,确认后即可续跑。
-
LangGraph:用 checkpointer 停住,确认之后再续
核心编排依旧是两个节点。通过在订房逻辑前调用 interrupt() 触发中断,利用 checkpointer 按照 thread_id 记录停滞节点。确认后在同一条线上续跑;由于 tools 节点会从头重跑,真正的下单操作必须置于 interrupt() 之后。
-
LangGraph:用 StateGraph 把手搓 while 画成图
用 StateGraph 把手搓 while 画成两个节点。天气和订房挂同一张图,@tool 从签名推出 schema。还没接持久化和人确认。
-
LangChain 和 LangGraph:一套运行时,两个入口
上一篇定了先学这一套。名字还是两个,1.x 之后却叠在一起了:LangGraph 跑循环,create_agent 是日常入口。这篇看公司和设计,以及什么时候才值得把图画开。
-
七个 Agent 框架:市场怎么分,先学哪一个
先按社区活跃度、企业使用情况过一遍 LangChain、LangGraph、OpenAI Agents SDK、Vercel AI SDK、CrewAI、Google ADK、LlamaIndex。再对照手搓系列里已经写过的循环,决定先学哪一个。
-
拼回同一份循环:一次 run 的全生命周期
前面几篇各加了一层:schema、压缩、记忆、计划、检查、护栏、并发、超时、审计。这篇不加新东西,只把它们接回同一个 while,按固定顺序跑完西安那次订房,从进循环到停住等确认,再到续跑下单。
-
上线实战:轮内并发、超时、续跑与审计
调度循环不改。一轮内多个 tool_calls 并发执行,回灌仍按请求顺序配对。工具超时必须回灌;写操作超时先查再订,携带幂等键防重。每轮按 run_id 落盘 messages,确认之后续跑,事后能再跑检查。
-
检查通过仍会打转:护栏拦截与累计 Token
调度循环不改。误差按业务工具步数串行连乘。护栏卡在 dispatch 之前:同一工具同一参数即触发终止,未确认的写操作一律不执行。确认后用同一份 messages 再进循环。累计 token 按每轮重发加总,而非单轮度量。
-
评测一个 Agent:轨迹级校验,而非答案级
调度循环不改。从 messages 中抽出 tool_calls 作为执行轨迹,检查逻辑全部写成代码:有没有跳步、hotel_id 从哪来、房型是否按天气分流。对照轨迹不调模型;真跑一次 run 再用同一套检查复用。
-
用 MCP 接入外部工具:list_tools 与 call_tool 的挂载
循环、记忆、计划三层架构都不改。将 search_location 和 get_weather 挪到 MCP Server:启动时 list_tools 拉取 schema,dispatch 里 call_tool 透传调用。只转发外部工具白名单,回灌结果不可信,必须兜底校验。
-
让 Agent 先规划再执行:把计划写进记忆
调度循环每轮只决定下一个工具,多步任务极易跳步或重复调用。计划是一份存放在记忆里的步骤列表,每轮写进 system。set_plan 写入或替换计划,mark_step 推进步骤状态。参数错了就地重试,步骤做不到则触发重规划。
-
对抗失忆与噪声:上下文裁剪与记忆挂载
模型每轮只能看到本次请求里的 messages 和 tools。messages 只增不减、整段重发,过期的工具返回就退化为废话;一刀切掉目标和试错记录,又变成失忆。解法是:旧 tool 结果只改 content,核心结论抽离到循环外的记忆,每轮写进 system 重新挂载。
-
工具 Schema 怎么写:模型眼里只有 JSON
调度循环跑通后,真正的差距在 schema。description 决定模型何时想起这个工具,enum 与 required 约束参数怎么填,校验失败必须回灌重试。一条铁律:hotel_id 只能来自本次 search_hotels 的产出,绝不接受凭空捏造。
-
从零手搓 Agent:带出口的 while 调度循环
不套框架,只用几十行 Python 裸调 openai SDK 写出能查天气的调度循环。模型只负责声明「我想调这个工具」,真正执行的是你的代码。逐轮追踪 messages 的增长链路,三个出口缺一不可:能改参数的走回灌,不能改的触发终止。
-
AI Agent 是什么:拆解模型、工具、记忆与调度循环
能自主调度工具、把事情办完的才是 Agent。本文将其拆解为模型、工具、记忆、循环四块核心组件。普通聊天只给步骤清单,Agent 则自行执行、回灌,直到终答或触发终止——这是两者最本质的分野。
-
Go 日志设计笔记:从照搬 logback 到删掉一半设计
把一套 logback 配置迁到 Go 的过程记录:第一版方案怎么被一句约束推翻,为什么最后没换成 zap,自定义 slog.Handler 的四个坑,以及一套能照着落地的分工、决策顺序和骨架。
-
Go 工程目录:企业级项目结构与设计规范
从 module 布局到分层架构:cmd/internal/pkg 的取舍、依赖方向与依赖倒置、领域分层、配置与密钥、错误与可观测性、并发骨架、测试分层、构建与发布,一份可直接落地到企业级 Go 服务的目录结构与设计规范。
-
Go 语言基础:核心语法与工程规范系统梳理
从零到能读懂工业级 Go 代码:变量与类型、控制流、函数与泛型、slice/map、struct 与接口、错误处理、defer、goroutine/channel、context、sync 并发原语,再到包与模块、embed、构建标签、测试与工程规范的一份系统学习笔记。
-
可见性与广告验证:MRC、OMID与品牌安全
Updated:买方工程视角的可见性与验证:解析 MRC 标准与 OMID 机制,探讨品牌安全与适宜性。深入 Pre-bid 降权与 post-bid 算账流程,厘清 Join 键、标签窗口与合同对账口径的实战细节。
-
反作弊与 IVT:竞价拦截、近线回灌与结算扣量
Updated:本文从买方工程视角拆解无效流量(IVT)防御体系,探讨 GIVT 与 SIVT 的差异及与 MFA 的边界。文章呈现了从 Pre-bid 拦截、Render 端防伪、近线回灌到结算扣量的四道闸门,分析各渠道作弊画像。结合 OpenRTB 关键字段,对比自建规则与验证厂商的协同分工边界,提供科学的验收指标,助开发者构建高效反作弊架构。
-
VAST、MRAID与端上引擎:广告渲染协议解析
Updated:在程序化广告交易中,竞胜仅仅是广告流转的半场。本文深度剖析创意渲染与打点环节的核心协议,详述 VAST 的 InLine 与 Wrapper 解析链条、四分位及追踪像素打点时机;回顾 VPAID 痛点与 SIMID 安全演进;解析 MRAID 的容器状态机机制;最后梳理端上引擎架构与 OMID 测量口径,全盘排查不计费与对账偏差的根因。
-
推理服务业界落地:从训练产物到推理服务怎么发布
Updated:写给工程师的推理服务落地:换版最小动作是改一个 URI。产物进对象存储,期望状态进 Git,集群对账后拉起 Triton / vLLM 或 CPU 上的 ONNX / PMML;按平台已有能力决定要不要 KServe,对照 LLM、广告深度 CTR 和 CPU 粗排。
-
推理运行时与服务框架选型:运行环境、服务框架、编排平台怎么分层
Updated:写给工程师的推理服务选型:先把「算、接、活」分成运行环境、服务框架、编排平台,再按场景填上常见实现——LLM 对话、广告深度 CTR、轻量打分各走哪一层。变慢时按队列、副本、引擎排查,而不是拿不同层的工具直接比。
-
模型文件格式分类与选择:.pt / SavedModel / ONNX / safetensors / GGUF / TensorRT / PMML 到底怎么选
Updated:写给工程师的模型文件格式选型:权重、计算图、元数据各是什么;只有权重时用 config.json 搭空壳,有图仍可能要 sidecar 做分词和预处理。再按给谁跑选择 checkpoint、safetensors、ONNX、GGUF、TensorRT 或 PMML。
-
Web 变现深挖:GPT、广告标签与可见性如何把页面变成收入
Updated:本文深入剖析 GPT 广告标签机制与 SPA 生命周期陷阱,详述 Header Bidding 与媒体 Ad Server 的胶水逻辑及 SRA 架构优化。通过解构懒加载与广告刷新的增量核算,探讨 MRC 与 OMID 可见性标准、Core Web Vitals 权衡及 consent 同意漏斗,系统排查「有请求没收入」的业务痛点。
-
CTV / OTT 与 SSAI:大屏程序化插播与变现解析
Updated:写给工程师的 CTV/OTT 变现深挖:详细拆解大屏广告名词四层模型与 PG/PMP 履约约束,对比 CSAI 与 SSAI 的架构选型差异。全面剖析包含 decisioning、转码 ladder、manifest 缝合与信标对账在内的全链路机制,探讨直播 SCTE 与点播的场景差异、家庭频控与身份空洞问题,并提供针对黑帧、卡顿与 under-delivery 的排障思路。
-
供应链优化(SPO):买方如何收敛路径与降低 ad tech tax
Updated:本文深入探讨了程序化广告中的供应链优化(SPO)机制,重点解析买方如何通过 schain 等信号收敛冗余路径并降低 ad tech tax。文章详细剖析了同一库存多路径导致的自我竞争问题,构建了包含效果、媒体成本、供应链抽成与风险的路径目标函数,并探讨了打分的工程落地、DSP 漏斗中的去重策略,以及如何通过 A/B 测试避免过度收敛的误杀。
-
多交易所接入工程清单:Vungle、Pangle与Mintegral
Updated:专为工程师打造的多交易所对接实战指南。本文以 TopON 为聚合层,Vungle、Pangle 及 Mintegral 为需求源,深入剖析卖侧工程细节。全面覆盖三层 ID 映射、OpenRTB 协议方言处理、端上超时预算切分、实时竞价与瀑布流历史 eCPM 混比逻辑,并详述 ATT 身份透传、激励回调防刷机制,以及至关重要的三角对账与线上排障。
-
SSP Yield 深挖:底价、流量分层与收益优化
Updated:本文是写给工程师的 SSP 收益优化深度解析。文章探讨了以收入为核心的目标函数,对比了 hard、soft 与动态底价在竞价环境中的应用与估价策略;深入剖析了流量分层中易发的自我实现偏差风险;并针对 Web 端 Header Bidding 与 GAM,以及 App 端 TopON,给出了底价对齐实践。最后结合实验方案解答了「eCPM 涨了收入却跌了」的排障难题。
-
时序数据库 InfluxDB 深挖 · 数据模型、TSM 与降采样
InfluxDB 深挖:时序数据的写多读窗、追加不改特征,Line Protocol 与 measurement/tag/field 数据模型、series cardinality 陷阱,TSM 存储引擎(WAL+Cache+TSM+Compaction)与 TSI 索引,保留策略与降采样,1.x→2.x→3.x(IOx 列存)演进,落到广告系统指标监控的选型与踩坑。
-
归因与结算:MMP、SKAN 与 SSOT
Updated:详解移动归因与结算机制:从 MMP 匹配点击与首启、设定归因窗口,到引入 ATT 政策后利用 SKAN 与概率归因应对标识缺失,最终依靠 SSOT 输出跨渠道去重、可供对账的唯一账本。
-
冷启动:程序化栈每一层都在解同一个问题
从新广告、缺特征模型、拉起中的 serverless 到未回的 SKAN postback,AdTech 每层都在解同一问题——信息不全时就要决策。本篇把冷启动四副面孔(广告、模型、系统、归因)收进同一框架:先验从哪来、怎么熬过空窗期、怎么判断结束。
-
深挖 IAB TCF 与 GPP:工程师必懂的同意协议
Updated:本文是一份专为工程师打造的 IAB TCF v2.2/v2.3 与 GPP 实战笔记。我们将深入探讨 CMP 在页面上的具体职责、一条 TC String 的内部打包结构,以及它如何经由 OpenRTB 协议在全链路中传递。同时,文章详细解析 bidder 服务端必须执行的授权检查逻辑,并揭示 GPP 如何包裹各类协议。
-
推荐全链路离线评估:单看召回 HitRate 或排序 AUC 都会骗你
推荐系统系列(收官):用「书店帮你找书」的比喻讲透全链路离线评估——为什么单看召回 HitRate 或排序 AUC 都会骗你、四个指标(只有 NDCG 能区分命中排第几)、三组对照怎么定位瓶颈在召回还是排序,以及永远以全链路指标做上线决策。
-
过滤与重排:推荐链路最不性感、却最影响体感的最后一道闸门
推荐系统系列(漏斗最后一段):算法论文几乎不讲、生产却有 30% 迭代在此。讲透过滤与重排——硬规则用 if-else、软偏好交给模型,过滤七大类别与必过/可降级链,重排为何是「精排的对手」,以及多样性 MMR/DPP、打散与强插的「度」。
-
PM2 进程管理:Node.js 应用守护、配置文件与批量调度
从零讲透 PM2:进程守护与自动重启、常用命令速查、命令行 vs 配置文件两种用法、ecosystem 启动参数详解,以及资讯类 Node 应用部署与批量调度 Python 脚本两个实战场景。
-
地区广告政策与合规:GDPR、中国广告法与平台审核差异
Updated:无论创意设计多么精妙,一旦触碰合规红线,面临的就是素材下架、账户降权甚至天价罚金。本文系统梳理全球四大核心司法辖区的监管框架(含欧盟 GDPR、美国 CCPA 与中国广告法等),深度剖析隐私同意机制与个性化定向的合规边界。同时对比了媒体平台的内部审核差异,并提供一份可直接落地到投放系统的「发布门禁」合规检查清单,助您在全球化商业变现中避开高压雷区。
-
推荐排序精排:账本只记了「喜欢」,最反直觉的坑是负样本得自己造
推荐系统系列(漏斗第二段·精排):用「录像带店老板打分」比喻讲透排序——召回看「召没召回」、排序看「排第几」,最反直觉的坑「负样本得自己造」、防穿越铁律、LightGBM 先打概率再排队、AUC vs GAUC 与 SSB 铁律。
-
多路召回融合 RRF:只看排名不看分数,一招破解「各路分数没法比」
推荐系统系列(召回·最后一棒):用「录像带店领班」比喻讲透多路召回融合——各路分数为何没法直接相加、RRF 怎么用「只看排名」破解量纲难题、rrf_k=60 为何让「被多路召回」压过「单路第一」、加权 RRF 与 SSB 铁律。
-
创意 A/B 测试与有效性度量:从假设到增量
Updated:前文反复强调了使用数据校准创意的必要性,本篇将深入剖析具体的校准机制。我们将从提出可证伪的业务假设、执行严格的随机分流、估算样本量与显著性判定切入,探讨代理指标(CTR/CVR)与结果指标(ROAS)的本质取舍。最终,我们将落脚于判定创意真实价值的金标准——增量实验(holdout/Ghost Ads),通过可验证的方法论实现广告商业化的科学度量。
-
双塔召回:为什么它是过去 10 年工业界召回的绝对主力
推荐系统系列(召回·主力路):用「资深选片员画气质画像」的比喻讲透双塔 / DSSM / 向量召回——为什么非得是两座塔(离线建库 + 在线 ANN)、训练最反直觉的坑「负样本得自己造」,以及为什么它是过去十年工业界召回的绝对主力。
-
DCO 动态创意优化与创意疲劳:模板、要素与频控
Updated:单一创意打天下的时代已成过去。DCO(动态创意优化)将广告素材拆解为可独立替换的要素,利用受众、情境与历史行为信号,在广告曝光时实时拼装,实现千人千面。本文深度拆解 DCO 的底层结构(模板、要素库、决策引擎与实时渲染)与个性化维度,剖析创意疲劳的衰减曲线及频控策略,并探讨规模化个性化下的合规要求与需求方、供给方博弈边界,助你兼顾投放效率与体验。
-
热门召回:推荐系统最便宜也最不可替代的兜底保险栓
推荐系统系列(召回·兜底路):用「本周热租榜」的比喻讲透热门召回——兜底 / 冷启动 / 保险栓三个替不了的角色、马太效应等四个工程坑、时间衰减与流式实时热门等升级款,以及为什么它单跑指标平平(Coverage 仅 22%)却是任何个性化召回都给不了的保险栓。
-
协同过滤 ItemCF:25 年不过时的召回骨架,从余弦相似度到 Swing / EASE / 双塔
推荐系统系列(召回·第一路):用「录像带出租店」的比喻讲透协同过滤——UserCF vs ItemCF 工业界为何选后者、余弦相似度怎么过滤人气噪声、老挑片员三步打分与归一化,以及为什么说双塔本质就是加了深度编码器的协同过滤。
-
推荐系统召回总览:漏斗定位、8 大召回家族、Recall@K / Coverage 与 SSB 铁律
推荐系统系列开篇:用「录像带店选片」的比喻建立召回直觉——召回在漏斗里的位置、只管「不漏」不管「选对」的本质、Recall@K / Coverage / Latency 三大 KPI、8 大召回家族,以及最隐蔽的大坑 SSB(召回一改,排序必重训)。
-
广告视觉构图与动态创意:构图法则与视频钩子
Updated:配色管颜色、文案管文字,构图则决定「第一眼看哪、视线怎么走」。本文深度解析三分法、视觉重心与留白分组等核心构图法则,探讨如何利用尺寸、位置与方向线索精准引导视觉动线。同时剖析移动端视频前 3 秒钩子节奏与静音适配策略,将静态与动态创意的视觉骨架讲透,最终落脚于需求方、供给方与用户在注意力上的利益平衡。
-
广告文案与排版:信息层级、阅读动线与可读性
Updated:数字广告中文字是承载商业信息与达成转化的核心载体,但受限于用户注意力稀缺,逐字阅读已被扫读取代。本文探讨如何通过构建科学的视觉层级,结合 NN/g 证实的 F 型与 Z 型阅读动线,将核心信息嵌入视线必经之路。同时基于 AIDA 模型拆解利益驱动的文案结构,并盘点关键排版细节,旨在帮助从业者促成点击转化。
-
广告创意配色:色彩心理、配色方案、CTA 对比与可访问性
Updated:配色绝非单纯的审美玄学,而是可被精确拆解的转化工程。本文从色彩的心理联想及其文化局限性切入,详细剖析四种经典配色方案,并引入 60-30-10 比例法则来合理分配视觉焦点。最终,我们将落脚到最工程化的一环——CTA 对比度与 WCAG 2.2 可访问性标准,确保广告转化按钮不仅契合品牌,更能真正做到「被看见、被点得动」,在需求方与用户体验间达成平衡。
-
广告的用户心理学与行为哲学:从认知偏差到伦理边界
Updated:广告本质是一场需求方与供给方及用户三方博弈中的说服。本文以 ELM 双路径说服模型、卡尼曼的双系统理论与前景理论为核心骨架,深度拆解锚定效应、损失厌恶等六个最常被调用的认知偏差,以及注意力与记忆机制。最后,我们将探讨『助推 vs 操纵』的伦理光谱——明确哪些策略属于合理引导,而哪些暗黑模式已经越界,帮助从业者在提升转化率与维护长期信任之间找到平衡。
-
程序化视频 MP4 faststart:解决素材 5 秒开播延迟
Updated:在程序化视频投放中,MP4 默认将 moov 元数据放在文件末尾,导致播放器必须下载完整条素材才能解码第一帧,引发五秒以上黑屏延迟。只需在入库时用一行 -movflags +faststart 将其挪到文件头部即可消除延迟。这个底层 ISO BMFF 布局改动,直接决定曝光能否满足 MRC 可见性标准,以及需求方平台(DSP)的 vCPM 能否成功结算。
-
广告形式全解:主流形式、协议底层与可见性计费
Updated:本文全景拆解广告形式(Format)这一核心维度。不仅剖析横幅、插屏、激励视频、原生、贴片与开屏六大主流形态的业务场景与变现效率,更透视 OpenRTB 协议 imp 对象的底层声明。文章详解 SafeFrame、MRAID、VAST 与 OMID 的生命周期,并探讨基于 MRC 可见曝光标准的计费体系,助你看懂从素材加载、终端渲染到最终变现的完整链路。
-
手把手走一遍定位式位图倒排:增删改查与全量增量下发
Updated:本文详细拆解 Bidder 竞价服务中的定位式位图倒排索引,探讨如何实现高效的全量与增量构建。通过 4 条创意的生命周期,演示增删改查全过程,每次变更均还原为 copy-on-write 的「造新快照、换引用」操作。同时介绍通过 OSS 下发快照的方案,利用不可变 blob 与 manifest 指针布局,实现冷启动全量拉取与运行时增量拉取(版本差与 chunk delta)。
-
配置落地:从投放后台到索引快照(近线编译、触发机制与版本化快照)
Updated:广告主在投放后台维护的层级配置树,怎样被近线编译成一份 Bidder 能够毫秒级匹配的版本化只读快照?本篇专讲生成侧的编译流水线,详细拆解从配置树到索引快照的完整链路。我们将探讨编译前置、版本化设计、全量与增量编译的双轨机制、基于 CDC 的触发机制,以及编译与分发解耦的组件边界,揭示这台「编译器」如何将控制面对象转化为数据面所需的高效结构。
-
程序化广告投放层级与定向配置:模型、继承与缺省语义
Updated:程序化投放并非单一配置,而是要维护一棵四层配置树:广告主、推广计划、广告组与创意。本文将深入剖析这四层对象模型的核心职责与边界,讲清营销目标、预算与出价等配置项如何合理归层。同时,我们将重点探讨定向条件在跨层级合并时的底层逻辑,包括继承机制、逐维求交与排除累加的差异,并揭示配置面极易踩坑的缺省语义陷阱,帮助开发者构建更稳健的广告配置体系。
-
Pacing 目标曲线:时段消耗权重怎么设计
Updated:在预算 Pacing 中,PID 负责紧跟目标消耗曲线 r(t),但这条曲线本身该如何科学绘制?本文将带你深入剖析时段消耗权重 w(τ) 的设计逻辑:探讨如何对齐流量、可得量与转化价值量;详解涵盖聚合、加权、平滑、混合回拉与归一化的离线构造管线;论述按日型与时区独立建模的必要性;最后讲透预测模块与控制机制在处理偏差与残差时的明确分工作用。
-
Bidder 预算 Pacing:PID 控制与消耗平滑
Updated:深度剖析需求方平台竞价引擎的预算 Pacing 机制,解决广告预算平滑消耗难题。不仅防范超投,更确保了时间分布的一致性。文章详述 ASAP 与流量加权等目标消耗曲线的设定思路,对比节流与出价系数两大执行手段。同时,系统探讨 PID 闭环反馈控制在竞价场景的映射逻辑,并针对抗积分饱和、纯滞后等分布式陷阱提供实战调优策略。
-
Bidder 频次控制工程篇:多维度限频的存储选型与读写分离
Updated:频次控制工程篇:同一条频控规则落到代码,是一道高 QPS 读写分离题。写路径经回传走旁路异步落库,读路径在 bidder 关键路径就近读取并带降级机制。工程上,多维度限频被拆解为一组独立的拦截器,并根据精度在 String、Hash 与 ZSet 三种 Redis 结构中选型,兼顾「每小时 N 次」的总量控制与最小间隔约束,在存储成本与延迟间取得平衡。
-
Bidder 频次控制:五维配置与身份降级
Updated:深度解析 DSP 频次控制:将其拆解为层级、窗口、事件、抑制与身份五个维度。不仅讲透多级 cap 的「取最严」机制与频次衰减策略,更直击无设备 ID 流量的身份降级难题,避免全 0 标识导致的灾难性限频。
-
Bidder 定向过滤:竞价漏斗最前端的一票否决
Updated:在程序化广告竞价中,定向过滤作为漏斗第二级,承担着以极低成本削减最多无效流量的核心重任。本文将深入剖析该组件的底层执行逻辑,详细拆解先用请求级 gating 对整次曝光进行一刀切、再用候选级布尔匹配对广告逐条筛选的两层架构;同时全面梳理正向与排除定向差异、最容易引发线上事故的缺省语义陷阱,并深度探讨频次控制机制为何无法完全前置的架构考量。
-
Bidder 解析层:将原始竞价请求转为内部可算对象
Updated:本文深度剖析竞价漏斗的第一级——解析层(Parse),详细讲解如何将原始竞价请求高效转化为内部可算对象。内容涵盖协议解析与方言适配(包括 OpenRTB 归一化处理、序列化为何优先选择 Protobuf)、尽早限时机制(通过 tmax 减去安全余量算出内部 deadline 并实现全链路透传),以及连接复用与传输优化策略,确保极低且稳定的解析耗时。
-
Bidder 竞价服务架构:高并发低延迟的在线决策系统
Updated:需求方平台(DSP)的核心竞价服务 Bidder 究竟该如何设计?本文从一次实时竞价请求的「~20ms 处理预算」硬约束出发,深度拆解解析、定向过滤、召回、打分、出价、排序与填充这七级漏斗流水线。文章详细剖析了只读只算的数据面架构原则,探讨了先快后准的本地预算分片与异步回灌机制,并全面讲透了在延迟、模型效果与预算一致性这三者之间进行工程权衡的核心逻辑。
-
OEM 系统广告:海外手机厂商的预装与系统位变现
Updated:聚焦海外新兴市场,深度拆解手机厂商独有的两条商业化变现主线:第一,将开屏、锁屏、负一屏及应用商店等系统级流量转化为高价值广告库存;第二,通过动态预加载(Google PAI)与静态预装,将新机「装机位」按 CPD 或 CPI 售卖给需求方。同时为您剖析 Install Referrer 配合 MMP 的完整归因链路与 GDPR 合规红线。
-
广告 SDK 隐性成本:包体积、耗时、内存与崩溃
Updated:接入广告 SDK 看似只是“加几行代码”,实则会给宿主 App 加上四笔不可忽视的隐性成本:包体积增量、初始化耗时、内存占用与崩溃率。本文将 SDK 的性能成本拆解为可量化、可管理的具体指标,剖析每项的来源与踩坑点,揭示它们如何转化为显性的收入损失。文中提供了一张实用的性能基线表,以及涵盖测试与优化的落地方法,帮助开发者建立性能台账与管理闭环。
-
零售媒体网络(RMN):第一方购买数据驱动的第三波广告浪潮
Updated:本文深度解析零售媒体网络(RMN)的底层商业化逻辑:零售商如何将第一方购买数据与自有流量转化为广告变现机器,掀起继搜索与社交后的第三波浪潮。文章拆解 on-site、off-site 与 in-store 三类库存,剖析其凭借「闭环归因」建立的护城河与免疫 cookieless 优势,并探讨标准缺失及 ROAS 虚高等争议。
-
广告 SDK 接入实战:内部架构与 Mediation 决策机制
Updated:本文从开发者视角深度拆解移动端广告 SDK 的接入实战与内部流转机制。文章涵盖 App 端的依赖配置、异步初始化、广告位请求与合规同意等标准接入流水线,进而剖析 SDK 内部 API、状态机、网络缓存与渲染上报等七层架构。此外,详细解析 Mediation 聚合层在瀑布流与 In-App Bidding 混合竞价中的决策逻辑,并梳理主流聚合平台与广告源全景。
-
后 Cookie 身份层:确定性 ID、隐私沙盒与数据洁净室
Updated:第三方 cookie 与 IDFA 退场导致跨域追踪体系失效,程序化广告亟需重建用户识别机制。本文将深度拆解三条并行的技术路线:基于登录态的确定性 ID(UID2、RampID)、Google Privacy Sandbox 设备端沙盒,以及第一方数据与数据洁净室。我们将讲清它们在覆盖率、隐私与精度间的权衡,并剖析多套身份信号并存对实时竞价链路的底层重构。
-
App 广告 SDK 深挖:变现、聚合与 In-App Bidding
Updated:App 广告 SDK 作为移动端商业化变现的底层扳机,承担着在端上发起广告请求、聚合多家广告源、缓存与渲染素材以及上报曝光点击的核心职责。本文将深度剖析一次广告在端上的完整生命周期,对比 Mediation 传统瀑布流与 In-App Bidding 实时竞价机制的差异,并全面拆解初始化延迟、预加载、内存泄漏、主线程 ANR 以及多 SDK 冲突等棘手的客户端工程难题。
-
程序化策展(Curation):卖方侧打包数据与库存的新中间层
Updated:程序化策展(Curation / Marketplace 2.0)作为程序化广告生态的新中间层,是 SPO、cookieless 与交易 deal 化合流的产物。本文将探讨策展层如何在卖方侧将受众数据与库存打包成 curated Deal ID,剖析它与传统买方 DMP 定向的根本区别,并客观分析其带来的数据激活优势,以及引发的供应链抽成与透明度争议。
-
媒体 Ad Server 深挖:它如何拍板每一次曝光
Updated:媒体 Ad Server(典型如 Google Ad Manager)是卖方侧决定广告曝光归谁的调度总控。本文将深度剖析 line item 优先级机制、曝光决策流水线的过滤与匹配环节、dynamic allocation 与统一竞价机制的底层逻辑、Header Bidding 的完整接入方式,并带你揭开其高并发低延迟的高 QPS 决策工程内核。
-
拍卖机制与 Bid Shading:竞价漏斗、底价与缩水策略
Updated:程序化拍卖机制精讲:一次竞价从入围到结算的漏斗、hard/soft/动态底价的区别、一价与二价的结算差异,以及一价时代的核心工程 Bid Shading。本文将探讨 winner's curse 陷阱,解析如何利用历史清算价预估「恰好赢下」的价位,最终实现期望剩余(surplus)与赢率乘积的最优化,从而在竞价博弈中获取最大收益。
-
Header Bidding:Prebid 客户端与服务端架构解析
Updated:本文深入剖析 Header Bidding 核心机制,详细拆解 Prebid.js 客户端竞价的完整链路,探讨为何需要将竞价逻辑向服务端迁移(Prebid Server)。文章全面对比 C2S 与 S2S 架构在 cookie 匹配率、系统延迟、维护成本上的取舍,并从真实工程视角,拆解这个高并发低延迟的扇出竞价聚合服务是如何设计的。
-
OpenRTB 协议精讲:对象模型与拍卖结算语义
Updated:本文深度剖析 OpenRTB 协议的 `bid request` 与 `bid response` 对象模型,解析基于 `at` 的拍卖结算逻辑及创意交付演进。重点探讨 `nurl`、`burl`、`lurl` 通知机制与 `${AUCTION_PRICE}` 宏回填原理,并梳理协议版本演进与 `ext` 扩展体系。
-
广告出海地区分层:T1 / T2 / T3 市场分析与打法
Updated:T1、T2 与 T3 是广告出海与变现业务中最核心的地区分层坐标。本文将深入剖析该分级体系的底层逻辑,详细解读 eCPM、CPI 获客成本、ARPU 及流量规模等指标在不同梯队市场的此消彼长关系。同时系统性梳理针对各层级的定制化打法,涵盖买量、变现、创意与合规,讲透出海业务为何绝不能沿用「一套素材打全球」的粗放模式。
-
RTA 竞价前过滤:第一方数据不出域地影响出价
Updated:本文深度精讲程序化广告中的 RTA(Real-Time API)机制:探讨广告主如何利用第一方数据实时影响 DSP 的出价决策,而无需将敏感数据跨越边界交出。文章详细剖析了这个竞价前过滤模式的运转逻辑、其在竞价生命周期中的核心位置、API 请求与响应结构,同时全面梳理了 100ms 延迟预算、兜底策略以及缓存 TTL 的容量与成本权衡。
-
供应链透明度(下):OpenRTB schain 运行时逐跳核验
Updated:OpenRTB 的 SupplyChain 对象(schain)是随 bid request 逐跳生长的有序 node 数组,记录库存实际经过的每一跳中介。它需配合 ads.txt 与 sellers.json 交叉核验,拦截非法转售。本文详解买方侧工程:从离线抓取声明并编译为内存索引,到竞价热路径上亚毫秒级逐跳核验,最终支撑买方进行供应链优化,剔除冗余路径。
-
供应链透明度(上):ads.txt 与卖方授权声明
Updated:针对程序化广告供应链中频发的域名伪造与非法转售,业界引入了三份核心静态声明建立信任锚点。ads.txt 与 app-ads.txt 是媒体的授权卖方清单,明确谁有权销售库存;sellers.json 是中介的卖方身份声明,公开账号背后的实体。需求方通过对账键 (asi, sid) 将声明进行双向交叉印证,从而拦截未授权路径。运行时的 schain 机制将在下篇探讨。
-
Last Look 深挖:从二价偷看反超到一价统一竞价
Updated:程序化拍卖史上的不公平机制当属 last look。处在「最后一棒」的交易所能先偷看其他渠道竞胜价,再以微弱优势反超。本文将剖析该机制赖以成立的顺序二价结构前提,探讨 Header Bidding 如何将其推上风口浪尖。同时,拆解一价拍卖与统一竞价如何从时间窗口和经济动机上堵住偷看漏洞,并揭示为何在供需双方垂直整合下,这种信息不对称从未真正消失。
-
程序化交易模式精讲:按定价与保量拆解 RTB 到 PG
Updated:写给工程师的程序化交易模式深度梳理:本文从「价格怎么定」和「量保不保」两根核心轴出发,详细拆解了 RTB、PMP、PD 及 PG 四种主流模式的底层逻辑。文章不仅对比了各模式在确定性与收益上的权衡,还深入剖析了 Deal ID 如何将线下谈判转化为可执行凭证,并讲清了媒体 Ad Server 的优先级瀑布分配机制。
-
程序化广告生态全景:一次曝光在各系统的流转机制
Updated:写给工程师的程序化广告生态全景深度梳理:全面解析需求方 DSP、供给方 SSP、交易市场 ADX、双端各自的 Ad Server,以及横跨两端的 DMP。本文将带你探索一次真实的广告曝光如何在大约 100 毫秒内走完极度复杂的底层链路,深入剖析生态中各层在解决什么核心工程挑战、如何执行严苛的供应链抽成,以及为何这些技术缩写在业界常被混为一谈。
-
广告服务上云实战 · 容器化部署与调优
容器化与 K8s 部署系列收官:把广告竞价服务生产级送上云——JVM 容器化的 cgroup 感知与 MaxRAMPercentage、滚动更新与金丝雀、readiness+preStop 优雅停机、跨可用区反亲和与 PDB、HPA+spot 成本弹性。
-
CI/CD 流水线 · Jenkins 构建镜像与自动部署到 K8s
容器化与 K8s 部署系列第 4 篇:讲透 CI/CD——Jenkins 的 Controller+Agent 分布式构建、K8s 动态 Agent Pod、声明式 Jenkinsfile 与凭据管理,以及 push 式与 pull 式 GitOps。
-
K8s 调度、资源与弹性伸缩
深挖 Kubernetes 调度与弹性:requests/limits 与 QoS 三级、OOMKilled 与 CPU throttle、scheduler 的 Filter/Score 两阶段、HPA/VPA/CA 三层弹性与三种探针。
-
Kubernetes 核心对象 · Pod/Deployment/Service/Ingress
深挖 Kubernetes 核心对象:控制面与节点架构、Pod/ReplicaSet/Deployment、Service/Ingress、ConfigMap/Secret/Namespace,讲透声明式 YAML 与 reconcile 控制循环。
-
容器化(开篇)· Docker 原理与镜像分层
容器化与 K8s 部署系列开篇:从 Linux namespace/cgroup/UnionFS 拆透容器本质、镜像分层与写时复制、Dockerfile 多阶段构建瘦身、容器 vs 虚拟机、containerd/runc 运行时。
-
Dubbo 深挖 · 流量治理、Filter 链与优雅上下线
Dubbo 流量治理深挖:Filter/Filter 链秩序、动态配置与优先级、超时限流熔断、灰度与权重爬升、QoS 与优雅上下线清单,把发布窗口的超时尖刺压下去。
-
Dubbo 深挖 · 协议栈与 Triple / 序列化
Dubbo 协议与序列化深挖:经典 Dubbo 协议帧与 Netty 传输、Hessian2/Protobuf/Fastjson2 取舍、Triple(HTTP/2)为何成为互通默认、流式调用与 gRPC 互操作,以及热路径上的编解码性能坑。
-
Dubbo 深挖 · Cluster 容错、负载均衡与路由
Dubbo Cluster 层深挖:Directory / Router / LoadBalance / Cluster 四件套,Failover 与 Failfast 等容错策略,随机/轮询/最少活跃/一致性哈希,条件路由与标签路由,以及竞价写路径为何默认不能乱重试。
-
Dubbo 深挖 · 注册中心、服务发现与元数据
Dubbo 注册发现深挖:接口级与应用级服务发现、Nacos/ZooKeeper 取舍、推空保护与本地缓存、元数据/配置中心拆分,以及滚动发布时如何避免僵尸实例接流量。
-
Dubbo 深挖(开篇)· 架构全景、SPI 与一次调用全链路
Dubbo 深挖开篇:从广告竞价链路的 RPC 需求出发,讲透 Consumer/Provider/Registry 三角、分层架构与 URL 模型、SPI 扩展机制,以及一次远程调用从 Proxy 到 Transport 的完整路径。
-
API 网关与分布式追踪
收官微服务与 RPC 系列:拆 API 网关的鉴权/限流/路由职责,讲 OpenTelemetry 的 TraceId/SpanId 传播、Jaeger 与采样策略,以及网关透传 Trace 的排障要点。
-
服务网格 Service Mesh 深挖
深挖 Service Mesh:拆 Sidecar 数据面与控制面、Istio/Envoy 的流量治理与 mTLS、可观测下沉与真实代价,对照 SDK 模式取舍,落到网格重试与业务重试的职责边界。
-
服务注册与发现深挖
深挖服务注册与发现:对照客户端发现与服务端发现,拆 ZooKeeper/Nacos/etcd/Consul 的 AP/CP 与健康检查模型,讲清实例生命周期与优雅下线,落到滚动发布中的僵尸实例与摘除策略。
-
RPC 框架(开篇)· 原理与 gRPC/Thrift/Dubbo
微服务与 RPC 系列开篇:拆透一次远程调用的代理/序列化/协议/传输分层,对照 gRPC、Thrift、Dubbo 的协议栈与治理能力,讲清负载均衡与超时重试的正确姿势,落到广告竞价链路的重试与超时边界。
-
分布式 ID 深挖 · 雪花算法及其变体
深挖分布式 ID:全局唯一/趋势递增/高性能/高可用/信息安全五维需求,UUID 与 DB 自增的短板,雪花算法 64 位布局、时钟回拨处理与 workerId 分配,Leaf 号段双 buffer 与百度 UidGenerator。
-
分布式事务深挖 · 2PC、TCC、Saga 与 Outbox
深挖分布式事务:单机 ACID 到分布式为何失效、CAP/BASE 与最终一致,逐帧拆 2PC/3PC 的阻塞与单点、TCC 的空回滚悬挂、Saga 的编排与补偿、Outbox+CDC 可靠事件投递,落到广告计费扣预算的幂等补偿与对账。
-
分布式锁深挖 · Redis Redlock 与 ZooKeeper/etcd
深挖分布式锁核心底座:从互斥、防死锁、容错与可重入四大正确性边界出发,拆解 Redis SET NX + Lua 释放 + 续期看门狗、Redlock 的妥协与 Fencing Token 防护机制,对比 ZooKeeper 顺序节点与 etcd 租约 CAS 的 CP/AP 架构取舍。
-
基于共识引擎的协调服务 · ZooKeeper 与 etcd 底层图解
深度剖析两大协调服务底层架构:ZooKeeper 的 znode 存储模型、临时节点与 ZAB 协议,etcd 的 Raft 引擎、MVCC 历史版本控制、Lease 租约与可回放 Watch,并横向对比 ZAB 与 Raft 的领导者选举机制与工业级落地选型。
-
Criteo CTR 特征工程实战:把理论串成一条能跑的广告管线
「数据与特征工程」收官实战:用 Kaggle Criteo CTR 数据集把清洗、非线性变换、缩放、降维、特征选择串成完整管线,覆盖缺失与异常处理、log1p / 周期编码、RobustScaler 选型与过滤→嵌入的选特征顺序。
-
分布式共识机制 · Paxos 与 Raft 图解
深挖分布式共识:从状态机复制与 FLP 不可能定理讲起,图解 Quorum 机制、Paxos 算法演进、Raft 的领导者选举 / 日志复制 / 安全性约束,并剖析脑裂隔离策略与 etcd / KRaft 工程落地经验。
-
广告多维报表与漏斗分析实战
广告报表的极致体验,取决于正确的指标语义、可命中的预聚合及可承受的去重成本。本文聚焦多维报表实战,解析 CUBE 组合爆炸的应对策略与物化视图加速路径。详细阐述漏斗分析的有序递减语义与留存 cohort 的集合运算,对比 Bitmap 精确去重与 HLL 近似去重在计费场景下的严格边界。最终通过报表 API 缓存策略,将高频看板查询的 P99 延迟压制在秒级以内,实现指标闭环。
-
特征编码:把文字菜谱翻译成秤上的克数
「数据与特征工程」编码篇:类别特征必须编码成数字。讲清 One-Hot / Label / Count / Frequency / Target 五种编码的场景与坑、按基数选编码的决策图,以及 Target Encoding 的数据泄漏与 K 折交叉解法。
-
特征选择:只留好料——过滤、包装、嵌入三大流派
「数据与特征工程系列」第 6 篇:特征选择的两条原则(高类别相关、低特征间冗余)与三大流派——过滤法(方差/皮尔逊/VIF/互信息/MIC/卡方)、包装法(前向/后向/RFE)、嵌入法(L1/L2 正则、树模型重要性)。
-
特征提取与降维:吊高汤——把一大堆料浓缩成精华
「数据与特征工程系列」第 5 篇:特征提取(造新维度)和特征选择(挑原维度)的区别,稀疏表示与特征哈希(adtech 高基数救星),以及 PCA / ICA / LDA 三种降维法各自在最大化什么——无监督最大方差、有监督最大可分、解混最大独立。
-
实时数仓 · 分层设计与 Lambda/Kappa 架构
实时数仓并非简单地将批处理换成流处理,而是要用同一套分层语义让流式增量与可重放回刷共享口径。本文详细拆解 ODS、DWD、DWS 到 ADS 各层的核心职责,深入探讨 Lambda 双链路架构与 Kappa 单逻辑重放的取舍,以及流批一体的落地实践。结合 Flink 与 OLAP 引擎构建端到端实时管线,彻底解决速度层与批层结果不一致的痛点,确保指标定义始终保持唯一。
-
OLAP · 列式存储原理与 ClickHouse/Doris
广告实时链路的最后一块拼图是可交互的多维报表,而现代 OLAP 的地基几乎全是列式存储。本文深度剖析行存与列存在宽表聚合场景下为何会产生数量级的性能差异,拆解字典编码、RLE 压缩、跳过索引、向量化执行与 MPP 分布式查询等底层加速机制。同时,全面对比 ClickHouse 与 Doris 的架构心智与选型取舍,探讨如何将这些工程积木应用到广告明细查询与秒级看板的性能优化路径中。
-
MySQL 内核深挖 · 主从复制链路与 HA 高可用
复制 = 主库 binlog 经 Dump/IO/SQL 三线程在从库回放,并行复制按 logical clock 或 writeset 多 worker 落库;半同步换至少一副本收到的耐久,HA 负责探活升主与脑裂防护、GTID 切换与读写分离粘滞——写后读一致性与广告配置投放正确性的交汇点。
-
特征构建:切配、换角度、片下部位——把原始料做出新味道
「数据与特征工程系列」第 4 篇:特征构建的三条路——特征组合(GBDT+LR 叶子编码、特征搜索、CTR 交叉特征内积)、映射到新空间(FFT / 小波 / 数据熵)、衍生变量(泰坦尼克号 Name/Cabin/Ticket 拆解)。附多重共线性的坑与规避。
-
数据预处理:洗菜择菜的三步——观察、清洗、整理
「数据与特征工程系列」第 3 篇:把原始数据变成干净规整数据集的三步——数据观察(系统地找问题)、数据清洗(异常值检测:箱线图 / 切比雪夫 / 孤立森林,缺失值四种补法)、数据整理(标准化 / 归一化 / 鲁棒缩放)。
-
MySQL 内核深挖 · EXPLAIN 计划与慢查询优化
慢查询治理 = 读懂 EXPLAIN 执行计划 + 让谓词与索引形状匹配 + 控制扫描行数与排序临时表;索引失效高频因、优化器统计过期与选错索引、JOIN 驱动顺序与 Hash Join、深分页 keyset 与延迟关联、慢日志治理闭环与回归门禁——报表慢查询与广告配置库的性能边界。
-
特征工程系统化框架:能用哪些料、料从哪进、料坏了怎么报警
「数据与特征工程系列」第 2 篇:用「后厨的三张清单」拆解一套工业级特征体系——特征使用方案(选哪些料 + 可用性评估)、特征获取方案(离线/在线分层获取)、特征监控方案(时效性/覆盖率/异常值 + 有效性分析 + 降级闭环),全程用美团点击下单率预估做实例。
-
MySQL 内核深挖 · redo、undo 与 binlog 机制
redo 保证崩溃后已提交事务能重放到数据页,undo 支撑回滚与 MVCC 版本链,binlog 在 Server 层服务复制与时间点恢复;三条日志用内部两阶段提交对齐提交状态,刷盘参数与组提交摊薄 fsync、binlog 格式 ROW/STATEMENT 取舍——计费库双 1 与主从一致性的底线。
-
MySQL 内核深挖 · 事务隔离级别、MVCC 与行锁
InnoDB 默认 RR 靠 MVCC(ReadView + undo 版本链)让普通 SELECT 不加锁读到一致性快照,写与当前读靠记录锁/间隙锁/next-key 锁串行化冲突区间;RR 与 RC 的 ReadView 生成时机差异、死锁配方与插入意图锁——落到广告预算扣减的并发避坑。
-
特征工程总览:算法是大厨,但菜的上限由「备料」决定
「数据与特征工程系列」开篇:用「后厨备料」的比喻建立整体心智模型——为什么「数据和特征决定机器学习的上限,算法只是逼近这个上限」,特征工程到底在干哪四件事(清洗 / 构建 / 转换 / 选择提取),以及它在离线训练与在线服务两条链路里的不同形态。
-
MySQL 内核深挖 · InnoDB 存储结构与 B+ 树索引
InnoDB 用 16KB 页做磁盘交互单位,用 B+ 树把按主键或二级键定位行变成稳定的对数级查找;页/区/段、Buffer Pool 命中率、聚簇 vs 二级索引的回表成本、覆盖索引免回表、联合索引最左前缀、主键选型与 Change Buffer 写放大取舍——从存储地基到广告配置库的索引设计要点。
-
Flink 深挖 · 部署模式与 Flink on K8s
Flink 生产部署收尾:Session / Per-Job / Application 三种模式怎么选、为何生产选 Application、Flink on K8s 的 Native 与 Operator 两条路线、JobManager 高可用、checkpoint 远端存储、内存模型与 OOMKill、stop-with-savepoint 优雅升级。
-
Flink 深挖 · 反压定位、数据倾斜与性能调优
Flink 反压定位与性能调优:credit-based 网络流控内核、Web UI 与 busyTime/backPressuredTime 指标加火焰图锁定最慢算子、数据倾斜的两阶段聚合与加盐打散、AsyncFunction 异步维表 join,以及并行度、RocksDB 与 unaligned checkpoint 这些调优旋钮。
-
Flink 深挖 · 状态管理与 Checkpoint 容错
深挖 Flink 有状态计算与容错:Keyed/Operator State 原语与作用域、HashMap 与 RocksDB 状态后端及增量 checkpoint 选型、Chandy-Lamport barrier 异步快照、aligned/unaligned 对齐取舍、Savepoint 用法,以及状态 TTL 与 key group 重分配。
-
Flink 深挖 · DataStream API 与有状态处理
从 Flink SQL 下沉到 DataStream API:什么时候必须动用底层 API、DataStream 心智与 SQL 对照、KeyedProcessFunction 的状态/TimerService/OutputTag 三大件,并用累计告警、支付超时、迟到分流、接 Kafka 聚合四个可跑实战串起来。
-
Flink 深挖 · 端到端 Exactly-Once 与两阶段提交
深挖 Flink 端到端 Exactly-Once:厘清 at-most/at-least/exactly-once 与 effectively-once 的含义、内部靠 checkpoint 一致性快照回滚重放、端到端需要可重放 source 与幂等或事务 sink,及 Kafka 事务两阶段提交与 transaction.timeout.ms 的坑。
-
Flink 深挖 · 时间语义、窗口与 Watermark
Flink 时间语义与乱序处理:processing/ingestion/event time 取舍、Watermark 生成与多输入取 min、withIdleness 排除空闲分区、Tumbling/Sliding/Session 窗口、allowedLateness 与侧输出兜底、增量与全量聚合,落到实时 CTR 与归因 join。
-
Flink 深挖(开篇)· 流处理模型与运行时架构
Flink 深挖开篇:为何广告实时链路选 Flink 而非微批、流批一体与 DataStream 心智、JobManager/TaskManager/Slot 运行时、StreamGraph→JobGraph→ExecutionGraph 三次图变换、算子链与 Slot 共享、四种分区策略、部署模式与作业提交全流程。
-
Apache Flume:从 Source·Channel·Sink 到广告日志不丢链路与选型
Apache Flume 讲透:Agent 的 Source/Channel/Sink 三段式与 at-least-once、Memory/File/Kafka Channel 取舍、TailDir→Kafka 配置,广告不丢链路与真实 DSP 案例脱敏拆解。
-
为什么 AdTech 偏爱 Kafka:广告事件中枢的五大典型场景与架构设计
广告的曝光、点击与转化本质上是一场高吞吐、需重放且被多方消费的事件洪流,这恰好是 Kafka 的绝对主场。本文将深入剖析 AdTech 领域的五大核心场景——采集削峰、计费对账、实时特征、预算反作弊及入湖入仓,并详解 Netty、Kafka、Redis 与 Flink 在其中的精妙分工与架构演进。
-
Kafka 可靠性与 Exactly-Once 深挖:acks、ISR、min.insync.replicas 与事务,把『不丢不重』讲到底
在广告计费与对账等核心链路中,数据的底线是绝不丢失、不算重。本文将深入剖析 Kafka 的高可靠性架构,揭示“不丢”背后由 acks、副本复制与位移提交共同构筑的三方合约。我们将从底层机制出发,深挖 acks 取舍、min.insync.replicas 策略、unclean 选举机制,并全面解析幂等生产者与事务机制,为你讲清 Exactly-Once 语义的真实边界与工程实践。
-
Kafka 性能内核:磁盘系统凭什么跑出内存级吞吐
为什么基于普通物理磁盘构建的 Kafka,能在高并发场景下跑出百万级吞吐,甚至在性能上碾压部分内存级系统?本篇我们将深度剖析 Kafka 底层性能架构的核心四板斧:顺序追加写、页缓存机制、零拷贝 (Zero-copy) 以及日志分段与稀疏索引。同时结合批量压缩与实战调优经验,带你彻底看透高吞吐背后的流转逻辑与架构取舍。
-
Kafka Consumer 深挖:poll 循环、位移提交与分区重平衡,如何做到不丢不重不卡顿
在生产者篇探讨了消息的高效写入后,本文将补齐消息流转的另一半:如何可靠且高效地消费数据。我们将深度拆解 poll 单线程循环与心跳机制、位移提交 (Offset Commit) 的四种姿势与交付语义、决定生死的三大超时参数、分区分配策略 (Assignor)、分区重平衡 (Rebalance) 的生命周期,以及 Consumer Lag 的诊断与调优实战。
-
Kafka Producer 深挖:分区策略与 Sticky Partitioner 是怎么把延迟砍半的
一条消息进哪个分区,直接决定 Kafka 的吞吐量、延迟与顺序性。本篇从微批处理讲起,深度拆解四种分区策略,讲透 Sticky Partitioner 为何能将无 key 消息的 p99 延迟砍半,并深入探讨 key 路由、扩容陷阱、顺序性保障与热点隔离机制。
-
Kafka 核心原理精讲:从一条日志到分布式流平台,把关键机制与取舍讲透
Kafka 核心原理深度剖析:以『分布式提交日志』为主线,讲透 Partition 路由、Offset 位移提交、ISR 副本同步、HW 水位线、分区容量决策、Pull 模型取舍、交付语义与 Dumb-broker 设计哲学。附带 KRaft 模式实战 Demo、生产环境反模式清单与 7 张底层原理图。
-
Redis 深挖 · 布隆过滤器与穿透防线
深挖 Redis 布隆过滤器:位数组 + k 哈希为何只有假阳性没有假阴性、误判率与 m/k 参数怎么算、原生 bitmap 手写 vs RedisBloom 模块 vs Redisson,再到计数/布谷鸟/可扩展变体与删除难题,落到广告竞价挡穿透与去重。
-
Redis 深挖 · 线程模型与性能
深挖 Redis 线程模型与性能:单线程执行为何天然原子、IO 多线程与 bio 后台线程各干什么、pipeline 收敛 RTT、8 种内存淘汰与惰性+定期过期、慢命令与 UNLINK、热 key 定位打散,落到竞价场景的生产红线。
-
Redis 深挖 · 持久化与高可用
深挖 Redis 持久化与高可用:RDB 的 fork+COW、AOF 三档 appendfsync 与重写、混合持久化,再到主从复制、Sentinel 故障转移、Cluster 槽分片与 MOVED/ASK,落到竞价场景的 Redis HA 实践。
-
Redis 深挖 · 数据结构与内存模型
深挖 Redis 数据结构:从 redisObject 对象头到 String/Hash/Set/ZSet 的底层编码(listpack/skiplist 等)与转换阈值,讲清编码为何只升不降、内存开销与碎片,以及 bigkey 的编码级成因与结构选型。
-
Netty 深挖 · 背压、水位线与百万连接调优
Netty 性能收尾:写缓冲背压的根源、高低水位线与 isWritable 用法、EventLoop 不阻塞与业务线程池、SO_BACKLOG/TCP_NODELAY/池化等参数调优,以及百万连接的内存/fd/堆外约束。
-
Netty 深挖 · Pipeline、编解码与粘包拆包
深挖 Netty 的 ChannelPipeline 事件传播与协议编解码:inbound/outbound 双向触发顺序、TCP 粘包拆包的本质与四种切帧方案、LengthFieldBasedFrameDecoder 四参数怎么算。
-
Netty 深挖 · ByteBuf、引用计数与零拷贝内存模型
Netty 内存模型:ByteBuf 三段式指针免 flip()、PooledByteBufAllocator 借鉴 jemalloc、引用计数 retain/release 与堆外泄漏,及 CompositeByteBuf/FileRegion 零拷贝。
-
Netty 深挖(开篇)· Reactor 模型与 EventLoop 线程模型
Netty 系列开篇:从竞价 Server 为何弃用原生 NIO/BIO 讲起,深挖 Reactor 三级演进、主从多 Reactor 架构、Channel/EventLoop/Pipeline 组件,及 EventLoop 绑定单线程、串行无锁的线程模型。
-
并发协作与异步编排:闭锁、信号量与 CompletableFuture
本文剖析 CountDownLatch、CyclicBarrier 和 Semaphore 三大并发工具的核心机制与场景,详细讲解 CompletableFuture 异步任务链式编排、线程池隔离以及超时异常兜底策略。最终结合高并发竞价系统实战,演示如何通过并行拉取多路依赖与结果聚合,有效解决吞吐量瓶颈、降低响应时间,进而提升系统在极限并发下的稳定性。
-
并发容器:ConcurrentHashMap、CopyOnWrite 与阻塞队列
高并发场景下并发容器怎么选:详解 ConcurrentHashMap 从 JDK 7 分段锁到 JDK 8 基于 CAS 与 synchronized 及红黑树的底层演进,剖析 CopyOnWrite 的适用场景与写时复制代价,对比 BlockingQueue 家族差异,并彻底告别 synchronizedMap。
-
线程池原理与调优:ThreadPoolExecutor 七大参数与执行流程
高并发服务的吞吐命脉:深度剖析 ThreadPoolExecutor 核心机制。详述七大参数协作逻辑,揭秘队列先于非核心线程填满的反直觉设计。全面对比四种拒绝策略,推演 CPU 与 I/O 密集型的线程数估算公式。结合线上实战,给出监控告警、动态调参与优雅停机方案,排查 ThreadLocal 内存泄漏难题,最终落到竞价链路的线程池舱壁隔离优化。
-
AQS 与 Lock 家族:ReentrantLock、读写锁与 Condition
AQS 深度剖析:基于 state 与 CLH 变体等待队列的模板方法,支持独占与共享两种模式,串联起 ReentrantLock、读写锁、Condition 等核心组件,并对比 synchronized 的取舍,手把手带你彻底掌握 JUC 同步器底层原理与高并发场景下的正确使用姿势。
-
synchronized 与锁升级:对象头、Monitor 与偏向、轻量、重量级锁
打破对 synchronized 的重量级刻板印象!本文从对象头 Mark Word 切入,深度剖析锁升级底层机制,详细推演偏向锁、轻量级锁到重量级锁的单向不可逆路径。结合 JIT 锁消除与锁粗化优化,带你彻底搞懂内置锁的状态流转逻辑,从而在实际高并发架构中,明确何时该用 synchronized,何时必须替换为 ReentrantLock 显式锁。
-
JMM 与可见性:volatile、happens-before 规则与指令重排序
并发正确性的地基:从可见性、有序性、原子性三大核心问题出发,深度拆解 JMM 抽象模型、指令重排序机制、内存屏障与 happens-before 规则的底层流转逻辑。结合高并发业务排障场景,带你彻底讲透 volatile 关键字的可见性与有序性语义及其适用边界,并剖析 double-check 单例失效等经典并发踩坑案例,为后续深入 AQS 源码打牢基础。
-
Grafana JVM 监控分析:从指标采集到看板解读的实战指南
JVM 系列全 6 篇之实战续作:用 Micrometer/JMX Exporter、Prometheus、Grafana、Alertmanager 搭建监控链路,深度解读 4701 看板的 Heap 锯齿、老年代、GC 停顿与告警水位。
-
JVM 深入(四):JDK 核心版本演进 —— 从 8 到 25 的 LTS 变迁
本文是 JVM 系列的第 4 篇(全系列共 6 篇),以 LTS 版本为主线,系统梳理从 JDK 8 到 25 的核心演进。文章详细对比了 PermGen 到 Metaspace 的底层变迁、G1 成为默认 GC 与 CMS 的退出,并解析了模块化、Records 与模式匹配等重要语言特性。此外,我们重点探讨了 JDK 21 引入的虚拟线程及其 Pinning 机制的改善,并结合运行时默认值的变化,为你提供一份务实且避坑的生产环境 JDK 升级与选型指南。
-
JVM 深入(三):JIT 编译与内存模型 —— 从底层原理到调优实战
本文是 JVM 系列理论三篇的进阶篇(全系列共 6 篇)。文章将彻底讲透 JIT 即时编译的核心优化手段,涵盖热点探测、方法内联、基于标量替换的逃逸分析、分层编译以及去优化回退机制。同时,我们将补齐 Java 内存模型(JMM)中关于可见性、指令重排与 volatile 的关键知识,梳理堆外内存的分布与常见 OOM 场景。最后,文章总结了一套从度量到验证的科学调优四步法,并前瞻了 GraalVM 与虚拟线程等技术前沿。
-
JVM 深入(二):垃圾回收机制全解 —— 从可达性分析到 ZGC
本文是 JVM 系列理论三篇的核心篇(全系列共 6 篇),专门深度剖析 JVM 垃圾回收机制。文章从可达性分析与四种引用切入,详细解析 Safepoint 与 OopMap 如何实现精准的 GC Roots 枚举。我们将对比三种基础回收算法与分代收集的工程实践,探讨并发标记中的三色标记法与漏标难题,并全面拆解 G1 的筛选回收机制与 ZGC 基于染色指针的低延迟黑科技,最终为你提供一套贴合生产环境的 GC 选型指南。
-
JVM 深入(一):内存架构与类加载 —— 从字节码到对象的一生
本文是 JVM 系列理论三篇的入门篇(全系列共 6 篇)。文章将 JVM 视作跨平台的字节码执行引擎,深度剖析其内部的运行时数据区划分(堆、虚拟机栈、方法区、元空间与程序计数器)。我们将详细拆解字节码与操作数栈的交互逻辑,完整还原 new 对象的诞生全过程,并透彻讲解类加载的五大步骤与双亲委派机制,为后续深入理解 GC 停顿与 JIT 预热机制打好坚实的底层基础。
-
JMeter 压测实战:组件模型、线程组、CLI 执行与 HTML 报告
性能测试动手篇,把 Apache JMeter 讲透:九大组件分层作用、线程组三旋钮与 QPS 换算、从零搭 HTTP 压测计划、CSV 数据驱动、非 GUI 命令行执行与 HTML 报告解读,以及分布式施压。
-
性能测试:指标、负载模型、结果解读与容量规划
高性能系列收束:从 RT/QPS/并发指标与容量推算讲起,讲清开放 vs 闭合负载模型、尾延迟百分位与 Coordinated Omission、饱和点与容量规划,附 wrk/JMeter/Gatling/k6 可跑脚本。
-
批处理与请求合并:攒批、削频与吞吐优化
把多次小操作合并成一次大操作,用延迟换吞吐。讲透客户端攒批、Singleflight 请求合并、批量读写、组提交与异步刷盘的模式、参数(大小/超时/背压)与延迟-吞吐取舍。
-
连接与 I/O 模型:线程、池化、多路复用与背压
连接和线程常在 CPU 成为瓶颈前先耗尽。讲清 BIO vs NIO/Reactor 多路复用、Netty EventLoop 与阻塞卸载、连接池核心参数与 Little's Law 池大小直觉、池耗尽背压策略。
-
异步与削峰:用消息队列把洪峰挡在核心路径外
同步链路在峰值流量下极易被打垮。本篇讲清削峰 vs 解耦、MQ 缓冲与令牌桶入口结合的削峰模式、消费侧背压(Consumer Lag / DLQ / pause-resume)、异步后的一致性权衡与幂等消费,以及哪些场景不该异步。
-
Nginx 配置实践:结构、反向代理、限流与生产清单
围绕 nginx.conf 结构讲清全局块、events、http/server/location,覆盖反向代理、负载均衡、HTTPS、限流与动静分离,附生产检查清单。
-
CDN:就近访问、回源、缓存策略与防盗链
讲清 CDN 就近访问、预热回源、GSLB 调度、Cache-Control 策略与防盗链,附生产清单与反模式。
-
数据库性能与扩展:索引、读写分离与分库分表
数据层往往是高性能的最后瓶颈。讲清索引与执行计划优化、读写分离、垂直/水平拆分与分库分表(分片键、散列路由、全局 ID、跨分片查询、扩容迁移),以及分布式事务与一致性代价。
-
数据冷热分离:边界划分、迁移与查询路由
从订单表容量测算讲清冷热边界决策、迁移安全、存储选型与查询路由,含冷热路由 / Canal / xxl-job / ClickHouse 代码。
-
负载均衡:四层与七层、算法选型与生产实践
高性能系列开篇:讲透服务端/客户端与四层/七层负载均衡、常见算法选型,配齐 Nginx upstream、一致性哈希、客户端 LB 与健康检查代码。
-
数据中心选型:全球枢纽、云区域与广告流量部署
从全球网络枢纽、云区域与广告流量分布出发,给出新加坡 + 弗吉尼亚双活选型,并覆盖延迟→竞价 tmax 预算、跨区成本模型、数据驻留合规与故障切换等生产实践。
-
混沌工程:故障注入、稳态假设与演练常态化
所有高可用手段都需要被验证。讲清混沌工程的五原则(稳态假设、最小爆炸半径)、四类故障注入与演练闭环、稳态如何用业务指标定义,以及从灰度到生产受控再到自动化平台的常态化路径,把'假设能恢复'变成'已经验证能恢复'。
-
发布与变更安全:灰度、蓝绿、金丝雀与回滚
变更是线上故障第一大根因。本篇梳理爆炸半径分类、滚动/灰度/蓝绿/金丝雀四种发布策略对比、Feature Flag 开关降级、config-only 与制品回滚双轨、数据库 expand-contract 模式、回滚条件清单。
-
幂等与一致性:重试安全、分布式事务与最终一致
重试、异步与多副本都要求操作幂等、数据一致。讲清幂等的实现(幂等键/去重表/状态机)、分布式事务(2PC/TCC/Saga/本地消息表 outbox)与最终一致的取舍。
-
依赖韧性:超时重试、熔断降级与舱壁隔离
把远程依赖防护讲成一条防线:超时预算与幂等重试、熔断三态与降级预案、Failover 与舱壁隔离,以及限流→超时→熔断→隔离→降级的叠加顺序。
-
服务限流:窗口、漏桶、令牌桶与分布式落地
限流保护系统不被瞬时流量打垮。讲透固定/滑动窗口、漏桶、令牌桶的取舍,以及单机与分布式落地、分层限流、选型决策与反模式。
-
冗余与容灾:HA 集群、同城异地灾备与多活选型
冗余是高可用的基本手段:服务多副本与数据多备份,配合自动故障转移。讲清 RTO/RPO、HA 集群、同城/异地灾备与多活的差异,异地多活的流量路由与写冲突解决,以及故障转移陷阱与选型。
-
高可用系统设计:从几个 9 到限流、依赖韧性与发布安全
高可用系列开篇:以「几个 9」量化可用性,梳理不可用根因,系统过一遍代码质量、集群冗余、限流、依赖韧性、发布安全、可观测性与混沌演练等手段,并给出中等规模系统的落地优先级排序。