Redis a praktické návrhové vzory

Podobné dokumenty
Miroslav Holec. Software & Cloud Architect. Microsoft MVP: Microsoft Azure MCSD, MCSA, MTA. Zvyšujeme výkonnost aplikací s. (Azure) Redis Cache

NSS - Cache 5. LECTURE MARTIN TOMASEK

Microsoft Azure Workshop

Diagnostika webových aplikací v Azure

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

UAI/612 - Cloudová Řešení. Návrh aplikací pro cloud

Compatibility List. GORDIC spol. s r. o. Verze

Windows Server Novinky. Petr Špetlík Cloud & Server PTA

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Healtcheck. databáze ORCL běžící na serveru db.tomas-solar.com pro

Vladimír

DNS, DHCP DNS, Richard Biječek

O Apache Derby detailněji. Hynek Mlnařík

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Nové jazykové brány do Caché. Daniel Kutáč

9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí,

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

Kubernetes Azure Service Fabric

Windows 2008 R2 - úvod. Lumír Návrat

Alternativy k SAP HANA appliance? Představení možnosti TDI a cloudové infrastruktury

Brno. 30. května 2014

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Server Security, Serverové produkty

Alcatel-Lucent VitalQIP DNS/DHCP & IP Management Software

Tomáš Kantůrek. IT Evangelist, Microsoft

1 Slovník pojmů Zákaznická data jsou data, která mají být zahrnuta do záložní kopie vytvořené pomocí Služby v závislosti na zálohovacím schématu.

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

BankKlient. FAQs. verze 9.50

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

Ope p r e a r čn č í s ys y té t m é y y Windo d w o s Stručný přehled

Novinky v Azure pro webové vývojáře

Administrace služby - GTS Network Storage

Vazba ESO9 na MS Outlook a MS Exchange

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

Možnosti využití cloudových služeb pro provoz IT

1. Administrace služby Bezpečný Internet přes webovou aplikaci WebCare GTS

Uživatelský modul. DF1 Ethernet

Microsoft SharePoint Portal Server Zvýšená týmová produktivita a úspora času při správě dokumentů ve společnosti Makro Cash & Carry ČR

O2 Managed Backup & Restore Power

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

RESTful API TAMZ 1. Cvičení 11

BrightStor ARCserve Backup r Michal Opatřil - Consultant - michal.opatril@ca.com

Použití databází na Webu

Příloha č.2 - Technická specifikace předmětu veřejné zakázky

Zálohování nefunguje... Ondřej Vlach Channel Manager CZ.SK.HU řešte dostupnost!

DataDomain pod drobnohledem

Novinky u zařízení pro sériovou komunikaci. Michal Kahánek

[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Data Protection Delivery Center, s. r. o. JEDNODUCHOST, SPOLEHLIVOST a VÝKONNOST. DPDC Protection. zálohování dat

Projekt JetConf REST API pro vzdálenou správu

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Business Edition, ESET Remote Administrator

Mezipaměti počítače. L2 cache. L3 cache

Najde si Software Defined Storage své místo na trhu?

Databáze I. 5. přednáška. Helena Palovská

Lotus Quickr - ECM Integrace s LD/LN aplikacemi. Ing. Josef Homolka VUMS Legend

Osnova dnešní přednášky

IW3 MS SQL SERVER 2014

Databázové a informační systémy

Příprava k certifikaci , TS: Windows 7, Configuring

Úvod Ovládáme základní nástroje 17

Instalační manuál aplikace

Bi-Direction Replication

Úvod 17 ČÁST 1. Kapitola 1: Principy návrhu doménové struktury služby Active Directory 21

Wonderware Historian 10.0

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

SIEM a 6 let provozu Od požadavků ČNB přes Disaster Recovery až k Log Managementu. Peter Jankovský, Karel Šimeček, David Doležal AXENTA, PPF banka

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Použití programu WinProxy

Da D to t v o é v ty t py IB111: Datové typy

Serverové systémy Microsoft Windows

Instalace Active Directory

Administrace služby IP komplet premium

Administrace služby IP komplet premium

KAPITOLA 1 Úvod do zkoušky VMware Certified Professional pro vsphere 25. KAPITOLA 2 Úvod do serverové virtualizace a řady produktů VMware 43

Databáze II. 1. přednáška. Helena Palovská

1. DATOVÉ SCHRÁNKY OBECNÝ PŘÍSTUP K DATOVÉ SCHRÁNCE DATOVÉ ZPRÁVY... 3

Tvorba počítačových clusterů pomocí Linuxu. Vedoucí práce: Mgr. Jiří Pech, Ph.D. Katedra informatiky

Instalace a konfigurace

Analýza výkonu HELIOS Green

Koncept centrálního monitoringu a IP správy sítě

CineStar Černý Most Praha

Část 1. Instalace, plánování a správa. Část 2. Vyhledávání prostředků, instalace klientů a vzdálené řízení. Část 3. Správa softwaru a balíčků.

Cloud Computing pro státní správu v praxi. Martin Vondrouš - Software602, a.s. Pavel Kovář - T-Systems Czech Republic a.s.

MVVM pro desktop i web

FUJITSU PRIMEFLEX. Human Centric Innovation in Action. Integrované systémy pro Vaše řešení. 30. května 2017 Pavel Čáslavský. 0 Copyright 2017 FUJITSU

Technická specifikace HW pro rok 2012

Co je Symantec pcanywhere 12.0? Hlavní výhody Snadné a bezpečné vzdálené připojení Hodnota Důvěra

Inthouse Systems s.r.o. Specifikace. Inthouse App a Inthouse Studio pro Siemens Climatix 6XX. Verze software 1.X. Revize dokumentu 6

Název prezentace 1. Poskytovatel garantovaných služeb NDC včetně kybernetické bezpečnosti ve státní správě

Jak spustit provoz v DR lokalitě snadno a rychle

B Organizace databáze na fyzické úrovni u serveru Oracle

Bezpečn č os o t t dat

VirtualBox desktopová virtualizace. Zdeněk Merta

Bezpečnostní monitoring SIEM (logy pod drobnohledem)

Systémová administrace portálu Liferay

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

Praktické využití Windows Server 2012 Essentials ve firmě. Jan Pilař, MVP

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Jednotlivé hovory lze ukládat nekomprimované ve formátu wav. Dále pak lze ukládat hovory ve formátu mp3 s libovolným bitrate a také jako text.

Transkript:

Miroslav Holec Software & Cloud Architect Microsoft MVP: Microsoft Azure MCSD, MCSA, MTA miroslavholec.cz @miroslavholec Úvod do Redis a praktické návrhové vzory

odkaz.me/redis

Agenda 1 Úvod do Redis Seznámení s Redis, instalace, Redis jako cache 2 Redis v praxi Klíče, hodnoty, pub/sub, pipelining, transakce, použití v praxy 3 Pokročilá témata Persistence, replikace, sentinel, sharding

ÚVOD DO REDIS

Základní vlastnosti Redis... - Remote Dictionary Server - napsaná v C, open source (BSD) - nemá žádné závislosti (soběstačná), easy to use - in-memory úložiště - data uchována ve formátu klíč-hodnota - hodnoty mohou být různých datových typů - single-threaded - operace jsou atomické - optimalizace na výkon Speciální funkce - persistence - replikace - clusters - pipelining / batching - LRU cache - LUA skriptování - high availability

Kdo používá Redis... - převážně jako output cache - běží na linuxových serverech - přes 1.3 milionu klíčů (TTL v řádu minut) - běží na databázových serverech - persistentní úložiště dat - primárně data pro routování - původně data z MySQL - 100+ milionů řádků v DB tbl. - od r. 2012 pro veškeré read operace používána Redis http://techstacks.io/tech/redis

Verze a dostupnost Redis... - open-source (BSD), celá řada klientských knihoven - starší verze 2.4 -> 2.6 mají odlišnější funkce i vnitřní implementaci Redis na Linuxu aktuálně verze 4.x download.redis.io Redis na Windows port na Windows oficiálně 64 bit (lze kompilovat 32 bit) aktuálně verze 3.2.100 Redis as a service - služba v Microsoft Azure - aktuálně verze 3.2.7

Lokální vs centralizovaná... Lokální Redis - eliminace síťové latence - spolehlivost z hlediska distribuce - nutnost synchronizace v multi-tenantu - když lokální cache, tak Redis! Centralizovaná Redis - síťová latence (dle infrastruktury) - single-point of failure - v multi-tenantu stále konzistentní

Instalace Redis v prostředí Windows... Instalace - https://github.com/microsoftarchive/redis - github repository - https://github.com/microsoftarchive/redis/releases - installer (msi/zip) - zpravidla se Redis instaluje jako Windows Service - pozor na zdroje konfigurace Struktura (executables) - redis-server samotný redis server - redis-cli příkazový řádek (komunikace s redis) - redis-benchmark nástroj pro testování výkonnosti - redis-check-aof, redis-check-dump opravy souborů (persistence) - redis-sentinel high-availability

Redis v ASP.NET MVC + Core aplikacích... Instalace - existuje mnoho knihoven pro práci s Redis https://redis.io/clients - ve světě.netu se zpravidla používá https://github.com/stackexchange/stackexchange.redis - aktuálně podpora.net 4.5+... NET Standard 1.5 - pro ASP.NET MVC existují balíčky - Output Cache Provider / Session State Provider - Data jsou ukládána do Redis jako datový typ HASH

Distributed Cache v ASP.NET Core... Distribuovaná cache - pro práci se používá IDistributedCache + extension (SqlServer, Redis...) - abstraktní infrastruktura, registrace v ConfigureServices (Startup.cs) services.adddistributedrediscache(opt => { opt.configuration = @"..."; }); DEMO /> Instalace a konfigurace Redis

LRU Cache & Eviction Policies... - redis můžeme vyhradit jen část operační paměti - defaultně neomezená, u 32-bit OS def. 3 GB - při dosažení kapacity se aplikuje tzv. eviction policy - v Redis 4.x byly Eviction Policies přeimplementovány - přidána podpora pro LFU REDIS-CLI CONFIG SET MAXMEMORY 10MB CONFIG SET MAXMEMORY-POLICY xx ALLKEYS všechny klíče VOLATILE klíče s expire LRU nejdéle nepoužité RANDOM náhodné TTL nejbližší expire LFU (Redis 4+) Nejméně přistupované allkeys-lru allkeys-random allkeys-lfu volatile-lru volatile-random volatile-ttl volatile-lfu

Security... - Redis je navržená k přístupu důvěryhodných klientů v důvěryhodném prostředí - není kladen důraz na zabezpečení ale na optimalizaci a jednoduchost - lze omezit naslouchání na vybrané IP adresy - lze nastavit jedno heslo pro všechny klienty - uchováno v konfiguračním souboru - není podpora pro encryption dat - lze přejmenovat některé příkazy, například CONFIG REDIS-CLI CONFIG SET BIND 192.168.10.23 CONFIG SET REQUIREPASS heslo CONFIG SET RENAME-COMMAND a b DEMO /> Nastavení auth v Redis

Redis v Azure / Redis as a service... - služba založená na verzi Redis 3.2.7 - konfigurace v portálu Azure (omezení Redis CLI) - pěkná diagnostika, pohled na systémové zdroje a využití (grafy) - tři cenové plány (Basic / Standard / Premium) - pokročilé funkce pouze v Premium - replikace (kompletně v UI), persistence (RDB, page blobs), clusters.. - nízká latence v rámci Azure infrastruktury (pozor na region) - https://azure.microsoft.com/cs-cz/services/cache DEMO /> Redis v Azure

REDIS V PRAXI

Klíče a expirace (TTL) /> - klíče jsou řetězce, binary safe, velikost až 512 MB - doporučení: krátké názvy, dvojtečková notace - př.: appsettings user:1 product:23:visits - výchozí nastavení je bez expirace (TTL = -1) - Redis si uchovává nejen TTL, ale např.: i poslední použití - expirace probíhá aktivně a pasivně REDIS-CLI KEYS pattern EXISTS key DEL key [keys...] TTL key EXPIRE key seconds DEBUG OBJECT key DEMO /> Klíče a jejich správa

Databáze v Redis /> - klíče lze ukládat do databází (indexace od 0.. 15) - výchozí je databáze 0 - Redis neumí hledat klíče napříč databázemi - databáze není ohraničena paměťovým prostorem = paměťový prostor a další nastavení jsou sdílené - některé funkce se s DB vylučují (Message Broker) REDIS-CLI SELECT 0 FLUSHALL FLUSHDB DBSIZE - akceptovatelná využití jsou: - oddělení dat různých aplikací a prostředí (test, staging, production) S. Sanfilippo považuje koncept databází za nejhorší návrhářské rozhodnutí... (src)

Datové typy úvodní přehled /> STRING LIST HASH SET SORTED SET MESSAGE BROKER

Jak se liší data v Redis oproti RDBMS /> Redis RDBMS (např.: SQL) k m v m v m v k m v m v k m v m v m v m v m v m v m v k m s m s m s m s k m s m s m s m s k a b c d e f g k a b c d e f g k v k v k v

Jakou hraje Redis roli z pohledu dat /> Redis jako mezipaměť - data se načtou na vyžádání, dostanou TTL a případně se invalidují - data se aktualizují pravidelně pomocí agentů Redis jako perzistentní úložiště - obvykle dočasná data nebo nastavená perzistence paměti Redis jako původce dat - data se přesunují do perzistentního úložiště pravidelně pomocí agentů - data se přesunují do perzistentního úložiště při změně klíče pomocí Keyspace Notifications

Datový typ STRING - řetězec o velikosti až 512 MB - může to být např.: obrázek, json, text, číslo - v případě čísla lze provádět aritmetické operace - všechny operace jsou atomické - nad řetězci lze vracet délku, části stringů, append... - při vkládání různé režimy - XX nastaví hodnotu pokud klíč existuje - NX nastaví hodnotu pokud klíč neexistuje REDIS-CLI SET key value [EX seconds] GETSET key value GET key INCR key DECRBY key decrement STRLEN key APPEND key value SET key string NX EX 10 DEMO /> Sčítače, indexy a zámky

Serializace dat ukládaných do cache /> - zpravidla chceme často cachovat celé objekty / stránky - nepřítelem výkonnosti může být serializace objektů Jak se rozhodovat o serializaci? rychlost serializace - samopopisující problém - deserializace!!! výsledná komprese - přenos po síti - paměťový prostor formát výstupu - čitelnost člověkem - dekódování

Serializace dat ukládaných do cache /> DEMO /> Protobuf vs. Newtonsoft

Datový typ LIST - implementován jako LinkedList - vhodný pro operace POP/PUSH s O(1) - redis se sama stará o tvorbu a likvidaci klíčů (empty list) - podpora celé řady užitečných operací - uříznutí LISTu, vrácení několika prvků dle indexů - rotace v seznamu (kombinace POP+PUSH) - udržení délky seznamu (kombinace LTRIM + LPUSH) - zásobník a fronta (PUSH, POP) REDIS-CLI LPUSH klic hodnota LPOP klic LRANGE 1 7 LTRIM 1 3 BLPOP klic 5 DEMO /> Poslední položky, fronta

Datový typ HASH - pod jedním klíčem uchována kolekce klíč/hodnota - počet párů pod jedním klíčem je neomezený - využití např. strukturované uchování vlastností objektů - speciální operace, např.: inkrementace, délka - používá jej například distributed cache v ASP.NET Core - nejsou náhradou za serializaci objektů REDIS-CLI HMSET klic podklic hodnota HGET klic podklic HGETALL klic HINCRBY klic podklic 987 HSTRLEN klic podklic DEMO /> Nákupní košík

Datový typ SET - neseřazená kolekce unikátních hodnot - časté využití pro tvorbu vztahů mezi objekty - podpora vztahů mezi klíči (průniky, rozdíly, přesuny...) SUNION - podpora náhody - přesuny do nových kolekcí REDIS-CLI SADD klic member [member...] SCARD klic SDIFF klic [klic...] SINTER klic [klic...] SISMEMBER klic SMOVE source dest member SPOP klic 874 SUNION klic [klic...] DEMO /> Filtrování a op. s množinami

Datový typ SORTED SET - kolekce unikátních prvků seřazená dle score - lze vracet prvky dle score (top X, rozsah dle score...) - score je desetinné číslo s volnou sémantikou - score, rok výroby, id, počet, věk... - klíče se stejným score jsou řazeny abecedně - nejčastější využití: leaderboards, index REDIS-CLI ZADD klic 1 member ZCARD klic ZCOUNT klic min max ZRANGE klic start stop ZRANK klic member ZSCORE klic member DEMO /> Leaderboard index

Pipelining /> - příkazy jsou zařazeny do fronty na klientovi - výsledky jsou drženy na serveru - paměťová náročnost - sada operací v pipeline není transakcí DEMO /> Pipelining v.net / C#

Transakce /> - příkazy v rámci transakce se vykonají sekvenčně - zachována atomicita operací - během transakce mohou vzniknout dva typy chyb - chyby zahazující celou transakci - chyby za běhu transakce - neexistuje rollback, ale je možné použít tzv. WATCH - WATCH v podstatě definuje podmíněný EXEC REDIS-CLI MULTI EXEC DISCARD CLIENT 1 CLIENT 2 WATCH mykey MULTI SET key valuey SET key valuex EXEC DEMO /> Transakce v.net

Message Broker (Pub/Sub) /> - publishers odesílají zprávy (řetězce) do kanálů - subscribers tyto zprávy dostávají (musí mít konektivitu) - subscribers jsou ve speciálním subscribe režimu - neexistuje scope na databázi (prostředí odlišit klíčem) - pomocí pattern matchingu lze odebírat sadu kanálů - komunikace probíhá v režimu fire-and-forget - řešením je Azure Service Bus (Topics) - využití pro - komunikace mezi klienty - synchronizace dat (Keyspace Notifications) REDIS-CLI SUBSCRIBE kanal kanal kanal PSUBSCRIBE news.* UNSUBSCRIBE

Redis Keyspace Notifications /> Redis může sloužit jako mezipaměť nebo jako výchozí úložiště čerstvých dat - v případě mezipaměti je výchozím zdrojem dat pomalé úložiště (RDB) - pokud data nejsou k dispozici, cachují se pro další požadavky Redis Keyspace Notifications - řeší otázku Jak čerstvá data z Redis propagovat do pomalých úložišť - umožňují se přihlásit přes Message Broker k odběru událostí ovlivňující data v Redis - lze sledovat klíče a operace, které nad nimi jsou volány (SET, DEL...) DEMO /> Pub/Sub a update dat

POKROČILÁ TÉMATA - Redis podporuje LUA skriptování - Perzistence dat pomocí RDB a AOF - Replikace dat vč. podpory kaskádové replikace - Vysoká dostupnost s Redis Sentinel - Sharding (Redis Cluster / Twemproxy)

LUA Skriptování + - každý LUA skript je v podstatě programem - LUA skript má určité vstupy s argumenty - v rámci LUA skriptu lze volat i Redis příkazy pomocí redis.call() - dostupný kurz a knihovna s řadou ukázek - https://gist.github.com/tylerneylon/5853042 - http://lua-users.org/wiki/samplecode EVAL 'return ARGV[1]..' '..KEYS[1]' 2 name lastname Mirek Holec EVAL 'return redis.call("get", KEYS[1])' 1 name

Perzistence / RDB vs. AOF + RDB (snapshots) - jeden kompaktní otisk paměti - vytvořený v určitý moment - spolehlivý, disaster recovery - může rázově zatížit server - nezachytí všechny změny v Redis AOF (Append Only Files) - log soubor všech write operací - může být hodně velký - lze řešit - kontinuálně zatěžuje server - neustále aktuální (zpravidla 1 sec. rozdíl) - oproti RDB není tak spolehlivý SAVE 60 1000 BGSAVE 60 1000 CONFIG SET appendonly yes APPENDFSYNC everysecond BGREWRITEAOF

Perzistence / RDB vs. AOF + RDB (snapshots) AOF (Append Only Files) DEMO /> Perzistence dat

Replikace + Princip replikace - master verze je replikována do slaves (ti si udržují aktuální verzi) - slaves mohou mít hierarchickou strukturu (Redis 4.x+) - dle situace probíhá kompletní RDB sync nebo pouze parciální sync - během synchronizace všechny nody fungují bez omezení - je doporučeno mít aktivní perzistenci (master i slaves) Využití v praxi - zvýšení spolehlivosti (konektivita, poškození nodu) - zvýšení propustnosti

Redis Sentinel + Sentinel = High Availability pro Redis - prostředí, ve kterém je Redis zcela soběstačná v případě selhání (postará se o sebe sama) - podpora monitoringu, notifikací, automatic failover a configuration provider - slaves jsou auto-discovered - více sentinel procesů mezi sebou komunikuje (Sentinel je na master i slaves) - pokud N sentinelů shledá master rozbitým, pokusí se sjednat nápravu - pro robustní prostředí je nutné mít minimálně 3 sentinely (master + 2x slave) - každý sentinel by měl být na jiném fyzickém stroji, který má oddělené prostředky - sentinel musí být podporován klienty (populární knihovny jej podporují)

Sharding (partitioning) + - zvýšení výkonnosti rozdělením klíčů do více Redis nodů - více možností implementace - client-side / proxy-assisted / query routing - zefektivnit lze hash partitioningem - preferované řešení je Redis Cluster, eventuelně Twemproxy (Twitter) Nevýhody - snížení použitelnosti některých operací (SETy) - částečná perzistence - může komplikovat škálování DEMO /> Azure Redis

ZDROJE + - https://redis.io - https://github.com/antirez/redis - https://azure.microsoft.com/cs-cz/services/cache - http://www.lua.org - https://gist.github.com/tylerneylon/5853042 - https://maxondev.com/serialization-performance-comparison-c-net-formats-frameworksxmldatacontractserializer-xmlserializer-binaryformatter-json-newtonsoft-servicestack-text odkaz.me/redis

Pozvánka na školení ASP.NET Core registrace: aspnetcore.cz

Miroslav Holec Software & Cloud Architect Microsoft MVP: Microsoft Azure MCSD, MCSA Q&A Závěrečné shrnutí - Výkonné open source úložiště použitelné on-prem i v cloudu - Naprostá jednoduchost a vysoká výkonnost - Cache s vynikající podporou.netu - Užitečné datové typy řešící časté use-cases - Perzistence, replikace a high availability