DevOps & Infrastructure

Cloudflare Workers: Điện Toán Biên (Edge Computing) Tốc Độ Cao

By Ginbok5 min read

Cloudflare Workers là gì?

Hãy tưởng tượng bạn đang xây dựng một trang web phục vụ khán giả toàn cầu. Nếu máy chủ của bạn đặt tại Việt Nam, người dùng ở Châu Âu hoặc Mỹ có thể gặp phải độ trễ đáng kể do các yêu cầu phải di chuyển xuyên lục địa. Với Cloudflare Workers, mã của bạn được sao chép và thực thi tại trung tâm dữ liệu gần người dùng nhất. Nó giống như việc có một "trợ lý ảo" ở mọi quốc gia, sẵn sàng phục vụ người dùng mà không cần chờ tín hiệu từ máy chủ chính.

Cloudflare Workers chạy trên V8, công cụ JavaScript mạnh mẽ được sử dụng trong Google Chrome. Điều này cho phép các nhà phát triển viết JavaScript hoặc TypeScript hiện đại mà không phải lo lắng về khả năng tương thích, đồng thời hỗ trợ WebAssembly cho các tác vụ hiệu suất cao.

Các Ưu Điểm Chính:

Tổng quan về Gói Miễn Phí (Free Tier)

Cloudflare cung cấp Gói Miễn Phí rất hào phóng, biến nó thành một sân chơi hoàn hảo cho sinh viên và các nhà phát triển startup:

Hướng dẫn Thiết lập Từng Bước

1. Khởi tạo môi trường của bạn

Đầu tiên, hãy tạo một tài khoản Cloudflare miễn phí và cài đặt công cụ CLI Wrangler.

# Cài đặt Wrangler toàn cục
npm install -g wrangler

# Đăng nhập vào tài khoản Cloudflare của bạn
wrangler login

# Khởi tạo một dự án mới
wrangler init my-first-worker

2. Triển khai code

Một Worker cơ bản sử dụng trình xử lý fetch chuẩn. Tạo một tệp có tên index.js:

export default {
  async fetch(request, env, ctx) {
    try {
      return new Response('Hello World from the Edge!', {
        headers: { 'Content-Type': 'text/plain' }
      });
    } catch (error) {
      return new Response(`Error: ${error.message}`, { status: 500 });
    }
  }
};

3. Triển khai ra Vùng Biên (Edge)

Thực thi lệnh triển khai sẽ gửi mã của bạn đến tất cả hơn 300 trung tâm dữ liệu ngay lập tức.

wrangler deploy

Các Trường Hợp Sử Dụng Thực Tế

1. Cổng API/Proxy

Bảo vệ hoặc định tuyến các lệnh gọi API đồng thời thêm tiêu đề tùy chỉnh hoặc xác thực.

export default {
  async fetch(request, env) {
    try {
      const url = new URL(request.url);
      
      // Nhân bản yêu cầu và thêm Khóa API
      const modifiedRequest = new Request(request);
      modifiedRequest.headers.set('X-Custom-Auth', env.API_SECRET);
      
      // Chuyển tiếp đến máy chủ gốc
      return await fetch('https://api.your-backend.com' + url.pathname, modifiedRequest);
    } catch (err) {
      return new Response('Gateway Error', { status: 502 });
    }
  }
};

2. Rút gọn URL bằng KV

Tạo một trình chuyển hướng URL cực nhanh bằng cách sử dụng kho lưu trữ Key-Value (KV) của Cloudflare.

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const slug = url.pathname.substring(1);
    
    if (!slug) return new Response('Welcome to the Edge Redirection service.');
    
    try {
      const destination = await env.URLS_KV.get(slug);
      
      if (destination) {
        return Response.redirect(destination, 301);
      }
      
      return new Response('URL Path Not Found', { status: 404 });
    } catch (e) {
      return new Response('Storage Error', { status: 500 });
    }
  }
};

Các Lỗi Thường Gặp & Giải Pháp

Lỗi Nguyên nhân Giải pháp
CPU Limit Exceeded Mã của bạn vượt quá giới hạn 10ms trong Gói Miễn Phí. Tối ưu hóa các vòng lặp lồng nhau hoặc chuyển logic nặng sang phía client.
ReferenceError: [API] is not defined Cố gắng sử dụng các API của Node.js (ví dụ: fs, path) không có trong môi trường runtime V8. Sử dụng các API chuẩn Web hoặc Fetch.
Binding Error Yêu cầu một KV namespace hoặc Secret không được định nghĩa trong wrangler.toml. Đảm bảo rằng tất cả các kv_namespacesvars được ánh xạ chính xác trong tệp cấu hình của bạn.

Các Thực Hành Tốt Nhất

#CloudflareWorkers EdgeComputing Serverless
← Back to Articles