INTEGRITY Dokumentace

Jak funguje Workers for Platforms

Architektura

Pokud znáte Workers, Workers for Platforms zavádí čtyři klíčové součásti: dispatch namespaces, dynamic dispatch Workers, user Workers a volitelně outbound Workers.

Architektura Workers for Platforms

Dispatch namespace

Dispatch namespace je kontejner, který obsahuje všechny Workery vašich zákazníků. Vaše platforma vezme kód, který zákazníci napíší, a poté odešle požadavek API, který tento kód nasadí jako uživatelský Worker do namespace: například staging nebo production. Ve srovnání s Workers, to poskytuje:

Dynamický dispatch Worker

Dynamic dispatch Worker je vstupní bod pro všechny požadavky směřující na vaši platformu. Váš dynamic dispatch Worker:

Dynamic dispatch Worker používá vazba dispatch namespace k vyvolání uživatelských Workerů:

export default {
	async fetch(request, env) {
		// Determine which customer Worker to call
		const customerName = new URL(request.url).hostname.split(".")[0];

		// Get and invoke the customer's Worker
		const userWorker = env.DISPATCHER.get(customerName);
		return userWorker.fetch(request);
	},
};

User Workers

User Workers obsahují kód napsaný vašimi zákazníky. Zákazník odešle svůj kód vaší platformě a vy poté odešlete požadavek API, který jeho jménem nasadí uživatelský Worker. User Workers se nasazují do dispatch namespace a volá je váš dynamic dispatch Worker. Uživatelským Workerům můžete poskytnout vazby pro přístup ke KV, D1, R2 a dalším prostředkům Cloudflare.

Průběh nasazení a správy

Outbound Worker (volitelné)

odchozí Worker zachytává fetch() požadavky odeslané uživatelskými Workery. Použijte ho k:

Vzor řízení odchozího provozu pomocí Outbound Worker

Životní cyklus požadavku

  1. Požadavek dorazí na váš dynamic dispatch Worker (například customer-a.example.com/api)
  2. Váš dynamický dispatch Worker určuje, který uživatelský Worker má požadavek zpracovat
  3. Dynamic dispatch Worker volá env.DISPATCHER.get("customer-a") k získání uživatelského Workeru
  4. Uživatelský Worker se spustí. Pokud provede externí fetch() volání a je nakonfigurovaný outbound Worker, tyto požadavky nejprve projdou přes outbound Worker.
  5. Uživatelský Worker vrátí odpověď
  6. Váš dynamický dispatch Worker může volitelně upravit odpověď před jejím vrácením

Workers for Platforms oproti Service bindings

Jak Workers for Platforms, tak Service bindings umožňují komunikaci mezi Workery. Service bindings použijte, pokud přesně víte, které Workery spolu potřebují komunikovat. Workers for Platforms použijte v případě, že user Workery nahrávají dynamicky vaši zákazníci.

Obojí můžete používat současně: váš dynamický dispatch Worker může pomocí Service bindings volat interní služby a zároveň předávat požadavky uživatelským Workerům v namespace.