迁移前绘制数据路径
采集可能仍发生在浏览器,再送至服务器及各接收方。Consent Mode传递状态并调整部分行为,本身不提供选择横幅或法律验证。
| 阶段 | 控制 | 所需证据 |
|---|---|---|
| 浏览器或应用 | 已采集字段与选择。 | 实际发出请求。 |
| 采集服务器 | 验证、过滤与访问。 | 接受或拒绝的事件。 |
| 接收目标 | 实际转发数据。 | 载荷与同意规则。 |
| 运维 | 保存、权限与恢复。 | 删除、故障与访问测试。 |
测试实际发送内容
- 按目的定义允许字段与接收方。传输前检查URL、参数、标识和日志,不假设默认过滤已经存在。
- 端到端测试同意、拒绝和选择变更。检查浏览器、服务器容器及每个目标。
- 对账已接收、接受和转发事件。测试重复、丢失、故障与恢复,再测服务器成本和负载。
分别评价收益与义务
在可比任务中检查性能;初始浏览器采集可能仍有必要。第一方域名不意味着豁免。在法国,部分受众测量工具的豁免有条件,不自动覆盖广告标记。
一手资料
- Google Tag Manager — Server-side tagging introduction [EN]
- Google Tag Manager — Server-side Consent Mode [EN]
- CNIL — Cookies et mesure d’audience [FR]
服务器端标记仍需进行流程测试。
将标签移至服务器并不会自动使测量符合规范或达到最低要求。在实际部署中,检查发出的请求、接收者、标识符以及拒绝后的行为。
- 映射浏览器、收集服务器、供应商和传输字段。
- 在选择之前、拒绝之后和撤回同意之后进行测试。
- 将设置与声明的用途和相关的CNIL条件进行比较。
一手资料:CNIL — Outils de mesure d’audience et traceurs. 相关方法:阅读实用指南.
API配额与速率限制
限制影响容量、重试及客户间分配。
- 记录配额针对账户、密钥还是资源,以及客户端允许的并发操作数。即使平均频率不高,无限队列也可能压垮服务。
- 收到429时,若有Retry-After则解析并等待再请求。把逐步增加的等待和客户端间的时间分散,与最大尝试次数和总期限结合。
- 写入响应丢失时,先检查状态再重试。在模拟测试中组合限流、迟到响应和取消,确认队列结束且效果不重复。
可复现的验收案例
虚构示例:数据不代表客户或实际观察结果。
查看案例输入
{
"http_status": 429,
"retry_after_seconds": 30,
"workers": 20,
"retry_budget": 3,
"retry_budget_scope": "per_worker_retries_excluding_initial_request",
"scheduling_example": {
"response_received_at_seconds": 0,
"illustrative_retry_seconds": [
30,
31,
32,
33,
34
],
"workers_per_second": 4,
"alternative_deadline_seconds": 25,
"total_attempts_if_all_retries_used": 80
}
}预期判断
遵守30秒等待,错开20个工作进程的重试,并限制次数。
二十个客户端:错开并计算重试
虚构示例:20个工作进程在 +0 s 各收到429响应和 Retry-After: 30。时间表仅展示一种分布,不保证服务器容量。每个进程除初次请求外可重试3次。
| 策略 | 计算或时间安排 | 效果与限制 |
|---|---|---|
| 同时重试 | 20 × 1 = 20 @ +30 s | 等待30秒遵守了延迟要求,但20个请求会一起返回,流量尖峰可能再次出现。 |
| 错开重试 | 4 × 5 = 20 @ +30…+34 s | 每秒4个请求,持续5秒,将20次重试分散,但不减少总数。这个示例时间表不能替代带随机抖动的退避策略。 |
| 25秒后截止 | 25 s < 30 s → 0 | 剩余时间少于要求的30秒时,应按契约停止或延期,不要为了截止时间缩短等待。 |
| 最大预算 | 20 × (1 + 3) = 80 | 用完所有尝试时,初次20个请求加60次重试,共80个请求。上限不保证成功或重复操作安全。 |
验证步骤
- 记录配额范围及重试预算。
- 仅在授权测试中耗尽配额。
- 保留429、Retry-After及受限时间线。 区分技术限流与业务结果,配额耗尽不应被转换为库存为零的响应。
- 在无外部负载模拟中,统计四层各三次总调用的尝试。
- 使虚构排队任务过期,确认不启动新操作。
- 模拟故障后逐步恢复授权工作,保留调用、期限与唯一业务结果。
429能证明之前的写入没有执行吗?
不能。响应丢失的操作需要独立核对;其他尝试的响应不能证明其状态。
一手资料:IETF — RFC 6585, HTTP 429. 相关方法:阅读实用指南.
碳测量边界
比较需要一致边界和功能单位。
- 列出组件、地区、期间与功能单位,例如一次完成的操作。比较提供相同服务的方案。
- 记录能源、排放因子及硬件分摊。区分测量和估算;说明排除项,不能把它们视作零影响。
- 虚构例:(12 + 3) gCO2e / 5次操作 = 每次3 gCO2e。改变不确定假设,同时比较总排放。
可复现的验收案例
虚构示例:数据不代表客户或实际观察结果。
查看案例输入
{
"functional_unit": "accepted_task",
"energy_kWh": 2,
"intensity_gCO2e_per_kWh": 100,
"embodied_gCO2e": 50,
"accepted_tasks": 100,
"SCI_gCO2e_per_task": 2.5
}预期判断
(2 × 100 + 50)/100 = 每任务2.5 gCO2e,仅适用于声明的边界。
验证步骤
- 定义边界、功能单位及系数。
- 分开能源、隐含排放及成果。
- 保留来源及无隐含抵消的计算。
一手资料:Green Software Foundation — Software Carbon Intensity. 相关方法:阅读实用指南.
API:防止多层重试相乘
应用、SDK、代理和服务都可能重试同一次调用。虚构的四层各执行三次总尝试,最多会向故障依赖发出81次调用。在既有配额管理上加入共享预算和有效截止时间。
- 列出应用、SDK、代理及依赖的自动尝试。选择负责层,按契约关闭或协调额外重试。将首次尝试计入总预算。保留业务操作ID,重试非幂等操作前检查不确定效果。
- 根据客户端真实限制,定义覆盖等待、连接和处理的整体期限。入队前拒绝过期任务。本地取消不能证明服务器停止,应核对状态。测试逐步恢复流量,避免同时重启所有队列。
每层三次就是总计三次吗?
不是。虚构四层各三次总尝试会产生最多3⁴ = 81次最终调用。
任务过期能取消远端效果吗?
不一定。应阻止新的无用工作;已开始远端操作需检查状态并在可行时补偿。
一手资料:AWS — Timeouts, retries, and backoff with jitter. 相关方法:阅读实用指南.
