0Pricing
Edge Computing with Cloudflare Workers & Deno · บทเรียน

สถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์

สร้างระบบขับเคลื่อนด้วยเหตุการณ์โดยใช้ Workers และ Deno เพื่อตอบสนองต่อข้อมูลแบบเรียลไทม์และการกระทำของผู้ใช้

สถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์ เป็นบทเรียน Edge Computing with Cloudflare Workers & Deno ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Edge Computing with Cloudflare Workers & Deno และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Edge Computing with Cloudflare Workers & Deno มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

What is Event-Driven Architecture?

Welcome! Today we'll explore Event-Driven Architecture (EDA). It's a design pattern where services communicate by producing and consuming events, rather than direct calls.

Think of it like a news channel: producers (reporters) publish news (events), and consumers (viewers) react to the news they're interested in.

  • Event: A significant change in state, like 'user registered'.
  • Producer: The system that generates and sends an event.
  • Consumer: The system that listens for and reacts to an event.

Why Event-Driven at the Edge?

EDA shines brightly at the edge, offering significant benefits for performance and scalability:

  • Decoupling: Services operate independently, reducing dependencies.
  • Scalability: Individual components can scale up or down based on event load.
  • Real-time Responsiveness: React to user actions or data changes instantly.
  • Resilience: If one consumer fails, others can still process events.

This makes your edge applications more robust and flexible.

Cloudflare Workers as Event Reactors

Cloudflare Workers are perfect for event-driven systems because they are inherently reactive. They spring into action when triggered by an event!

Common events that trigger Workers include:

  • Incoming HTTP requests (e.g., an API call)
  • Messages from a queue (e.g., Cloudflare Queues)
  • Scheduled cron jobs
  • Other Cloudflare service bindings

They act as lightweight, distributed consumers.

Code: Worker Reacting to HTTP Event

Here's a basic Worker that processes an incoming HTTP request as an 'event'. It reads a custom header to identify the event type and logs it.

Try changing the X-Event-Type header when you test it!

export default {
  async fetch(request, env, ctx) {
    const eventType = request.headers.get('X-Event-Type') || 'unknown_event';
    const eventData = await request.json().catch(() => ({}));

    console.log(`Worker received event: ${eventType}`);
    console.log(`Event data: ${JSON.stringify(eventData)}`);

    // In a real app, you'd process eventData here
    return new Response(`Event '${eventType}' processed!`, { status: 200 });
  },
};

Deno as an Event Originator

Just as Workers consume events, Deno applications can act as event producers. A Deno backend service or a CLI tool might generate events.

For instance, a Deno script could:

  • Detect a file change and send an event.
  • Process data and publish a 'data_processed' event.
  • Handle a user action and send a 'user_activity' event to your edge Worker.

Code: Deno Sends Event to Worker

This Deno script acts as a producer, sending a 'user_registered' event to our Cloudflare Worker via an HTTP POST request. The Worker then acts as the consumer.

Remember to replace 'YOUR_WORKER_URL' with your deployed Worker's URL!

// main.ts
async function sendUserRegisteredEvent() {
  const workerUrl = "https://your-worker-name.your-account.workers.dev"; // Replace this!

  const response = await fetch(workerUrl, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-Event-Type": "user_registered"
    },
    body: JSON.stringify({ userId: "user_abc", timestamp: Date.now() })
  });

  if (response.ok) {
    console.log("User registered event sent successfully!");
  } else {
    console.error("Failed to send event:", response.status, await response.text());
  }
}

sendUserRegisteredEvent();

Cloudflare Queues for Robust Events

For truly robust event-driven systems, especially at the edge, Cloudflare Queues are invaluable. They act as an event bus, providing a reliable buffer between producers and consumers.

  • Asynchronous: Producers don't wait for consumers to finish.
  • Guaranteed Delivery: Messages are durably stored until processed.
  • Load Leveling: Handles bursts of events without overwhelming consumers.
  • Decoupling: Producers and consumers don't need to know about each other directly.

Code: Worker Publishes to a Queue

Here, a Worker receives an HTTP request (an event) and then publishes a message to a Cloudflare Queue. This offloads heavy processing to a separate consumer.

To make this runnable, you'd need to bind a Queue in your wrangler.toml file (e.g., [[queues.producers]] binding = "MY_QUEUE" queue_name = "my-event-queue").

export default {
  async fetch(request, env, ctx) {
    const eventData = await request.json().catch(() => ({}));
    const eventType = eventData.type || 'api_trigger_event';

    // Publish event to a Cloudflare Queue
    // 'env.MY_QUEUE' refers to the queue binding configured
    await env.MY_QUEUE.send({
      eventType: eventType,
      payload: eventData
    });

    return new Response(`Event '${eventType}' queued successfully!`, { status: 202 });
  },
};

Code: Worker Consuming Queue Messages

This Worker is configured to consume messages directly from a Cloudflare Queue. It processes each message in a batch, extracting the event type and payload.

This Worker would have a queue handler instead of (or in addition to) a fetch handler. You'd configure this in your wrangler.toml (e.g., [[queues.consumers]] queue = "my-event-queue").

export default {
  async queue(batch, env, ctx) {
    for (const message of batch.messages) {
      const { eventType, payload } = message.body;
      console.log(`Processing event from queue: ${eventType}`);
      console.log(`Payload: ${JSON.stringify(payload)}`);

      // Implement your actual event processing logic here
      // e.g., update a database, send a notification, call another API
    }
  },
};

Quick Check: Event-Driven Concepts

Which of the following are key benefits of using an Event-Driven Architecture at the edge?

Recap: Event-Driven Edge Apps

Great job! You've learned about Event-Driven Architectures and how they supercharge applications at the edge.

  • EDA uses events, producers, and consumers for decoupled communication.
  • Cloudflare Workers are ideal for consuming and producing edge events.
  • Deno applications can act as powerful event producers.
  • Cloudflare Queues provide robust, asynchronous event delivery for resilience and scale.

This pattern is key for building highly responsive, scalable, and fault-tolerant edge applications. Keep exploring how events can transform your architecture!

คำถามที่พบบ่อย

บทเรียน “สถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Edge Computing with Cloudflare Workers & Deno ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Edge Computing with Cloudflare Workers & Deno มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์”

สร้างระบบขับเคลื่อนด้วยเหตุการณ์โดยใช้ Workers และ Deno เพื่อตอบสนองต่อข้อมูลแบบเรียลไทม์และการกระทำของผู้ใช้ คุณปฏิบัติ Edge Computing with Cloudflare Workers & Deno ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Edge Computing with Cloudflare Workers & Deno หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Edge Computing with Cloudflare Workers & Deno บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “สถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Edge Computing with Cloudflare Workers & Deno นี้ได้ไหม

ได้ บทเรียน Edge Computing with Cloudflare Workers & Deno ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ไมโครเซอร์วิสใกล้ผู้ใช้
  2. สถาปัตยกรรมขับเคลื่อนด้วยเหตุการณ์
  3. พิกัดภูมิศาสตร์และการปรับให้เหมาะกับท้องถิ่น
  4. ออบเจ็กต์คงทนและการประสานงานที่มีสถานะ
← กลับไปที่ Edge Computing with Cloudflare Workers & Deno