Sprievodca po GemFire ​​s jarnými údajmi

1. Prehľad

GemFire ​​je vysoko výkonná infraštruktúra na správu distribuovaných údajov, ktorá sa nachádza medzi aplikačným klastrom a back-endovými zdrojmi údajov.

S GemFire ​​je možné dáta spravovať v pamäti, čo urýchľuje prístup. Spring Data poskytuje ľahkú konfiguráciu a prístup k GemFire ​​z aplikácie Spring.

V tomto článku sa pozrieme na to, ako môžeme pomocou GemFire ​​splniť požiadavky na ukladanie do pamäte cache našej aplikácie.

2. Maven závislosti

Aby sme mohli využiť podporu Spring Data GemFire, musíme do našej najskôr pridať nasledujúcu závislosť pom.xml:

 org.springframework.data spring-data-gemfire 1.9.1.RELEASE 

Najnovšiu verziu tejto závislosti nájdete tu.

3. Základné vlastnosti GemFire

3.1. Cache

Vyrovnávacia pamäť v serveri GemFire ​​poskytuje základné služby správy údajov a spravuje pripojenie k iným rovnocenným serverom.

Konfigurácia vyrovnávacej pamäte (cache.xml) popisuje, ako budú dáta distribuované medzi rôzne uzly:

     ...     ... 

3.2. Regióny

Údajové oblasti sú logické zoskupenie v rámci medzipamäte pre jednu množinu údajov.

Jednoducho povedané, oblasť nám umožňuje ukladať údaje do viacerých virtuálnych počítačov v systéme bez ohľadu na to, do ktorého uzla sú údaje uložené v klastri.

Regióny sú rozdelené do troch širokých kategórií:

  • Replikovaný región uchováva kompletnú sadu údajov o každom uzle. Poskytuje vysoký výkon pri čítaní. Operácie zápisu sú pomalšie, pretože je potrebné šíriť aktualizáciu údajov do každého uzla:
  • Rozdelený región distribuuje údaje tak, aby každý uzol ukladal iba časť obsahu regiónu. Kópia údajov je uložená v jednom z ďalších uzlov. Poskytuje dobrý výkon pri zápise.
  • Miestny región sa nachádza na definujúcom uzle člena. Neexistuje žiadne pripojenie s inými uzlami v klastri.

3.3. Dotaz na medzipamäť

GemFire ​​poskytuje dotazovací jazyk s názvom OQL (Object Query Language), ktorý nám umožňuje odkazovať na objekty uložené v dátových oblastiach GemFire. Toto je syntaxou veľmi podobné SQL. Pozrime sa, ako vyzerá veľmi základný dopyt:

VYBERTE DISTINCT * Z príkladu Región

GemFire QueryService poskytuje metódy na vytvorenie objektu dotazu.

3.4. Serializácia údajov

Na správu serializácie a deserializácie údajov poskytuje GemFire ​​iné možnosti ako serializácia Java, ktorá poskytuje vyšší výkon, poskytuje väčšiu flexibilitu pri ukladaní a prenose údajov a tiež podporuje rôzne jazyky.

Z tohto dôvodu GemFire ​​definoval dátový formát Portable Data eXchange (PDX). PDX je medzijazykový dátový formát, ktorý poskytuje rýchlejšiu serializáciu a deserializáciu ukladaním údajov do pomenovaného poľa, ku ktorým je možné pristupovať priamo bez potreby úplnej deserializácie objektu.

3.5. Vykonanie funkcie

V GemFire ​​môže byť funkcia umiestnená na serveri a možno ju vyvolať z klientskej aplikácie alebo iného servera bez potreby odosielania samotného funkčného kódu.

Volajúci môže nariadiť funkcii závislej od údajov, aby fungovala na konkrétnom súbore údajov, alebo môže viesť nezávislú údajovú funkciu k práci na konkrétnom serveri, členovi alebo skupine členov.

3.6. Priebežné dopytovanie

Pri nepretržitom dotazovaní sa klienti prihlásia na odber udalostí na strane servera pomocou filtrovania dotazov typu SQL. Server odošle všetky udalosti, ktoré upravujú výsledky dotazu. Na dodávanie udalostí súvislých dotazov sa používa rámec predplatného klient / server.

Syntax pre nepretržitý dopyt je podobná základným dotazom napísaným v OQL. Napríklad dopyt, ktorý poskytuje najnovšie údaje o zásobách z Skladom región možno napísať ako:

SELECT * z StockRegion s kde s.stockStatus = 'aktívny';

Ak chcete získať aktualizáciu stavu z tohto dotazu, implementácia CQListener je potrebné pripevniť pomocou StockRegion:

   ...  ...  ...   

4. Podpora jarných dát GemFire

4.1. Konfigurácia Java

Na zjednodušenie konfigurácie poskytuje Spring Data GemFire ​​rôzne anotácie pre konfiguráciu základných komponentov GemFire:

@Configuration verejná trieda GemfireConfiguration {@Bean Vlastnosti gemfireProperties () {Vlastnosti gemfireProperties = nové Vlastnosti (); gemfireProperties.setProperty ("name", "SpringDataGemFireApplication"); gemfireProperties.setProperty ("mcast-port", "0"); gemfireProperties.setProperty ("úroveň protokolu", "konfigurácia"); vrátiť gemfireProperties; } @Bean CacheFactoryBean gemfireCache () {CacheFactoryBean gemfireCache = nový CacheFactoryBean (); gemfireCache.setClose (true); gemfireCache.setProperties (gemfireProperties ()); vrátiť gemfireCache; } @Bean (name = "employee") LocalRegionFactoryBean getEmployee (konečná vyrovnávacia pamäť GemFireCache) {LocalRegionFactoryBean employeeRegion = nový LocalRegionFactoryBean (); employeeRegion.setCache (vyrovnávacia pamäť); employeeRegion.setName ("zamestnanec"); // ... vrátiť zamestnancaRegion; }}

Aby sme nastavili medzipamäť a oblasť GemFire, musíme najskôr nastaviť niekoľko konkrétnych vlastností. Tu mcast-port je nastavený na nulu, čo naznačuje, že tento uzol GemFire ​​je zakázaný pre zisťovanie a distribúciu multicast. Tieto vlastnosti sa potom odovzdajú CacheFactoryBean vytvoriť GemFireCache inštancia.

Použitím GemFireCache fazuľa, inštancia LocalRegionFatcoryBean je vytvorený, ktorý predstavuje oblasť v rámci medzipamäte pre Zamestnanec inštancie.

4.2. Mapovanie entít

Knižnica poskytuje podporu pre mapovanie objektov, ktoré sa majú ukladať do mriežky GemFire. Metadáta mapovania sú definované pomocou anotácií v doménových triedach:

@Region ("zamestnanec") verejná trieda Zamestnanec {@Id verejné Názov reťazca; verejný dvojitý plat; @PersistenceConstructor public Zamestnanec (meno reťazca, dvojnásobný plat) {this.name = meno; this.salary = plat; } // štandardní zakladatelia / zakladatelia}

Vo vyššie uvedenom príklade sme použili nasledujúce anotácie:

  • @Región, určiť oblasť regiónu Zamestnanec trieda
  • @Id, anotovať vlastnosť, ktorá sa použije ako kľúč medzipamäte
  • @PersistenceConstructor, čo pomáha označiť jedného konštruktora, ktorý sa použije na vytvorenie entít, ak je k dispozícii viac konštruktorov

4.3. Úložiská GemFire

Ďalej sa pozrime na centrálnu súčasť v Spring Data - úložisko:

@Configuration @EnableGemfireRepositories (basePackages = "com.baeldung.spring.data.gemfire.repository") verejná trieda GemfireConfiguration {@Autowired EmployeeRepository employeeRepository; // ...}

4.4. Podpora dotazov Oql

Úložiská umožňujú definíciu metód dotazu na efektívne spustenie OQL dotazov proti regiónu, do ktorého je spravovaná entita mapovaná:

@Repository verejné rozhranie EmployeeRepository rozširuje CrudRepository {Employee findByName (názov reťazca); Iterable findBySalaryGreaterThan (dvojnásobný plat); Iterable findBySalaryLessThan (dvojnásobný plat); Iterable findBySalaryGreaterThanAndSalaryLessThan (dvojnásobný plat1, dvojnásobný plat2); }

4.5. Podpora vykonávania funkcií

K dispozícii máme tiež podporu anotácií - aby sme zjednodušili prácu s vykonávaním funkcií GemFire.

Keď využívame funkcie, implementáciu a vykonávanie, je potrebné vyriešiť dva problémy.

Pozrime sa, ako môže byť POJO vystavený ako funkcia GemFire ​​pomocou anotácií Spring Data:

@ Verejná trieda komponentu FunctionImpl {@GemfireFunction verejné neplatné pozdravy (reťazcová správa) {// nejaká logika} // ...}

Musíme výslovne aktivovať spracovanie anotácií pre @GemfireFunction pracovať:

@Configuration @EnableGemfireFunctions verejná trieda GemfireConfiguration {// ...}

Na vykonávanie funkcie musí proces vyvolávajúci vzdialenú funkciu poskytnúť volacie argumenty, funkciu id, cieľ vykonania (onServer, na Regióne, onMember, atď.):

@OnRegion (region = "zamestnanec") verejné rozhranie FunctionExecution {@FunctionId ("pozdrav") verejné void vykonanie (reťazcová správa); // ...}

Ak chcete povoliť spracovanie anotácie vykonania funkcie, musíme ju pridať a aktivovať pomocou možností skenovania komponentov Spring:

@Configuration @EnableGemfireFunctionExecutions (basePackages = "com.baeldung.spring.data.gemfire.function") verejná trieda GemfireConfiguration {// ...}

5. Záver

V tomto článku sme preskúmali základné funkcie GemFire ​​a preskúmali sme, ako API poskytované Spring Data uľahčujú prácu s nimi.

Celý kód tohto článku je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found