So you think you can scale? Oracle Coherence i praksis OUGN vårseminar, april 2010, Øyvind Brusevold
Innhold • Hva er Coherence? • Hvor brukes Coherence? – Clustered memory – webSessions – Level2-cache – Distributed computing • Caching typer – Replikert – Distribuert – Near • Hvor passer det i arkitekturen?
Utfordringen Coherence
Oracle Coherence • ” Coherence provides replicated and distributed (partitioned) data management and caching services on top of a reliable, highly scalable peer-to-peer clustering protocol” • “Coherence has no single points of failure” • … eller “verdens dyreste HashMap” (from Purdy himself)
I kode import com.tangosol.net.CacheFactory; import com.tangosol.net.*; NamedCache cache = CacheFactory.getNamedCache(”bouvet.mycache”); Object obj = cache.get(”mykey”);... // Gjør interessante ting med obj cache.put(”mykey”, obj);
Cache topologier • Lokal • Replikert • Distribuert ( partisjonert) • Near – Kombinerer det beste fra lokal og distribuert • Coherence*Web
Coherence konfigurasjon … bouvet* near-largeback … near-largeback default-near distributed-largeback …
Coherence i arkitekturen Session Application JVM 1 Cache JVM 2 Session Application JVM 1 Coherence Cache JVM 2 Coherence Cache
Near cache
Nasjonale prøver • Gjennomføring av nasjonale prøver i skoleverket • 60’ elever pr. trinn. • 60’ – 100’ brukere pr uke. • Topp: ca 183’ brukere på en uke – (inkl. eksempelprøver) • Intensivt både på lesing og skriving • Samarbeid mellom Inspera og Bouvet
Inspera • Inspera Content Server • Lang historikk med Coherence • Enkel arkitektur i forhold til caching • Caching bygd inn i applikasjonen • Facade, Factory
Utfordringer • Dynamiske forespørsler – Standard web-caching er vanskelig • Minimere database-tilgang – Database-tilgang skalerer ikke særlig bra • Hotspots i applikasjonen – Tilgangskontroll • Load balancing
Løsninger • Caching av innhold – Må caches i jvm grunnet tilgangskontroll • Caching av privilegier • For øvrig: cache alt som kan caches! • Hotspots: Lokalt og Replikert • Cache besvarelser! – Near cache for elevers besvarelser. – Lagres til DB ved innlevering. • Load-balancing: – Coherence*Web og HAProxy
Coherence*Web • Eget forhåndskonfigurert cluster for session management • Kan brukes med de fleste Servlet Containere • Et servletfilter som legger session-objektet i cache. • Modifiserer web.xml og jsp’er
Arkitektur Hardware load-balancer Apache Web-server HAProxy LB JVM1: OC4J JVM2: Coherence JVM1: OC4J JVM2: Coherence JVM1: OC4J JVM2: Coherence... Coherence*Web Coherence
Nye utfordringer! • Vi trenger mer CPU! – Ok. Bare legg til flere app-servere • Med identisk konfig så legges de automatisk til clusteret • Vi trenger mer minne! – Ok. Bare legg til flere Coherence-servere. • Legges også automatisk til clusteret. • Forutsatt at ram er tilgjengelig. • Distribuert vs. replikert cache.
Advanced stuff • Indekser • Map/reduce • Write-behind • L2 cache (hibernate, toplink etc) • Partitioning
Coherence utgaver • Standard • Enterprise – Overvåking, indeksering, write-behind • Grid – Separate clusters
Silver bullet? • Ingen silver bullet i skalering og clustering • Coherence er det nærmeste jeg har kommet!
Links • Produkt – • Wiki – • HAProxy: – • Nasjonale Prøver – nasjonale-prover-2009/ nasjonale-prover-2009/