Útmutató a GemFire-hez tavaszi adatokkal

1. Áttekintés

A GemFire ​​egy nagy teljesítményű elosztott adatkezelési infrastruktúra, amely az alkalmazásfürt és a háttér-adatforrások között helyezkedik el.

A GemFire ​​segítségével az adatok a memóriában kezelhetők, ami gyorsabbá teszi a hozzáférést. A Spring Data egyszerű konfigurálást és hozzáférést biztosít a GemFire-hez a Spring alkalmazásból.

Ebben a cikkben megvizsgáljuk, hogyan használhatjuk a GemFire-t alkalmazásunk gyorsítótárazási követelményeinek teljesítésére.

2. Maven-függőségek

A Spring Data GemFire ​​támogatás kihasználásához először hozzá kell adnunk a következő függőséget pom.xml:

 org.springframework.data spring-data-gemfire 1.9.1.KÖZLEMÉNY 

A függőség legújabb verziója itt található.

3. A GemFire ​​alapvető jellemzői

3.1. Gyorsítótár

A GemFire ​​cache-je biztosítja az alapvető adatkezelési szolgáltatásokat, valamint kezeli a kapcsolatot más társakkal.

A gyorsítótár konfigurációja (cache.xml) leírja, hogy az adatok hogyan oszlanak el a különböző csomópontok között:

     ...     ... 

3.2. Régiók

Az adatrégiók a cache-en belüli logikai csoportosítás egyetlen adathalmaz számára.

Egyszerűen fogalmazva, egy régió lehetővé teszi számunkra az adatok tárolását a rendszer több virtuális gépében anélkül, hogy figyelembe vennénk, melyik csomópontra kerülnek az adatok a fürtön belül.

A régiókat három nagy kategóriába sorolják:

  • Replikált régió tárolja az egyes csomópontok teljes adatkészletét. Magas olvasási teljesítményt nyújt. Az írási műveletek lassabbak, mivel az adatfrissítést át kell terjeszteni az egyes csomópontokra:
  • Felosztott régió az adatokat úgy terjeszti, hogy minden csomópont csak a régiótartalmak egy részét tárolja. Az adatok másolatát a többi csomópont egyikén tároljuk. Jó írási teljesítményt nyújt.
  • Helyi régió a meghatározó tagcsomóponton található. Nincs kapcsolat a fürt többi csomópontjával.

3.3. Lekérdezés a gyorsítótárból

A GemFire ​​biztosítja az OQL (Object Query Language) nevű lekérdezési nyelvet, amely lehetővé teszi számunkra, hogy a GemFire ​​adatrégióiban tárolt objektumokra utaljunk. Ez szintaxisban nagyon hasonlít az SQL-hez. Lássuk, hogyan néz ki egy nagyon egyszerű lekérdezés:

SELECT DISTINCT * FROM exampleRegion

GemFire's QueryService módszereket biztosít a lekérdezési objektum létrehozására.

3.4. Adatok sorosítása

Az adatok sorosításának és deserializációjának kezeléséhez a GemFire ​​a Java sorosítástól eltérő lehetőségeket kínál, amelyek nagyobb teljesítményt nyújtanak, nagyobb rugalmasságot biztosítanak az adattároláshoz és az adatátvitelhez, valamint támogatják a különböző nyelveket.

Ezt szem előtt tartva a GemFire ​​meghatározta a Portable Data eXchange (PDX) adatformátumot. A PDX egy többnyelvű adatformátum, amely gyorsabb sorosítást és deserializációt tesz lehetővé azáltal, hogy az adatokat a megnevezett mezőben tárolja, és amelyek közvetlenül elérhetők az objektum teljes deserializálása nélkül.

3.5. Funkció végrehajtása

A GemFire-ben egy funkció egy szerveren tartózkodhat, és meghívható egy ügyfélalkalmazásból vagy egy másik szerverről anélkül, hogy magát a funkciókódot el kellene küldenie.

A hívó irányíthat egy adatfüggő funkciót egy adott adatkészlet működtetésére, vagy ráirányíthatja egy független adatfunkciót egy adott szerverre, tagra vagy tagcsoportra.

3.6. Folyamatos lekérdezés

Folyamatos lekérdezéssel az ügyfelek SQL-típusú lekérdezésszűrés használatával iratkozzanak fel szerveroldali eseményekre. A szerver elküldi az összes olyan eseményt, amely módosítja a lekérdezés eredményeit. A folyamatos lekérdező esemény kézbesítése az ügyfél / szerver előfizetői keretet használja.

A folyamatos lekérdezés szintaxisa hasonló az OQL-ben írt alapvető lekérdezésekhez. Például egy lekérdezés, amely a legfrissebb készletadatokat szolgáltatja Készlet régió a következőképpen írható:

SELECT * a StockRegion s-ból, ahol s.stockStatus = 'aktív';

Az állapotfrissítés megszerzéséhez erről a lekérdezésről a CQListener csatolni kell a StockRegion:

   ...  ...  ...   

4. Spring Data GemFire ​​támogatás

4.1. Java konfiguráció

A konfiguráció egyszerűsítése érdekében a Spring Data GemFire ​​különféle feliratozással látja el az alapvető GemFire-összetevőket:

@Configuration public class GemfireConfiguration {@Bean Properties gemfireProperties () {Properties gemfireProperties = new Properties (); gemfireProperties.setProperty ("név", "SpringDataGemFireApplication"); gemfireProperties.setProperty ("mcast-port", "0"); gemfireProperties.setProperty ("log-level", "config"); return gemfireProperties; } @Bean CacheFactoryBean gemfireCache () {CacheFactoryBean gemfireCache = új CacheFactoryBean (); gemfireCache.setClose (true); gemfireCache.setProperties (gemfireProperties ()); return gemfireCache; } @Bean (név = "alkalmazott") LocalRegionFactoryBean getEmployee (végleges GemFireCache gyorsítótár) {LocalRegionFactoryBean workerRegion = új LocalRegionFactoryBean (); workerRegion.setCache (gyorsítótár); workerRegion.setName ("alkalmazott"); // ... visszatérő alkalmazottRégió; }}

A GemFire ​​gyorsítótár és régió beállításához először néhány speciális tulajdonságot be kell állítanunk. Itt mcast-port nullára van állítva, ami azt jelzi, hogy ez a GemFire ​​csomópont le van tiltva a multicast felfedezéséhez és terjesztéséhez. Ezeket a tulajdonságokat aztán továbbadják CacheFactoryBean létrehozni a GemFireCache példa.

Használata GemFireCache bab, a LocalRegionFatcoryBean létrejön, amely a régió gyorsítótárában lévő régiót képviseli Munkavállaló példányok.

4.2. Entitás leképezése

A könyvtár támogatást nyújt a GemFire ​​rácsban tárolandó objektumok feltérképezéséhez. A leképezési metaadatokat a tartományosztályokhoz tartozó kommentárok határozzák meg:

@Region ("alkalmazott") public class Employee {@Id public String name; állami kettős fizetés; @PersistenceConstructor public Employee (karakterlánc neve, dupla fizetés) {this.name = név; ez.fizetés = fizetés; } // szokásos getters / setters}

A fenti példában a következő kommentárokat használtuk:

  • @Vidék, a régió példányának megadásához Munkavállaló osztály
  • @Id, a gyorsítótár-kulcsként hasznosítandó tulajdonság jegyzeteléséhez
  • @PersistenceConstructor, amely segít kijelölni azt az egyetlen konstruktort, amelyet entitások létrehozására használnak, abban az esetben, ha több konstruktor áll rendelkezésre

4.3. GemFire ​​adattárak

Ezután nézzük meg a Spring Data központi elemét - a tárházat:

@Configuration @EnableGemfireRepositories (basePackages = "com.baeldung.spring.data.gemfire.repository") public class GemfireConfiguration {@Autowired EmployeeRepository workerRepository; // ...}

4.4. Oql Query támogatás

A tárak lehetővé teszik a lekérdezési módszerek meghatározását, hogy hatékonyan futtassák az OQL-lekérdezéseket azzal a régióval szemben, amelyhez a kezelt entitás hozzárendelve van:

@Repository nyilvános felület Az EmployeeRepository kiterjeszti a CrudRepository {Employee findByName (karakterlánc neve); Iterálható findBySalaryGreaterThan (kettős fizetés); Iterálható findBySalaryLessThan (kettős fizetés); Iterálható findBySalaryGreaterThanAndSalaryLessThan (kettős fizetés1, kettős fizetés2); }

4.5. Funkció végrehajtási támogatás

Rendelkezünk annotációs támogatással is - a GemFire ​​függvény végrehajtásának egyszerűsítése érdekében.

Két funkcióval kell foglalkozni, amikor a funkciókat használjuk, a megvalósítást és a végrehajtást.

Lássuk, hogyan lehet egy POJO-t GemFire-függvényként exponálni a Spring Data kommentárokkal:

@Component public class FunctionImpl {@GemfireFunction public void greeting (String message) {// némi logika} // ...}

Kifejezetten aktiválnunk kell a feliratozás feldolgozását a @GemfireFunction dolgozni:

@Configuration @EnableGemfireFunctions nyilvános osztály GemfireConfiguration {// ...}

A függvény végrehajtásához egy távoli függvényt hívó folyamatnak meg kell adnia hívó argumentumokat, egy függvényt id, a végrehajtási cél (onServer, onRegion, onMemberstb.):

@OnRegion (region = "alkalmazott") nyilvános felület FunctionExecution {@FunctionId ("üdvözlet") public void execute (String üzenet); // ...}

A funkció végrehajtási kommentár-feldolgozásának engedélyezéséhez hozzá kell adnunk, hogy aktiváljuk a Spring komponens-szkennelési képességeinek használatával:

@Configuration @EnableGemfireFunctionExecutions (basePackages = "com.baeldung.spring.data.gemfire.function") public class GemfireConfiguration {// ...}

5. Következtetés

Ebben a cikkben megvizsgáltuk a GemFire ​​alapvető funkcióit, és megvizsgáltuk, hogy a Spring Data által biztosított API-k hogyan könnyítik meg a munkát vele.

A cikk teljes kódja elérhető a GitHub oldalon.