Prestanda, skalbarhet och tillgänglighet Torbjörn Stavenek
Agenda Teori Funktionell nedbrytning Tillgänglighet Exempel från bwin Om bwin Games Sammanfattning Frågor
Teori: CAP CAP Consistency, Availability, Partition tolerance Prof Eric Brewer, ca år 2000 Endast 2 av 3! Stora distribuerade system implicerar P
Teori: CAP och ACID ACID Atomic, Consistent, Isolated, Durable ACID och internettjänster CAP C givet Klient Klient Klient Skriv Applikation CA(p) Läs Applikation Applikation C(a)P
Teori: CAP och BASE BASE - Basically Available, Soft state, Eventually consistent (c)ap Alternativ till ACID Eventual Consistency, exempel: Asynkron DB-replikering Asynkron processning via meddelandeköer Klient Skriv Applikation Klient Läs Applikation
Funktionell nedbrytning
Funktionell nedbrytning
Tillgänglighet - tider Google Apps NYSE Kostnad Tillgänglighet
Systemöversikt bwin
Case: Tillgänglighet Tibco Pokerserver Spelarna ska ej påverkas Operatörerna ska få data snabbt Gamehistory Mål: CA(p) Verklighet: C(ap) Snabbt kluster Få meddelanden i kö Snabb failover SAN Snabbt Tibco-kluster Aktiv Tibco Långsamt kluster Passiv Tibco SAN Många meddelanden Långsam failover Aktiv/Aktiv vs Aktiv/Passiv Långsamt Tibco-kluster Aktiv Tibco Passiv Tibco SAN
Case: Tillgänglighet GameHistory GameHistory affärskritiskt! GameServer 3.Synkront API-anrop (igår) Problem med direktkoppling mot GameServer 4. Asynkront via kö (idag) Lösare koppling TXN GameHistory Problem med kö s Lä Ökad komplexiteten 5. Synkront API-anrop (framtid) Operatörskö GameHistory standalone java-app Rapportering Optimerad för skrivning Operatörer Inga prestandaproblem Problem: Tillgänglighet Idag (nr 2): ca 500 anrop/sek
Case: Generic History 1/3 Bakgrund Gammal lösning med DB Mycket data - underhåll! DB generellt optimerade för läsning Krav Skrivning Snabb Hög throughput Extremt skalbar Extremt tillgänglig affärskrav! Läsning - inte lika viktigt! OBS funktionell nedbrytning för läsning/skrivning!
Case: Generic History 2/3 Lösning Separerad skrivning/läsning Java-appar med Jetty Filbaserad Kompakt format Skriver immutables GH domänagnostisk HS domänspecifik Aktiv/Aktiv
Case: Generic History 3/3 Skrivning Snabb Extremt skalbar och tillgänglig - godtyckligt antal GH-instanser Skalbarhet genom partitionering cap Läsning Hanterar dubletter (dvs C från skrivning) CaP Tillgänglighet skrivning Round-robin LB Synkron skrivning ända ner till disk Ingen kö framför GH Ytterligare SPOF Förlänger critical path
Case: Transaktionssystemet, TXN 1/3 Synkrona anrop från GameServer JBoss, MySQL Olika konton
Case: Transaktionssystemet, TXN 2/3 Prestandaproblem Serialiseringsbugg MySQL i/o Tillgänglighet hos operatör GameServer Seriellt! 20% operatörskonton TXN MySQL i/o! Konto hos operatör Permanent Account 900 Extern koppling! Temporary Account 100
Case: Transaktionssystemet, TXN 3/3 8 Jboss-noder LB round-robin Max (simulering): ca 2000 tx/sek Produktion idag: ca 120 tx/sek GameServer Ej skalbart pga DB! Lastbalanserare Lastbalanserare Mål: CA(p) Verklighet: C(ap) Databas Op-konton Viss skalning! TXN TXN... Flaskhals! Aktiv Backup TXN
Case: Prestanda databaser 1/2 Evolution Orsak cpu/io/minne/... Prestanda! Applikation App App App App App App Master Slave 1 Slave 2
Case: Prestanda databaser 2/2 Separera applikationer! (bryt ut tabeller) Mer replikering Tillbaka på ruta 1... App App App Master Master Master App Master App Slave Master
Case: Tillgänglighet databaser MySQL saknar failover-lösning! MySQL NDB Clustered Storage Engine Minnesbaserad Icke-standard SQL CAP? C(a)P! LinuxHA Applikation +: Transparent för applikationer +: Enkel lösning LinuxHA Router - : ~30 sek failover - : ibland konstigt state (start/stop) CAP C(a)P! Aktiv LinuxHA-host Passiv LinuxHA-host
Case : Tillgänglighet infrastruktur Allt på nätverksnivå är dubblerat Dubbelt antal U för nätverksutrustning vs servrar Separat verktyg för att hålla reda på kablaget! Obs! Inte bwin s serverhall!
Sammanfattning CAP, ACID, BASE Funktionell nedbrytning Fokusera HA på kritiska delar av systemet Antag att fel kommer att inträffa Enkelhet Minimera anropskedjor Använda kända mönster Minns: CAP!
Om bwin Games Online Gaming; Poker, Casino Börsnoterat i Wien (även Sportsbetting) 303 miljoner EUR Q1-Q3 2008 (bwin Group) 400 medarbetare i Stockholm B2B och B2C 30 B2B-kunder (tex Betsson, Paf) 13 miljoner registrerade spelare 50 000 samtidiga spelare 13 miljoner pokerhänder per dygn 90 000 turneringar per dygn 100.000 insättningar per dygn
Frågor