INTEGRITY Dokumentace

Jak KV funguje

KV je globální úložiště dat typu klíč-hodnota s nízkou latencí. Data ukládá v malém počtu centralizovaných datových center a po přístupu je pak ukládá do mezipaměti v datových centrech Cloudflare.

KV zvládá výjimečně vysoké objemy čtení s nízkou latencí, což díky vestavěné mezipaměti a globální distribuci KV umožňuje vytvářet dynamická API, která dobře škálují. Požadavky, které nejsou v mezipaměti a musí přistupovat k centrálním úložištím, mohou mít vyšší latenci.

Zápis dat do KV a čtení dat z KV

Když zapisujete do KV, vaše data se zapisují do centrálních úložišť dat. Data se automaticky neodesílají do mezipaměti každé lokality.

Při zápisu do KV se vaše data zapisují do centrálních datových úložišť.

První čtení z daného místa nemá k dispozici žádnou hodnotu v mezipaměti. Data se musí načíst z nejbližší regionální úrovně, poté z centrální úrovně a v krajním případě, při skutečně chladném globálním čtení, až z centrálních úložišť. První přístup je globálně pomalý, ale další požadavky jsou rychlejší, zejména pokud se soustředí do jednoho regionu.

První čtení mezipaměť netrefí a nejprve zamíří do nejbližšího centrálního datového úložiště.

Časté čtení ze stejného místa vrací uloženou hodnotu z mezipaměti, aniž by bylo nutné číst jinde, což přináší nejrychlejší odezvy. KV na pozadí pečlivě aktualizuje hodnoty v mezipaměti tím, že je před vypršením platnosti obnovuje z vyšších úrovní mezipaměti a centrálních datových úložišť.

Obnovování z vyšších úrovní a centrálních úložišť dat probíhá na pozadí opatrně, aby obsah, ke kterému právě probíhá přístup, byl i nadále bez přerušení obsluhován z mezipaměti.

Jak již bylo zmíněno výše, časté čtení vrátí hodnotu z cache.

KV je optimalizováno pro aplikace s vysokým podílem čtení. Data ukládá centrálně a k jejich uložení do mezipaměti používá hybridní replikaci typu push/pull. KV se hodí pro případy, kdy potřebujete zapisovat poměrně zřídka, ale číst rychle a často. Zřídka čtené hodnoty se stahují z jiných datových center nebo centrálních úložišť, zatímco oblíbenější hodnoty se uchovávají v mezipaměti v datových centrech, ze kterých jsou vyžádány.

Výkon

Chcete-li zlepšit výkon KV, zvyšte cacheTtl parametr oproti výchozím 60 sekundám.

KV dosahuje vysokého výkonu díky tomu, že ukládání do mezipaměti ↗ díky čemuž jsou čtení eventuálně konzistentní se zápisy.

Změny jsou obvykle okamžitě viditelné v té lokalitě globální sítě Cloudflare, kde byly provedeny. V ostatních lokalitách globální sítě se mohou projevit až za 60 sekund nebo déle, dokud nevyprší platnost jejich verzí dat v cache.

Do mezipaměti se ukládají i negativní vyhledávání signalizující, že klíč neexistuje, takže při zjištění vytvoření hodnoty dochází ke stejnému zpoždění jako při její změně.

Konzistence

KV dosahuje vysokého výkonu díky tomu, že je eventuálně konzistentní. V místě globální sítě Cloudflare, kde ke změně dojde, je tato změna obvykle viditelná okamžitě. Není to však zaručeno, a proto se na toto chování nedoporučuje spoléhat. V ostatních místech globální sítě se změna může projevit až po 60 sekundách nebo déle, než vyprší platnost jejich uložených verzí dat v mezipaměti.

V lokalitách, které nedávno četly předchozí verzi daného klíče, se změny projeví se zpožděním (to platí i pro čtení, která signalizovala, že klíč neexistuje, protože i ta se ukládají do místní mezipaměti).

Jedním z přístupů k zajištění konzistence write-after-write je posílat všechny zápisy pro daný klíč KV přes odpovídající instanci Durable Object a hodnotu pak z KV číst v ostatních Workers. To se hodí, pokud potřebujete větší kontrolu nad zápisy, ale vlastnosti čtení KV popsané výše vám jinak vyhovují.

Pokyny

Workers KV je edge úložiště typu klíč-hodnota s eventuální konzistencí. Díky tomu je ideální pro s převahou čtení, vysoce cachovatelné úlohy, jako jsou:

V těchto scénářích se Workers spouští v datovém centru nejbližším uživateli a data Workers KV se pro další požadavky uloží do mezipaměti v daném regionu, aby se minimalizovala latence.

Pokud máte s převahou zápisu Redis ↗-ové zátěže, kdy aktualizujete stejný klíč desítky až stovky krát za sekundu, nebude KV ideálním řešením. Pokud můžete přehodnotit způsob, jakým vaše aplikace zapisuje do jednotlivých párů klíč-hodnota, a rozložit zápisy mezi několik samostatných klíčů, může vám Workers KV vyhovovat. Alternativně, Durable Objects poskytuje key-value API s vyššími limity počtu zápisů na klíč.

Security

Viz Dokumentace k zabezpečení dat k pochopení toho, jak Workers KV zabezpečuje data.