Ú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.