Session-replikációs alternatívák WebLogic környezetben. Alerant Informatikai Zrt. 2010. szeptember 27.



Hasonló dokumentumok
webalkalmazások fejlesztése elosztott alapon

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

A Java EE 5 plattform

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Enterprise JavaBeans 1.4 platform (EJB 2.0)

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

JAVA webes alkalmazások

C++ programozási nyelv

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

The Power To Develop. i Develop

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Automatikus infrastruktúra menedzsment és alkalmazástelepítés

S04-2 Elosztott alkalmazások készítése

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Web-fejlesztés NGM_IN002_1

Fejlesztés és üzemeltetés WebLogic platformon

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

JAVA PROGRAMOZÁS 2.ELŐADÁS

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 5. óra. Kocsis Gergely, Supák Zoltán

és az instanceof operátor

A Java Persistence API PersistenceAPI / 3

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

OOP és UML Áttekintés

Multimédiás adatbázisok

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Riverbed Sávszélesség optimalizálás

API tervezése mobil környezetbe. gyakorlat

Grid menedzsment megoldás az ARC köztesrétegben

Programozás alapjai. 10. előadás

extreme Transaction Processing

MMK-Informatikai projekt ellenőr képzés 4

Serialization. RMI működése

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

2. előadás. Radio Frequency IDentification (RFID)

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Szervlet-JSP együttműködés

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

VMware. technológiával. ADATMENTÉS VMware környezetben IBM Tivoli eszközökkel

Samsung GT-S7230 (Wave 723) Exchange ActiveSync beállítása Virtualoso levelezésre

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Szolgáltatás Orientált Architektúra és több felhasználós adatbázis használata OKF keretein belül. Beke Dániel

Már megismert fogalmak áttekintése

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Samsung GT-S7230 (Wave 723) Exchange ActiveSync beállítása Virtualoso levelezésre

Alkalmazás technológiai frissítés migrációs és üzemeltetési tapasztalatok

Programozási nyelvek Java

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Osztott rendszerek, Java EE. Általános bevezető

Rendszerkezelési útmutató

Microsoft SQL Server telepítése

Telepítés, újratelepítés több számítógépre, hálózatos telepítés Kulcs-Bér program

Oracle TTS migrációs technológia használata

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

Alkalmazások teljesítmény problémáinak megszűntetése

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Használati alapú és modell alapú tesztelés kombinálása szolgáltatásorientált architektúrák teszteléséhez az ipari gyakorlatban

Komponens modellek. 3. Előadás (első fele)

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

DSD DSD. Egy országos méretű orvosi adatbázissal kapcsolatos informatikai kihívások. Kovács László Pataki Balázs Pataki Máté MTA SZTAKI DSD

NIIF Központi Elosztott Szolgáltatói Platform

Üzleti kritikus alkalmazások Novell Open Enterprise Serveren

Interfészek. PPT 2007/2008 tavasz.

Tematika. MongoDB koncepció JSON Schemaless logika Replicaset képzés Sharding Aggregate framework

VL IT i n du s t ri al Kommunikációs vázlat

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

ELEKTRONIKUS MUNKABÉRJEGYZÉK MODUL

Hálózati operációs rendszerek II. Novell Netware 5.1 Hálózati nyomtatás

Kérdés Kép Válasz HIBAS Válasz HELYES Válasz HIBAS Válasz HIBAS Kérdés Kép Válasz HIBAS Válasz HELYES Válasz HIBAS Válasz HIBAS Kérdés Kép Válasz

Osztályok. 4. gyakorlat

SC Kérdés. SC Kérdés. SC Kérdés

Programozási nyelvek Java

Webes alkalmazások fejlesztése

Biztonságos mobilalkalmazás-fejlesztés a gyakorlatban. A CryptTalk fejlesztése során alkalmazott módszerek. Dr. Barabás Péter Arenim Technologies

S&T CAD/PLM SuperUser Akadémia 2016

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 5.ELŐADÁS. Sütik és munkamenetek kezelése

Hibrid Cloud az új Oracle Enterprise Manager Cloud Control 13c-vel

A KASPERSKY SECURITY CENTER

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Elnevezési rendszerek. 7. előadás

Smart Pointer koncepciója

MVC desktop alkalmazás esetén. MVC Model-View-Controller. eredete: Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások

Tisztelt Ügyfelünk! Tájékoztató az átállásról

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

Programozási nyelvek Java

Alternatív adatbázisok Gráfadatbázisok

Non-stop hozzáférés az üzleti információkhoz bárhol, bármikor és bármilyen eszközzel

Junior Java Képzés. Tematika

Bevezető. Servlet alapgondolatok

Másolatképzési technikák és azok felhasználási lehetőségei

OOP #14 (referencia-elv)

JNDI - alapok. Java Naming and Directory Interface

Átírás:

Session-replikációs alternatívák WebLogic környezetben Farkas István Alerant Informatikai Zrt. 2010. szeptember 27.

Bevezető Nagyvállalati környezet: növekvő adatmennyiség Összetett infrastruktúrák szintén hozzájárulnak az adatmennyiséghez, pl. SOA Az infrastruktúra teljesítményének utol kell érnie az adatmennyiséget Egyre bonyolultabb követelmények Alkalmazások adatainak biztonságos tárolása egy módszer a HTTP session replikációja hatással van a rendszer teljesítményére körültekintő tervezést igényel 2 2010. szeptember 27.

WebLogic környezet - cluster Load balancer dedikált WebLogic példány, telepített speciális Servlet-tel webszerver, telepített WebLogic proxy plugin-nel hardveres megoldások Terhelés elosztása Hibás szerverek kihagyása Statikus és dinamikus tartalom szétválasztása Sticky session kezelése Cookie-mechanizmus SSL konfigurálható 3 2010. szeptember 27.

A WebLogic HTTP Session-kezelése Állapotkezelési és nyomkövetési sémák (track and store) In-memory (single server not replicated) JDBC based File based In-memory replication (clustered) Cookie based Beállítás: deklaratív módszer WEB-INF/weblogic.xml, session-descriptor J2EE szempontból vendor-specifikus HTTP session cookie első kéréskor a szerver állítja össze; válaszban küldi a kliensnek a kliens a következő kérésekben elküldi a tartalmát egyedi azonosító (session-id) elsődleges és másodlagos szerverek azonosítása 4 2010. szeptember 27.

In-memory (single server) A HTTPSession adatait a kiszolgáló memóriájában tárolja Maximális session-szám korlátozható Természetes korlát a JVM heap mérete korlátok túllépését Java kivétellel jelzi a szerver A munkamenethez élettartam tartozik konfigurációs paraméter a szerver periodikusan felszabadítja a lejárt session-ök erőforrásait a figyelés periódusideje is konfigurálható Hátrány a szerver újraindításakor ill. leállásakor a session adatai elvesznek 5 2010. szeptember 27.

In-memory replication A munkamenet állapotáról másolat készül egy másodlagos szerveren dinamikus kiválasztás alapján memóriában tartva A session állapota tehát 2 helyen található meg az állapotok szinkronizációját a WLS biztosítja Ha az elsődleges szerver leáll a proxy szerver a session cookie alapján a másodlagos szerverhez irányít a másodlagos szerver választ egy új backup szervert a kliens csak a megnövekedett válaszidőt veheti észre Ha minden szervert újraindítunk a session adatai elvesznek (ha ez szempont: külső cache, pl. Coherence) Konfigurációs paraméterek deployment descriptor: replicated, replicated-if-clustered 6 2010. szeptember 27.

Replikációs csoportok WLS lehetőség szerverek csoportosítására használatuk opcionális Minden szerverhez konfigurálható a replikációs csoport, amelyhez tartozik a preferált másodlagos replikációs csoport Kérés érkezésekor a szerver figyelembe veszi a preferenciát magasabb rangú, mint a fizikai szerverhez tartozás igyekszik a preferált csoportban létrehozni a replika-objektumot igyekszik elkerülni az azonos csoportba tartozó szervereket 7 2010. szeptember 27.

JDBC persistence A perzisztenciát adatbázis-tábla biztosítja Előfeltétel: JDBC non-xa datasource létrehozása Adattárolás session adatai bináris formában (BLOB) utolsó hozzáférés ideje Az adatok szinkronizációja költséges művelet Replikációs csoportokat is támogatja Minden szervernek hozzáférése van minden session adataihoz Cache mechanizmus utoljára használt munkamenetek adatai hangolható Újraindítást / leállást túléli 8 2010. szeptember 27.

File-based persistence A session adatai fájlban perzisztálódnak szerver oldalon Követelményei minden clustertagnak írnia és olvasnia kell tudni magas rendelkezésre állás és gyors válaszidő szükséges Gyakorlatban: SAN-ra kötött diszkalrendszer Cache mechanizmus JDBC-hez hasonlóan 9 2010. szeptember 27.

Cookie-based replication A munkamenet adatainak perzisztálása cookie formájában a kliens oldalán történik Kis méretű session esetén Valamennyi kliensnek támogatnia kell a cookie-kat Csak szöveges adatok adhatók a session-höz Biztonsági kérdéseket vet fel A cookie neve konfigurálható 10 2010. szeptember 27.

Terheléselosztás és failover Szoftveres megoldás: proxy plugin A szerverek közti választás round robin módszerrel a plugin a szerverek állapotát folyamatosan figyeli szükség esetén átirányítást végez a backup szerverre 11 2010. szeptember 27.

Külső megoldás használata Coherence*Web Elosztott cache megoldás Lehetőséget biztosít session-megosztásra különböző webalkalmazások között heterogén környezetben konkurens hozzáférés biztosítása (Locking) Önállóan vagy alkalmazás-szerverrel kombinálva támogatja a WebLogic Portal konténert is Számos cache topológiát támogat Lehetőség a munkamenet kezelésére a J2EE szerveren kívül heap terhelése csökkenthető Hozzáférés-szabályozás policy-k segítségével 12 2010. szeptember 27.

Coherence telepítése WebLogic Server 10.3 beépített service provider coherence-web-spi.war library telepítése alkalmazás-oldal: coherence-web.spi felvétele a deployment descriptor-ban WLS v. < 10.3 weblogic.jar és web-alkalmazások instrumentálása A web-modul környezettől függően konfigurálható 13 2010. szeptember 27.

Cluster-tagok izolációja A Coherence*Web modul hatókörét biztosítja az appserver-en belül Application server-scoped cluster nodes az alkalmazás-szerveren egy Coherence cluster csomópont jön létre minden webalkalmazás session-kezelését átveszi a Coherence a coherence.jar-t a system classpath-ra kell felvenni EAR-scoped cluster nodes Az alkalmazás-szerveren alkalmazásonként egy Coherence cluster csomópont jön létre EAR-on belül minden webalkalmazás session-kezelését a Coherence végzi A coherence.jar az EAR classpath-ra települ WAR-scoped cluster nodes minden webalkalmazás számára dedikált Coherence cluster node 14 2010. szeptember 27.

Coherence session-modellek Cél a munkamenet fizikai reprezentációjának tárolása Hagyományos modell a munkamenet állapotát egyetlen entitásban tárolja a (de)szerializáció attribútumonként történik kis méretű session-nél célszerű (<10 KB) ha nincs olyan objektum a session-ben, melyre több különböző attribútum is hivatkozik (többszörös szerializáció elkerülése) 15 2010. szeptember 27.

Coherence session-modellek #2 Monolitikus modell a munkamenet állapota egy entitásban tárolódik (de)szerializációjuk egyszerre, egy lépésben történik 16 2010. szeptember 27.

Coherence session-modellek #3 Split model a tradicionális modell kiterjesztése kisméretű attribútumok tárolása fizikailag önálló entitásban hálózati forgalmat csökkenti nagy méretű objektumok módosítása nem igényli a teljes session frissítését használata javasolt nagy méretű munkamenetek esetén 17 2010. szeptember 27.

Cache topológiák Replicated cache service a cache-ben tárolt adatokat minden cluster-tagra másolja az adatokat szinkronban tartja olvasásra a leggyorsabb hátrány: írás esetén minden tagot szinkronizálni kell! skálázhatósági korlát: a JVM heap-et növelni kell előny: olvasás-intenzív felhasználás esetén 18 2010. szeptember 27. olvasás írás

Cache-topológiák #2 Partitioned cache service nem a teljes adatmennyiség kerül másolásra a cluster-tagokra hasonlít a HTTP state replication-re az adatokat szétteríti a cluster-ben load balancing a szétterítés természetes velejárója egyetlen adat (session) kezeléséért a clusteren belül mindig egyetlen tag felel location transparency nincs kitüntetett szerver, ugyanazt az API-t használja a kliens a kliens számára átlátszó mechanizmus failover a session-adatról replika készül (konfigurálható számú) hiba esetén adatvesztés nélküli átirányítás adatkezelés során a kommunikáció point to point jó (lineáris) skálázhatóság! új tagok bevonása esetén nincs kommunikációs overhead 19 2010. szeptember 27.

Cache-topológiák #3 Partitioned cache service (folyt.) clusteren belül egy adott tag nem feltétlenül kezel adatot ilyenkor csak API-t biztosít pl. appserver JVM terhelés csökkentése kimondottan load balancing komponens nincs egyedi clustering-protokoll van a háttérben olvasás írás 20 2010. szeptember 27.

Cache-topológiák #3 Near cache a partitoned cache megoldást bővíti ki alkalmazás-oldali lokális cache hozzáadása legutoljára / leggyakrabban használt adatok az alkalmazás JVM-jéből áldozunk fel a cache-ben lévő adatok elérésére közel 0 késleltetés worst case partitioned cache elérése olvasás írás 21 2010. szeptember 27.

Szerializálhatósági szabályok Szerializálás: objektum bájtfolyamba írása pl. fájl, socket-kapcsolat Deszerializálás: szerializált bájtfolyamból Java objektum java.io.serializable interfész jelző szerepe van, implementálandó metódusok nincsenek Szerializált bájtfolyam minden adatot tartalmaz a visszaállított objektum konstruktorának hívására nincs szükség Öröklési hierarchia az első nem szerializálható ősosztálynak legyen üres konstruktora egyébként NotSerizalizableException kivétel a deszerializáció az ősosztályokhoz tartozó állapotot is visszaállítja 22 2010. szeptember 27.

Példák Nincs szükség üres konstruktorra (az Object az első ősosztály, neki van) Nincs szükség üres konstruktorra (az ősosztálynak csak default konstruktora van) A MyAncestor osztály rendelkezik paraméterezett konstruktorral üres konstruktort is definiálni kell 23 2010. szeptember 27.

Szerializálhatósági szabályok #2 SerialVersionUID mező a szerializálandó osztály egységes verzió-azonosítója különféle változatok kompatibilitásának megőrzésére Statikus adattagok csak az objektumhoz tartozó állapotok szerializálódnak automatikusan statikus adatok esetén mi gondoskodunk a szerializálásról statikus inicializáló blokk egyedi értékadás (writeobject() felüldefiniálása) Transient adattagok a nem replikálandó adatok kezelésére célszerű használni! Session objektumok minden session-be helyezett objektumnak teljesítenie kell a szerializálhatóság feltételeit 24 2010. szeptember 27.

Szerializálhatóság ellenőrzése Nem elegendő a Serializable interfészt kiterjeszteni A szerializálhatósági feltételek az adattagokra is vonatkoznak! pl. HashMap-be pakolt objektumok Célszerű unit teszteket készíteni fejlesztési időben történő ellenőrzés pl. ByteArrayInputStream-be írás és visszaolvasás ha nincs Java kivétel, rendben vagyunk SessionMonitor interfész az implementálója értesítést kap a session műveleteiről (set, replace, remove) célszerű logot készíteni Teljesítménytesztek 25 2010. szeptember 27.

Session-kezelési jógyakorlatok Használjunk replikációs csoportokat (WLS)! Replikációs hibák keresése: ServerDebugConfig MBean A HTTP session-t csak átmeneti tárolásra használjuk! egyéb esetekben adatbázis vagy külső cache megoldás A session-be csak szerializálható objektumot helyezzünk! Amikor lehet, használjuk a memória-alapú replikációt! Az együtt használt attribútumok egy entitásban legyenek! pl. tétel és mennyiség tulajdonság kerüljön egy MegrendelesVO-ba Nagy méretű VO esetén válasszuk ketté RO és RW attribútumokat tegyük külön VO-ba! pl. megrendelés állapotát jelző attribútumok vs. megrendelés címe Szemléletváltás! 26 2010. szeptember 27.