320 likes | 558 Views
Oracle Coherence. Nagy Péter. Történeti áttekintés. 2000 aug. – Tangosol alapítása (Massachusetts) Java, J2EE alkalmazások teljesítmény problémáinak megoldása 2001 febr. – Coherence 1.0 2005 - BEA, DataSynapse együttműködés 2007 márc. – Oracle 2008 jún. – Coherence 3.4
E N D
Oracle Coherence Nagy Péter
Történeti áttekintés • 2000 aug. – Tangosol alapítása (Massachusetts) • Java, J2EE alkalmazások teljesítmény problémáinak megoldása • 2001 febr. – Coherence 1.0 • 2005 - BEA, DataSynapse együttműködés • 2007 márc. – Oracle • 2008 jún. – Coherence 3.4 • Peer-to-peer mesh architektúra • Párhuzamos feldolgozás (JSR 236/237) • Java, .NET, C++ • Toplink, Hibernate,... • XTP ~ Coherence • JCache expert group
Teljesítmény és skálázhatóság • Skálázhatóság • Cél nagy mennyiségű adat/kérés kezelése • Sok és/vagy nagy motor (scale out) • Teljesítmény • Cél a nagy sebesség • Motor felturbózása, minőségi alkatrészek(scale up) A kettőt kombinálni nem egyszerű!
Alkalmazások skálázhatósága • Tervezési lépés • Nem funkcionális követelmények felderítése • Algoritmusok, adatstruktúrák • Fejlesztői felelősség, folyamatos életciklus kezelés • Tapasztalat • PoC • Tervezés hiányában: adott idő után felmerülő probléma • Nincs drop-in megoldás • Scale-up • Quick-fix megoldások • Kód review, újratervezés(!)
Oracle Coherence Data Grid In-Memory Data Grid Alkalmazásban használt objektumok (Objektum orientált, ORM, CRUD) Több szerveren között megosztott konzisztens, transzparens adatréteg Kis válaszidő Nagy kapacitás Skálázhatóság (kiszámítható) Nincs szűk keresztmetszet Nagy rendelkezésre-állás Folyamatos rendelkezésre-állás Hibatűrő Nincs adatvesztés Párhuzamos és eseményvezérelt feldolgozás Java, .NET, C++ kliensek Plug into (Hibernate,Toplink) Nem csak egy egyszerű cache! Web Services Enterprise Applications Real Time Clients Data Services Oracle Coherence Data Grid Databases Web Services Mainframes
Fejlesztői/telepítői oldaról • Egy szimpla könyvtár • Standard “JAR” vagy • Standard “DLL” (.Net 1.1 és 2.0) • Elérhető kiegészítések további (keret)rendszerekhez (adatbázisok, Spring, Toplink, Hibernate...) • Egyszerű felhasználás a kódban • Single System Image = Simple programming paradigm • „RemoteException” mentes „elosztott” programozás
Coherence felhasználási területek Általános cache felhasználási területek: HTTP Session Caching (állapottal rendelkező alkalmazások) Oldalak, dokumentumok, stb. Alkalmazás adatok: Your Own Java Objects (YOJOs;-) Load Balancing Adat elosztás a clusteren (a konfiguráció függvényében) Párhuzamos feldolgozás Esemény alapú műveletek Adatbázis terheltség csökkentése read-through write-through (szinkron) write-behind (aszinkron) … A cache segíti az alsóbb rétegek tehermentesítését.
Coherence az alkalmazás rétegben Object Relational Mapping Alkalmazás Adatbázis Relational Object Java SQL
Hogyan működik a Data Grid? X ? • „Adatterítés” a clusterben lévő szervereken • Automatikus és szinkron replikáció egy másik szerverrel • Single System Image: bárhonnan bármelyik adat elérhető • A szerverek figyelik egymás állapotát • Több szerver együttműködve detektálja a hibás szervert • A működő szerverek átveszik a kieső szerepét • Folyamatos működés: leállás és adatvesztés nélkül
<Insert Picture Here> Coherence Cache topológiák
Lokális cache séma • Lokális cache • Direkt referencia a POJO-ra, az alkalmazás Heap-en belül • Miért: • Házilagos cache megoldások lecserélése • Kompatibilis az összetettebb Coherence topológia sémákkal, bővíthető • Hogyan: • SafeHashMap kiterjesztés (nagyobb teljesítmény, thread-safe) • Konfigurálható lejárati idők: • LFU, LRU, Hybrid (LFU+LRU), Time-based, Never, Pluggable
Replikált cache séma • Brute-force megvalósításaa clusterezettcache-nek • Cél • Extra gyors olvasási teljesítmény • Megoldás • Minden résztvevő ugyanazt tartalmazza • Minimális válaszidő • Automatikus, transzparens replikáció és szinkronizáció • Konfigurálható lejárati idők : • LFU, LRU, Hybrid (LFU+LRU), Time-based, Never, Pluggable
Replikált cache séma • Cost Per Update: ha sok a módosítás nem lehet érdemben skálázni a rendszert. • Minden résztvevőt frissíteni kell! • Cost Per Entry: mivel mindenhol minden tárolva van ezért relatíve nagy cache méret minden egyes heap-en. • Szintén skálázhatósági probléma! • Méretezés • Value = binary size (Externalizable, ExternalizableHelper) • Key ~ 30byte • Index (opcionálisan)
Elosztottcache séma – Partícionált Cél: Extrém skálázhatóság Megoldás: A Cacheben tárolt adatok particionálása Transzparens maradjon Backup tárolás LineárisSkálázhatóság Konfigurálható lejárati idők: LFU, LRU, Hybrid (LFU+LRU), Time-based, Never, Pluggable
Partícionáltcache séma Minden résztvevő lát mindenkit Legfeljebb 2-hop (ugrás) a hozzáféréskor Legfeljebb 4-hop frissítéskor Figyelmen kívűl hagyja a cluster méretét Ezért skálázható jól a Coherence! Lineáris skálázhatóság Cache tárolási és számítási kapacitásnövelhető a cluster növelésével Load-Balance a clusteren Peer-to-peerkommunikáció Nem igényel multicast kommunikációt
Partícionáltcache séma Előnyök: Kiszámíthatóhozzáférési és frissítési idő(a cluster méretének ismeretében) Problémamentes, automatikushibafelismerés/helyreállítás A mentés lesz az elsődleges Majd az elsődleges létrehozúj mentést A Cache üzemelése alatt, párhuzamosan Cache kapacitásalineárisan nő a cluster méretével Dinamikusan, runtime skálázható Megszorítások: Mentés költsége (még így is kisebb, mint replikált esetben) Szerializáció költsége Hálózati ugrások költsége (ha nincs meg lokálisan) Létező, de közel konstans időigény a műveleteknél
Közelicache séma (Lokális + partícionált) Cache of a cache Cél: Skálázható teljesítmény Partícionált megoldás sokszor hálózaton keresztüli forgalmat igényel Lokális cache (L1) az elosztott séma felett (L2) Megoldás: A lokális cache teljesítményét egyesíteni a partícionált séma kapacitásával. Konfigurálható ‘front’ és ‘back’ topológia Konfigurálható lejárati idő: LFU, LRU, Hybrid (LFU+LRU), Time-based, Never, Pluggable Koherencia: többféle cache-invalidációsstratégia.
Roadmap • Oracle termékekkel történő integráció (pluggable) • SOA Suite • WebCenter • Business Intelligence • Content Management • …
Demó • Cache létrehozás • Olvasás/írás • Lekérdezések • Szerializáció • Események kezelése • Feldolgozás
Linkek • http://wiki.tangosol.com • http://www.oracle.com/technology/products/coherence