内容交付网络和云眼灰度发布(特性标帜)AB实验

云眼About 8 min

内容交付网络和云眼灰度发布(特性标帜)AB实验

内容交付网络的基础知识以及使用云眼灰度发布(特性标帜)AB实验处理缓存的不同策略。

你可能希望将云眼灰度发布(特性标帜)AB实验 SDK 与 CDN 配对,以提高整体效率。进一步阅读以了解 CDN、边缘计算以及一些利用 CDN 和边缘功能提供动态内容的可能解决方案。

内容交付网络

内容分发网络 (CDN) 是一种分布式服务器系统,它根据用户位置而不是源服务器位置提供内容。这大大减少了页面加载时间,特别是对于具有高流量和全球影响力的网站。CDN 将内容复制到全球分布的服务器网络。当用户请求网页时,CDN 会将请求从原始站点的服务器重定向到物理上更接近用户的服务器,并从那里传递缓存的内容。CDN 还与源服务器通信,以提供尚未缓存的内容。

CDN 的好处:

  • 更快的内容交付,因为访问者连接到离他们最近的服务器
  • 在发生硬件故障或中断时的信息访问冗余
  • 通过分布式拒绝服务 (DDoS) 攻击缓解提高安全性
  • 通过缓存降低带宽成本
cdn-flow.jpg

CDN 和动态内容

CDN 可以提高应用程序的性能,这使得集成新服务具有挑战性。CDN 提供缓存或保存的内容(由源服务器呈现),不允许在边缘执行动态逻辑。使用 云眼 功能实验 SDK 可能具有挑战性,因为对每个用户进行存储并随机分配变体需要服务器端执行。当大多数请求由 CDN 处理和完成时,用户的请求永远不会到达源,并阻止 SDK 逻辑运行。

边缘计算

许多现代 CDN 提供商利用边缘计算来克服 CDN 的静态特性。与 CDN 一样,边缘计算强调在地理上靠近数据源的数据收集和计算的重要性。边缘函数通过减少延迟和冷启动启动时间来改进无服务器功能。

边缘计算的优势:

  • 减少延迟,因为数据不会通过网络传输到服务器或数据中心进行处理
  • 通过减少云资源和带宽需求节省成本
  • 无冷启动

网站的注意事项

应该确定缓存在应用程序中成为阻碍因素的位置。例如,如果网站仅缓存静态内容(CSS 或图像),但所有动态逻辑都在源运行,则可能不会遇到问题。但是,在对大量缓存的应用程序部分进行实验时,这可能会很棘手。在使用云眼灰度发布(特性标帜)AB实验启动实验之前,应问几个问题:

  • 您缓存哪些内容?
  • 是否缓存静态内容?
  • 是否缓存所有内容?
  • 请求到达源与 CDN 的频率如何?
  • 您目前是否有缓存破坏逻辑?
  • 是否可以绕过 CDN?
  • CDN 提供商有哪些限制?

这些问题的答案将帮助了解何时何地做出运行 A/B 测试所需的用户级决策。如果特定请求是按源动态处理的,则可以在接收动态请求时分配变体。请务必与 云眼 客户团队讨论这些问题。

常见解决方案

将云眼灰度发布(特性标帜)AB实验与 CDN 体系结构结合使用有几种可能的解决方案。

  • 1. 在边缘做出决策 – 如果有权访问可以在边缘运行代码的 CDN 提供商,这是一个不错的选择。云眼 Experimentation为顶级边缘提供商创建了一系列入门工具包和模板,以帮助在边缘设置云眼灰度发布(特性标帜)。
  • 2. 通过决策服务做出决策 – 如果无法访问可以在边缘运行代码的 CDN 提供商,并且希望将 云眼 作为自己的服务运行,这是一个不错的选择。我们建议使用 云眼 Agent,这是一种预打包的容器化服务,可公开终端节点以获取分桶决策和跟踪事件。
  • 3. 在服务器源中做出决策 – 如果可以轻松地在源中安装 云眼 功能实验并希望最大程度地降低 CDN 配置的复杂性,这是一个不错的选择。

1. 在边缘做出决策

在 CDN 体系结构中实现云眼灰度发布(特性标帜)AB实验的一种选择是在 CDN 边缘进行实验决策。此选项需要在 CDN 上安装 云眼 功能实验 SDK,在该环境中,CDN 可以在边缘执行代码。一些允许在CDN边缘执行代码的技术提供商包括Akamai EdgeWorkers,AWS Lambda@EdgeCloudflare WorkersFastly Compute@EdgeVercel Edge Functions。如果 CDN 不支持在边缘运行代码,仍可以通过将请求转发到支持此方法的 CDN 来使用此方法。

CDNOPTION1.png
  1. 验证 CDN 是否支持在边缘执行代码。如果没有,请将请求重定向到需要的 CDN。

  2. 在支持在边缘执行代码的 CDN 中,安装功能实验 SDK 初学者工具包,为用户做出实验决策,将这些决策的结果存储在 Cookie 中,并将请求返回到原始 CDN。有关详细信息,请选择边缘提供商:

  1. 将请求和代表云眼决策的 cookie 转发到源服务器。
  2. 在源服务器上,解析云眼决策 cookie,并根据云眼决策呈现正确的变更通知单内容。
  3. 在 CDN 上,配置缓存,以便 CDN 包含云眼决策 Cookie 的值作为缓存规则的输入。通过确保缓存键由 云眼 决策 cookie 的值组成,可以保证 CDN 为后续请求适当地缓存内容,这些请求在 云眼 决策 Cookie 中具有相同的值。缓存内容后,后续请求可以完全由第一个 CDN 处理。

🚧 重要

  1. 在 CDN 内的边缘运行云眼灰度发布(特性标帜)AB实验时,请确保事件处理继续,直到云眼客户端关闭。

  2. 确保 CDN 支持 HTTP 请求格式 (XML/JSON)

2. 在单独的决策服务上做出决策

如果希望从集中决策源中受益,我们建议使用 云眼 Agent,这是一种预打包的容器化服务,可公开端点以获取分桶决策和跟踪事件。将使用此服务代替支持在边缘执行代码的 CDN。

CDNOPTION2.png
  1. 对于所有没有云眼决策 cookie 的请求,请将请求重定向到决策服务。

  2. 决策服务为用户提供决策,可以将这些决策的结果存储在 Cookie 中,并将请求返回到 CDN。

  3. 将请求和代表云眼决策的 cookie 转发到源服务器。

  4. 在源服务器上,解析云眼决策 cookie,并根据云眼决策呈现正确的变更通知单内容。

  5. 在 CDN 上,配置缓存,以便 CDN 包含云眼决策 Cookie 的值作为缓存规则的输入。通过确保缓存键由 云眼 决策 cookie 的值组成,可以保证 CDN 为后续请求适当地缓存内容,这些请求在 云眼 决策 Cookie 中具有相同的值。缓存内容后,后续请求可以完全由 CDN 处理。

3. 在服务器源头做出决策

在 CDN 体系结构中实现云眼灰度发布(特性标帜)AB实验的第三个选项是在 Web 应用程序的源上进行实验和功能管理决策,并将 CDN 配置为根据表示源服务器上做出的决策的决策 Cookie 缓存适当的内容。此选项应该可以通过任何主要的 CDN 提供商实现。

CDNOPTION3.png
  1. 对于不包含云眼灰度发布(特性标帜)AB实验决策 cookie 的 CDN 的每个请求,将请求转发到源。

  2. 在源站应用服务器中安装云眼灰度发布(特性标帜)AB实验 SDK。对于每个请求,为所有实验的用户存储存储,并将这些决策的结果存储在 Cookie 中。使用云眼决策 cookie 集响应 CDN。

  3. 将 CDN 配置为根据步骤 2 中设置的 Cookie 的内容缓存内容。对于发送到设置了云眼决策 cookie 的 CDN 的请求,我们可以返回缓存的内容。对于未设置 云眼 决策 cookie 的请求,请按照步骤 1 中将请求转发到源服务器。

📘 注意

对于所有选项,cookie 都应具有生存时间 (TTL) 或过期限制,以便在更改实验时,用户会在合理的时间范围内看到效果。

Last update:
Contributors: “zhangweixue”