云服务应用之四——结合CFworkers

结合云服务器和 Cloudflare 服务,可以构建 高性能、低成本、高安全 的混合架构,充分发挥二者的优势(云服务器处理核心业务,Cloudflare 提供边缘加速和安全防护)。以下是具体应用场景和技术实现方案:


一、性能优化与负载均衡

1. 动静分离 + 全球加速

  • 场景: 静态资源托管到 Cloudflare CDN,动态请求转发到云服务器。
  • 实现:
    • static.example.com 的 DNS 解析指向 Cloudflare,开启 CDN 和缓存规则。
    • 云服务器仅处理 api.example.com 的动态请求。
  • 优化效果:
    • 减少云服务器 70% 以上带宽消耗,降低延迟。
    • 通过 Cloudflare 的 Argo Smart Routing 优化跨国访问路径。

2. 边缘缓存动态内容

  • 场景: 缓存频繁访问的动态内容(如商品详情页)。

  • Cloudflare Workers 代码示例:


    addEventListener('fetch', event => {
    event.respondWith(handleRequest(event.request));
    });

    async function handleRequest(request) {
    const CACHE_TTL = 60; // 缓存 60 秒
    const cacheKey = new Request(request.url, request);
    const cache = caches.default;

    // 尝试从缓存读取
    let response = await cache.match(cacheKey);
    if (!response) {
    // 回源到云服务器
    response = await fetch(request);
    response = new Response(response.body, response);
    response.headers.append('Cache-Control', `s-maxage=${CACHE_TTL}`);
    event.waitUntil(cache.put(cacheKey, response.clone()));
    }
    return response;
    }


二、安全与防护

3. 隐藏云服务器 IP

  • 步骤:
    1. 在 Cloudflare DNS 设置中启用代理状态(橙色云图标)。
    2. 在云服务器防火墙中仅允许 Cloudflare IP 段访问(Cloudflare IP 列表)。
  • 效果:
    • 防止 DDoS 攻击直接打到服务器,避免 IP 暴露。

4. 边缘 WAF 防护

  • 配置:
    • 在 Cloudflare 控制台启用 WAF(Web Application Firewall)规则:
    • 拦截 SQL 注入、XSS 攻击。
    • 封禁恶意 Bot(如扫描工具)。
    • 设置速率限制(Rate Limiting),防止 API 被刷。
  • 成本: 免费版 WAF 已包含基础规则,企业版支持自定义规则。

三、混合架构与无服务器集成

5. 边缘处理 + 云服务器核心计算

  • 场景: 用户上传图片后,Cloudflare 边缘节点压缩图片,云服务器进行 AI 分析。
  • 架构:
    1. 用户 → Cloudflare Workers(图片压缩为 WebP) → 云服务器(存储 + 分析)。
    2. 结果返回时,通过 Workers 添加水印或优化响应。

6. 低成本 WebSocket 服务

  • 方案:
    • 用 Cloudflare Durable Objects 维持长连接状态。
    • 云服务器处理需要高计算力的消息(如游戏战斗逻辑)。
  • 代码片段(Workers + WebSocket):
    // Cloudflare Worker 处理握手和消息转发
    export class ChatRoom {
    constructor(state) {
    this.state = state;
    this.users = new Map();
    }
    async fetch(request) {
    const webSocketPair = new WebSocketPair();
    const [client, server] = Object.values(webSocketPair);
    server.accept();
    server.addEventListener('message', (msg) => {
    // 将消息转发到云服务器 API
    fetch('https://backend.example.com/chat', {
    method: 'POST',
    body: msg.data
    });
    });
    return new Response(null, { status: 101, webSocket: client });
    }
    }


四、成本优化方案

7. 带宽成本归零

  • 策略:
    • 所有流量经过 Cloudflare,利用其免费 CDN 带宽。
    • 云服务器仅响应未缓存请求,流量消耗极低。
  • 适用场景: 静态网站、博客、文档站点。

8. 数据库卸载

  • 方案:
    • 高频读取数据存储到 Cloudflare KV 或 D1(边缘数据库)。
    • 云服务器仅处理低频写入操作。
  • 示例: 用户配置信息存在 KV,订单数据存在云数据库。

五、创新应用场景

9. 全球分布式 Cron 任务

  • 实现:
    • 用 Cloudflare Workers 的 Scheduled Events 触发定时任务。
    • 调用云服务器 API 执行爬虫、备份等密集型操作。
  • 优势: 避免云服务器常驻进程占用资源。

10. 边缘 A/B 测试

  • 场景: 在 Cloudflare 边缘分流用户,云服务器收集分析数据。
  • Workers 代码:
    addEventListener('fetch', event => {
    const cookie = event.request.headers.get('Cookie');
    let variant = cookie.includes('variant=A') ? 'A' : 'B';
    if (!cookie) {
    variant = Math.random() > 0.5 ? 'A' : 'B';
    event.response = new Response(null, {
    headers: { 'Set-Cookie': `variant=${variant}` }
    });
    }
    // 转发到云服务器的不同接口
    event.respondWith(fetch(`https://backend.example.com/${variant}`));
    });


六、部署与运维技巧

11. 自动化部署

  • 工具链:
    • 云服务器使用 GitHub Actions 自动构建 Docker 镜像。
    • Workers 通过 Wrangler CLI 实现 CI/CD。
  • 示例流程:
    # GitHub Actions 片段
    - name: Deploy to Cloudflare
    uses: cloudflare/wrangler-action@v2
    with:
    apiToken: ${{ secrets.CF_API_TOKEN }}

12. 监控与告警

  • 配置:
    • Cloudflare 控制台查看缓存命中率、防火墙事件。
    • 云服务器部署 Prometheus + Grafana 监控资源使用。
    • 异常时通过 Cloudflare Webhooks 通知 Telegram。

七、典型架构案例

案例 1:电商网站

  • 架构:
    • 边缘层: Cloudflare CDN(缓存商品图片/描述) + WAF 防护。
    • 逻辑层: Workers 处理购物车和优惠券计算。
    • 核心层: 云服务器运行库存管理和支付接口。

案例 2:媒体流平台

  • 架构:
    • 边缘层: Cloudflare Stream 处理视频转码和分发。
    • API 层: Workers 鉴权并生成临时播放令牌。
    • 存储层: 云服务器管理原始视频文件和元数据。

八、避坑指南

  1. 缓存穿透:
    • 使用 Workers 的 Cache API 设置空结果缓存(如 Cache-Control: s-maxage=10)。
  2. 冷启动延迟:
  3. 数据一致性:
    • 通过云服务器发送 Purge 请求清理 Cloudflare 缓存(POST /purge_cache)。

通过合理分工(Cloudflare 处理边缘轻量任务,云服务器聚焦核心业务),可以实现 低成本、高可用、易扩展 的架构,尤其适合个人开发者或创业项目。

此条目发表在云服务应用分类目录。将固定链接加入收藏夹。