INTEGRITY Dokumentace

Souběžnost konzumentů

Souběžnost konzumenta umožňuje přijímající Worker zpracovávající zprávy z fronty automaticky horizontálně škálovat, aby udrželi tempo, s jakým se do fronty zapisují zprávy.

V mnoha systémech může rychlost zápisu zpráv do fronty snadno přesáhnout rychlost, jakou je jediný konzument dokáže číst a zpracovávat. Bývá to obvykle proto, že konzument musí parsovat obsah zpráv, zapisovat do úložiště nebo databáze, případně volat API třetích stran (nadřazených systémů).

Mějte na paměti, že produceři front se vždy škálují až do maximální podporovaný počet zpráv za sekundu (na frontu) limit.

Povolit souběžnost

Ve výchozím nastavení mají všechny fronty povolenou souběžnost. Konzumenti fronty se automaticky škálují nahoru k maximálnímu počtu souběžných vyvolání podle potřeby pro správu zásoby zpráv fronty a/nebo míry chyb.

Jak funguje souběžnost

Po zpracování dávky zpráv Queues zkontroluje, zda je třeba upravit počet souběžných konzumentů. Počet souběžných konzumentů spouštěných pro frontu se automaticky škáluje na základě několika faktorů, mimo jiné:

Kde je to možné, Queues optimalizuje chod tak, aby zabránilo exponenciálnímu růstu backlogu, a minimalizovalo tak situace, kdy počet zpráv ve frontě naroste natolik, že dosáhne limit uchování zpráv před zpracováním.

Příklad

Pokud do fronty zapisujete 100 zpráv za sekundu a jediný souběžný konzument potřebuje na zpracování dávky 100 zpráv 5 sekund, počet zpráv čekajících na zpracování poroste rychleji, než je konzument stačí zpracovávat.

V tomto scénáři si Queues všimnou rostoucího backlogu a zvýší počet souběžných vyvolání konzumujících Workerů až na ustálený stav přibližně pěti (5), dokud se rychlost příchozích zpráv nesníží, konzument nezačne zprávy zpracovávat rychleji nebo nezačne generovat chyby.

Proč se moji konzumenti automaticky neškálují?

Pokud se vaši konzumenti automaticky neškálují, může to mít několik pravděpodobných příčin:

Omezení souběžnosti

Pokud je váš pracovní postup omezen nadřazeným API nebo systémem, může být výhodnější nechat backlog růst a přijmout vyšší celkovou latenci výměnou za to, že nadřazený systém nepřetížíte.

Konkurenci Workeru konzumenta můžete nakonfigurovat dvěma způsoby:

  1. Nastavení souběžnosti v Cloudflare dashboardu
  2. Nastavte souběžnost pomocí Konfigurační soubor Wrangler

Nastavení souběžnosti v Cloudflare dashboardu

Chcete-li nakonfigurovat nastavení souběžnosti pro váš konzumentský Worker z dashboardu:

  1. V dashboardu Cloudflare přejděte na Queues stránce.

    Přejděte na Queues ↗
  2. Vyberte frontu > Nastavení.

  3. Vyberte Upravit konzumenta v části Podrobnosti spotřebitele.

  4. Nastavte Maximální počet vyvolání konzumenta na hodnotu mezi 1 a 250. Tato hodnota udává maximální počet souběžných vyvolání konzumenta dostupných pro vaši frontu.

Chcete-li odstranit pevně stanovenou maximální hodnotu, vyberte automaticky (doporučeno).

Mějte na paměti, že pokud do fronty zapisujete zprávy rychleji, než je stíháte zpracovávat, mohou nakonec dosáhnout maximální doba uchování nastavené pro tuto frontu. Jednotlivé zprávy, které dosáhnou tohoto limitu, ve frontě vyprší a budou odstraněny.

Nastavte souběžnost v Konfigurační soubor Wrangler

Chcete-li nastavit pevný maximální počet souběžných spuštění consumeru pro danou frontu, nakonfigurujte max_concurrency v souboru Wrangler:

{
	"queues": {
		"consumers": [
			{
				"queue": "my-queue",
				"max_concurrency": 1
			}
		]
	}
}
[[queues.consumers]]
queue = "my-queue"
max_concurrency = 1

Chcete-li limit odstranit, odeberte max_concurrency nastavení z [[queues.consumers]] konfiguraci dané fronty a volání npx wrangler deploy k odeslání aktualizace konfigurace.

Billing

Když se vyvolá více Worker konzumentů, každé vyvolání Workeru s sebou nese Náklady na dobu CPU.

Fakturace konzumentů se řídí Standardní model využití Workers to znamená, že se vývojáři účtuje požadavek i čas CPU využitý v tomto požadavku.

Příklad

Worker konzumenta, kterému zpracování dávky zpráv trvá 2 sekundy, bude mít při zpracování 50 milionů (50,000,000) zpráv stejné celkové náklady bez ohledu na to, zda je zpracovává souběžně (rychleji), nebo jednotlivě (pomaleji).