SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
| 1Log kao osnova distribuiranih sustava .
Kapsch – O kompaniji
| 2Log kao osnova distribuiranih sustava .
Što je log? (1)
„Činjenica” je nepromjenjivi podatak o nekom događaju koji se dogodio u
nekom trenutku
Primjeri:
• MoneyDeposited
• timestamp = 201401T140102
| 3Log kao osnova distribuiranih sustava .
• timestamp = 201401T140102
• accountId = 1341
• amount = 45.5
• UserAddressChanged
• timestamp = 201401T140112
• userId = 7009
• address = „Vukovarska 13, 10000 Zagreb”
• AccountBlocked
• …
Što je log? (2)
Log je način pohrane podataka
• samo dodavanje činjenica - (Create, Read, Update, Delete)
• činjenice su vremenski poredane
• sekvencijalno čitanje - od starijeg prema novijem zapisu
• svaka činjenica ima svoj indeks u logu
| 4Log kao osnova distribuiranih sustava .
Log i stanje sustava
Indeks
u logu
Činjenica Stanje sustava
1 AccountOpened
• accountId=701
• Account ID 701, balance = 0
Indeks neke činjenice u logu trenutak u vremenu stanja tog sustava !!!
| 5Log kao osnova distribuiranih sustava .
• accountId=701
2 MoneyDeposited
• accountId = 701
• amount = 45.5
• Account ID 701, balance = 45.5
3 AccountOpened
• accountId=702
• Account ID 701, balance = 45.5
• Account ID 702, balance = 0
4 MoneyWithdrawn
• accountId=701
• amount=5
• Account ID 701, balance = 40.5
• Account ID 702, balance = 0
Proizvođač činjenica
public class AccountManager {
private AccountDao accountDao;
private EventLogger eventLogger;
@Transactional
| 6Log kao osnova distribuiranih sustava .
@Transactional
public void depositMoney(long accountId, float amount) {
Account account = accountDao.findById(accountId);
float newBalance = account.getBalance() + amount;
account.setBalance(newBalance);
eventLogger.logEvent( new MoneyDeposited(accountId, amount) );
}
}
Što log nudi? (1)
• Univerzalan način integracije sustava
• „message bus” ?
• „event-driven” SOA?
| 7Log kao osnova distribuiranih sustava .
Što log nudi? (2)
• Zaštita opterećenja potrošača
• svaki potrošač konzumira svojom brzinom
• Replikacija node-ova unutar potrošačkih clustera
• nodeovi potrošačkih clustera mogu replicirati stanje preko loga
• nije potreban poseban mehanizam replikacije
| 8Log kao osnova distribuiranih sustava .
• nije potreban poseban mehanizam replikacije
• Jedinstveni „izvor istine” sustava
• referentna vrijednost neke činjenice je u logu
• svaka greška među činjenicama se ispravlja samo na tom jednom
mjestu (nova kompenzirajuća činjenica), a propagira do svih potrošača
Što log nudi? (3)
• Bootstrapiranje novih potrošača
• novi servisi (ili novi nodeovi u servis clusteru) konzumiraju log od
početnog indeksa (0)
• nije potreban poseban mehanizam za inicijalni import podataka
| 9Log kao osnova distribuiranih sustava .
• Restoriranje privremenih padova potrošača
• privremeno srušeni servisi (ili nodeovi u njihovom clusteru) nakon
oporavka konzumiraju log od zadnjeg validnog indeksa u prošlosti
Količina podataka u logu
• Log zapisa obično ima 1-2 reda veličine više od zapisa stanja
• Idealno: podaci se nikad ne brišu
• Realno: podaci se dugo drže
• Hard diskovi:
• jeftini
• sekvencijalno čitanje (upravo to i treba)
| 10Log kao osnova distribuiranih sustava .
• sekvencijalno čitanje (upravo to i treba)
Kafka (1) – Uvod
• nastao u LinkedIn-u
• hibrid baze i message brokera (kontrast sa ActiveMQ/RabbitMQ-om)
• model:
• broker
• topic
• partitition
• poredak zapisa
| 11Log kao osnova distribuiranih sustava .
• poredak zapisa
samo u particiji
• potrošači „pull”-aju
zapise
• potrošači sami
pamte „offset”
zadnje poruke
Kafka (2) - Features
• ne degradira sa količinom zapisa, kao i brojem potrošača
• horizontalno skalabilan
• veliki throughput (nije napravljen za minimalnu latenciju)
• podržava velike backlog-ove (tjedni, mjeseci…)
• replikacija (v0.8)
• relativno low-level u usporedbi sa drugim message brokerima/ESB-ovima
| 12Log kao osnova distribuiranih sustava .
Datomic baza - Uvod
• Clojure! Rich Hickey! F*** yeah!
• baza nepromjenjivih činjenica u obliku „entity-attribute-value-time” (EAVT)
| 13Log kao osnova distribuiranih sustava .
• log svih činjenica je dio public API-a
• stanje baze za bilo koji trenutak u prošlosti (ne pohranjuje snapshot-ove, već
perzistentne data strukture - poput Git-a)
Datomic baza (2) - pisanje
| 14Log kao osnova distribuiranih sustava .
Datomic baza (3) - čitanje
| 15Log kao osnova distribuiranih sustava .
CQRS/Event-sourcing (1)
• command i query dio aplikacije razdvojeni
(Command-Query-Responsibility-Separation)
• command (write) dio
• brine o atomičnosti procesiranja akcije koja nešto mijenja
(npr. ne smije se skinuti više novaca nego što ima na bankovnom računu)
| 16Log kao osnova distribuiranih sustava .
(npr. ne smije se skinuti više novaca nego što ima na bankovnom računu)
• često je dovoljan samo dohvat cjelokupnih entiteta po ID-u (key-value
baza, in-memory?)
• query (read) dio
• brine o različitim načinima prikaza podataka
(npr. kako najlakše JOIN-ati ovaj podatak sa nekim drugim radi prikaza na
toj web stranici)
• potreban je dohvat preko bogatog query API-a (npr. SQL)
CQRS/event-sourcing (2)
• svaka izvršena komanda logira event
• log evenata služi za
• bootstrap in-memory modela
„command” dijela
• real-time opskrbljivanje
query/RDBMS dijela
| 17Log kao osnova distribuiranih sustava .
query/RDBMS dijela
• Axon framework
Hvala!
| 18Log kao osnova distribuiranih sustava .
Hvala!

Más contenido relacionado

Destacado

Destacado (20)

JavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan KrešićJavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan Krešić
 
JavaCro'14 - Take Agile adoption to the next level with Integration Competenc...
JavaCro'14 - Take Agile adoption to the next level with Integration Competenc...JavaCro'14 - Take Agile adoption to the next level with Integration Competenc...
JavaCro'14 - Take Agile adoption to the next level with Integration Competenc...
 
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen ČikaraJavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
 
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
 
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško VukmanovićJavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
 
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
JavaCro'14 - Securing web applications with Spring Security 3 – Fernando Redo...
 
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor SauerJavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
 
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
 
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan RagužJavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
 
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
 
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
 
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails ...
 
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija KranjecJavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
 
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan IvanovićJavaCro'14 - Vaadin scalability myth – Gordan Ivanović
JavaCro'14 - Vaadin scalability myth – Gordan Ivanović
 
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
 
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
 
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
JavaCro'14 - Developing Google Chromecast applications on Android – Branimir ...
 
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter PilgrimJavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
 
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir DžaferovićJavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
 
JavaCro'14 - Sustainability of business performance and best practices – Zlat...
JavaCro'14 - Sustainability of business performance and best practices – Zlat...JavaCro'14 - Sustainability of business performance and best practices – Zlat...
JavaCro'14 - Sustainability of business performance and best practices – Zlat...
 

Similar a JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko

Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseKristijan Duvnjak
 
Data WareHose
Data WareHoseData WareHose
Data WareHoseKruno Ris
 
ITshowoff Zagreb: Skalabilna web rjesenja
ITshowoff Zagreb: Skalabilna web rjesenjaITshowoff Zagreb: Skalabilna web rjesenja
ITshowoff Zagreb: Skalabilna web rjesenjaDinko Korunic
 
Real-Time Streaming: Apache Spark Streaming i Apache Storm
Real-Time Streaming: Apache Spark Streaming i Apache StormReal-Time Streaming: Apache Spark Streaming i Apache Storm
Real-Time Streaming: Apache Spark Streaming i Apache StormDavorin Vukelic
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXIvan Kaselj
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXAndrej Ko?i?
 
Db security vaba information age 2010 v6.ppt [compatibility m
Db security vaba information age 2010 v6.ppt [compatibility mDb security vaba information age 2010 v6.ppt [compatibility m
Db security vaba information age 2010 v6.ppt [compatibility mOracle Hrvatska
 
Osb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility mOsb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility mOracle Hrvatska
 
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudAnaliza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudTomislav Lulic
 
Db security vaba information age 2010 v5.ppt [compatibility m
Db security vaba information age 2010 v5.ppt [compatibility mDb security vaba information age 2010 v5.ppt [compatibility m
Db security vaba information age 2010 v5.ppt [compatibility mOracle Hrvatska
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Denis Kranjčec
 
Analiza logova u digitalnoj forenzici
Analiza logova u digitalnoj forenziciAnaliza logova u digitalnoj forenzici
Analiza logova u digitalnoj forenziciDamir Delija
 
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)IT Showoff
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. Stipe Predanic
 
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365Tomislav Lulic
 
[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOSStipe Predanic
 

Similar a JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko (20)

Auditing of user activity through NoSQL database
Auditing of user activity through NoSQL databaseAuditing of user activity through NoSQL database
Auditing of user activity through NoSQL database
 
Data WareHose
Data WareHoseData WareHose
Data WareHose
 
ITshowoff Zagreb: Skalabilna web rjesenja
ITshowoff Zagreb: Skalabilna web rjesenjaITshowoff Zagreb: Skalabilna web rjesenja
ITshowoff Zagreb: Skalabilna web rjesenja
 
ITshowoff-Dinko
ITshowoff-DinkoITshowoff-Dinko
ITshowoff-Dinko
 
Real-Time Streaming: Apache Spark Streaming i Apache Storm
Real-Time Streaming: Apache Spark Streaming i Apache StormReal-Time Streaming: Apache Spark Streaming i Apache Storm
Real-Time Streaming: Apache Spark Streaming i Apache Storm
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
 
Db security vaba information age 2010 v6.ppt [compatibility m
Db security vaba information age 2010 v6.ppt [compatibility mDb security vaba information age 2010 v6.ppt [compatibility m
Db security vaba information age 2010 v6.ppt [compatibility m
 
Osb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility mOsb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility m
 
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudAnaliza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
 
Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat
Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir MuratJavantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat
Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat
 
Uvod u MoReq2010
Uvod u MoReq2010Uvod u MoReq2010
Uvod u MoReq2010
 
Db security vaba information age 2010 v5.ppt [compatibility m
Db security vaba information age 2010 v5.ppt [compatibility mDb security vaba information age 2010 v5.ppt [compatibility m
Db security vaba information age 2010 v5.ppt [compatibility m
 
JavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad PečanacJavaCro'15 - Microservice architecture - Nenad Pečanac
JavaCro'15 - Microservice architecture - Nenad Pečanac
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?
 
Analiza logova u digitalnoj forenzici
Analiza logova u digitalnoj forenziciAnaliza logova u digitalnoj forenzici
Analiza logova u digitalnoj forenzici
 
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)Dinko Korunić - Skalabilna web rješenja (IT Showoff)
Dinko Korunić - Skalabilna web rješenja (IT Showoff)
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
 
[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS
 

Más de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Más de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 

JavaCro'14 - Log as basis for distributed systems – Vjeran Marčinko

  • 1. | 1Log kao osnova distribuiranih sustava .
  • 2. Kapsch – O kompaniji | 2Log kao osnova distribuiranih sustava .
  • 3. Što je log? (1) „Činjenica” je nepromjenjivi podatak o nekom događaju koji se dogodio u nekom trenutku Primjeri: • MoneyDeposited • timestamp = 201401T140102 | 3Log kao osnova distribuiranih sustava . • timestamp = 201401T140102 • accountId = 1341 • amount = 45.5 • UserAddressChanged • timestamp = 201401T140112 • userId = 7009 • address = „Vukovarska 13, 10000 Zagreb” • AccountBlocked • …
  • 4. Što je log? (2) Log je način pohrane podataka • samo dodavanje činjenica - (Create, Read, Update, Delete) • činjenice su vremenski poredane • sekvencijalno čitanje - od starijeg prema novijem zapisu • svaka činjenica ima svoj indeks u logu | 4Log kao osnova distribuiranih sustava .
  • 5. Log i stanje sustava Indeks u logu Činjenica Stanje sustava 1 AccountOpened • accountId=701 • Account ID 701, balance = 0 Indeks neke činjenice u logu trenutak u vremenu stanja tog sustava !!! | 5Log kao osnova distribuiranih sustava . • accountId=701 2 MoneyDeposited • accountId = 701 • amount = 45.5 • Account ID 701, balance = 45.5 3 AccountOpened • accountId=702 • Account ID 701, balance = 45.5 • Account ID 702, balance = 0 4 MoneyWithdrawn • accountId=701 • amount=5 • Account ID 701, balance = 40.5 • Account ID 702, balance = 0
  • 6. Proizvođač činjenica public class AccountManager { private AccountDao accountDao; private EventLogger eventLogger; @Transactional | 6Log kao osnova distribuiranih sustava . @Transactional public void depositMoney(long accountId, float amount) { Account account = accountDao.findById(accountId); float newBalance = account.getBalance() + amount; account.setBalance(newBalance); eventLogger.logEvent( new MoneyDeposited(accountId, amount) ); } }
  • 7. Što log nudi? (1) • Univerzalan način integracije sustava • „message bus” ? • „event-driven” SOA? | 7Log kao osnova distribuiranih sustava .
  • 8. Što log nudi? (2) • Zaštita opterećenja potrošača • svaki potrošač konzumira svojom brzinom • Replikacija node-ova unutar potrošačkih clustera • nodeovi potrošačkih clustera mogu replicirati stanje preko loga • nije potreban poseban mehanizam replikacije | 8Log kao osnova distribuiranih sustava . • nije potreban poseban mehanizam replikacije • Jedinstveni „izvor istine” sustava • referentna vrijednost neke činjenice je u logu • svaka greška među činjenicama se ispravlja samo na tom jednom mjestu (nova kompenzirajuća činjenica), a propagira do svih potrošača
  • 9. Što log nudi? (3) • Bootstrapiranje novih potrošača • novi servisi (ili novi nodeovi u servis clusteru) konzumiraju log od početnog indeksa (0) • nije potreban poseban mehanizam za inicijalni import podataka | 9Log kao osnova distribuiranih sustava . • Restoriranje privremenih padova potrošača • privremeno srušeni servisi (ili nodeovi u njihovom clusteru) nakon oporavka konzumiraju log od zadnjeg validnog indeksa u prošlosti
  • 10. Količina podataka u logu • Log zapisa obično ima 1-2 reda veličine više od zapisa stanja • Idealno: podaci se nikad ne brišu • Realno: podaci se dugo drže • Hard diskovi: • jeftini • sekvencijalno čitanje (upravo to i treba) | 10Log kao osnova distribuiranih sustava . • sekvencijalno čitanje (upravo to i treba)
  • 11. Kafka (1) – Uvod • nastao u LinkedIn-u • hibrid baze i message brokera (kontrast sa ActiveMQ/RabbitMQ-om) • model: • broker • topic • partitition • poredak zapisa | 11Log kao osnova distribuiranih sustava . • poredak zapisa samo u particiji • potrošači „pull”-aju zapise • potrošači sami pamte „offset” zadnje poruke
  • 12. Kafka (2) - Features • ne degradira sa količinom zapisa, kao i brojem potrošača • horizontalno skalabilan • veliki throughput (nije napravljen za minimalnu latenciju) • podržava velike backlog-ove (tjedni, mjeseci…) • replikacija (v0.8) • relativno low-level u usporedbi sa drugim message brokerima/ESB-ovima | 12Log kao osnova distribuiranih sustava .
  • 13. Datomic baza - Uvod • Clojure! Rich Hickey! F*** yeah! • baza nepromjenjivih činjenica u obliku „entity-attribute-value-time” (EAVT) | 13Log kao osnova distribuiranih sustava . • log svih činjenica je dio public API-a • stanje baze za bilo koji trenutak u prošlosti (ne pohranjuje snapshot-ove, već perzistentne data strukture - poput Git-a)
  • 14. Datomic baza (2) - pisanje | 14Log kao osnova distribuiranih sustava .
  • 15. Datomic baza (3) - čitanje | 15Log kao osnova distribuiranih sustava .
  • 16. CQRS/Event-sourcing (1) • command i query dio aplikacije razdvojeni (Command-Query-Responsibility-Separation) • command (write) dio • brine o atomičnosti procesiranja akcije koja nešto mijenja (npr. ne smije se skinuti više novaca nego što ima na bankovnom računu) | 16Log kao osnova distribuiranih sustava . (npr. ne smije se skinuti više novaca nego što ima na bankovnom računu) • često je dovoljan samo dohvat cjelokupnih entiteta po ID-u (key-value baza, in-memory?) • query (read) dio • brine o različitim načinima prikaza podataka (npr. kako najlakše JOIN-ati ovaj podatak sa nekim drugim radi prikaza na toj web stranici) • potreban je dohvat preko bogatog query API-a (npr. SQL)
  • 17. CQRS/event-sourcing (2) • svaka izvršena komanda logira event • log evenata služi za • bootstrap in-memory modela „command” dijela • real-time opskrbljivanje query/RDBMS dijela | 17Log kao osnova distribuiranih sustava . query/RDBMS dijela • Axon framework
  • 18. Hvala! | 18Log kao osnova distribuiranih sustava . Hvala!