SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Quintor 
The future of webscale 
RENE BOERE 
CTO 
JOHAN 
TILLEMA 
CEO 
CHRIS QUACH 
JAVA 
SPECIALIST
Quintor 
Concurrent 
connections
Quintor 
Load balancing 
Requests 
verspreiden over 
meerdere 
servers/nodes/data 
centers. 
Op basis van: 
- Round Robin 
- Geo locatie 
- Least connection 
HAProxy 
Nginx 
Amazon 
ELB 
HAProxy beschikt 
over de meeste 
mogelijkheden (SSL 
support in 
onwikkeling) 
Nginx erg geschikt 
voor high load en 
biedt SSL support 
Amazon ELB, goede 
keuze bij gebruik van 
AWS
Quintor 
Caching 
Ontlasten van 
backend systemen 
en versnellen van 
applicatie. 
Is een goede 
aanvulling op 
nagenoeg elke 
applicatie 
Memcached 
Redis 
Memcached erg 
eenvoudig in gebruik en 
beheer. 
Redis bevat meer 
datatypes en complexe 
methodes die het 
bruikbaar maken voor 
meedere doeleinden. 
Top 10 lijsten, 
publish/subscribe etc. 
Vb: 
Twitter bewaart 
timelines alleen in 
Redis
Quintor 
Content delivery network 
Verlagen van 
netwerk latency bij 
het serveren van 
Statische content 
(HTML/CSS/foto's/ 
video's) 
Veel CDN 
aanbieders 
beschikbaar: 
Amazon 
Cloudfront 
Microsoft 
Azure 
Gebruikt servers 
verspreid over 
groot gebied zodat 
klanten met hoge 
availability en 
snelheid diensten 
kunnen gebruiken.
Quintor 
Huge amounts of data 
to persist
Quintor 
No SQL 
Gedistribueerde 
database gebaseerd op 
HDFS. Gebaseerd op 
BIGTABLE. 
Gedistribueerde 
database over 
gelijkwaardige nodes. 
Meerwaarde bij 
miljarden records en 
minimaal 5 nodes. 
CQL3 interface heeft veel 
overeenkomsten met 
“SQL” 
JDBC driver beschikbaar 
Zeer geschikt voor 
datasets die veel 
wijzigen. Volledig in 
memory. 
In-memory database 
met disk persistence 
HBase 
Cassandra 
Redis
Quintor
Quintor 
Sharding 
Horizontaal partitioneren 
van database, 
verschillende rijen in 
verschillende databases 
met zelfde schema. 
Noodzakelijk wanneer 
een database node niet 
meer toereikend is. 
WebscaleSQL/Gizzard 
Custom sharding 
Backend met sharding 
features bv MongoDB, 
Hbase. 
WebscaleSQL is 
gebasseerd op MySQL. 
Sharding vindt vaak 
plaats op basis van 
geografische locatie. 
Bestaande relationeel 
model blijft bruikbaar.
Command Query Responsibility 
Segregation 
Quintor 
(CQRS)
Quintor 
Traditional 3-tier
Quintor 
CQRS
Quintor 
Event Sourcing 
a way of persisting your application's state 
by storing the history that determines the 
current state of your application
Quintor Event Sourcing
CQRS/ES en Web-scale 
Quintor
Quintor 
Hadoop basics
Quintor 
HDFS 
• Namenode: HDFS master. Bewaart complete directory tree van het file system. Bepaalt waar 
blokken data worden opgeslagen en gerepliceerd. Slaat zelf geen inhoudelijke data op (alleen 
verwijzingen) 
• Datanode: Slaat data op in het hadoop filesystem. Wordt gestuurd door de namenode welke 
data hij op moet slaan. 
• Clients: vragen aan de Namenode locatie van de data, en brengen/halen de data naar/van de 
Datanode
Quintor 
HDFS
Quintor 
YARN / Map Reduce Architecture 
• Resource manager: Het proces dat de resources in het cluster verdeeld over de diverse nodes 
• Node Manager: Het proces dat de status van de node monitored (CPU, memory, disk, 
netwerk) en dit communiceert met de resource manager 
• Application Master: Per map reduce job is er 1 Application master die het werk verdeeld over 
de diverse nodes, en dit afstemt met de resource manager
Quintor 
YARN Architecture
Quintor 
HBase 
• HMaster: 
– Coördinatie 
– monitoring van het cluster 
– verdeelt regions 
– load balacing en failover 
• HRegionServer 
– opslag van region 
– distributie van regions 
– verwerken van lees-/schrijfacties 
– communicatie met clients
Quintor 
HBase
Quintor 
Processing data
Quintor 
MapReduce 
Map 
Verdeel de data in kleinere brokken 
Shuffle 
Verzamel de brokken op basis van 
sleutel 
Reduce 
Filter de relevante data
Quintor 
public class Map extends MapReduceBase 
implements Mapper<LongWritable, Text, Text, IntWritable> { 
private final static IntWritable one = new IntWritable(1); 
private Text word = new Text(); 
public void map(LongWritable key, Text value, 
OutputCollector<Text, IntWritable> output, Reporter reporter) 
throws IOException { 
String line = value.toString(); 
StringTokenizer tokenizer = new StringTokenizer(line); 
while (tokenizer.hasMoreTokens()) { 
word.set(tokenizer.nextToken()); 
output.collect(word, one); 
} 
} 
}
Quintor 
public class Reduce extends MapReduceBase 
implements Reducer<Text, IntWritable, Text, IntWritable> { 
public void reduce(Text key, Iterator<IntWritable> values, 
OutputCollector<Text, IntWritable> output, Reporter reporter) 
throws IOException { 
int sum = 0; 
while (values.hasNext()) { 
sum += values.next().get(); 
} 
output.collect(key, new IntWritable(sum)); 
} 
}
Quintor 
Cluster architecture
Quintor 
Big Willem
Quintor 
Ambari 
• Provisioning van Hadoop Services op kale linux machines 
• Prerequisited 
– FQDN 
– DNS en reverse DNS 
– NTP 
– SSL public key van Ambari in authorized_keys
Quintor
Quintor 
Summercamp hadoop cluster 
Hadoop1 
DRPC Server 
Ganglia Monitor 
Ganglia Server 
HCat 
Nagios Server 
NameNode 
Nimbus 
Oozie Client 
Storm REST API Server 
Storm UI Server 
Tez Client 
YARN Client 
ZooKeeper Server 
Hadoop10 
App Timeline Server 
Ganglia Monitor 
HDFS Client 
History Server 
ResourceManager 
SNameNode 
ZooKeeper Server 
Hadoop2 
DataNode 
Falcon Client 
Ganglia Monitor 
HBase Client 
RegionServer 
HCat 
HDFS Client 
Hive Client 
MapReduce2 Client 
NodeManager 
Oozie Client 
Pig 
Sqoop 
Supervisor 
Tez Client 
YARN Client 
ZooKeeper Client 
HadoopXX 
DataNode (HDFS) 
Ganglia Monitor 
RegionServer (HBase) 
NodeManager (Map reduce) 
Supervisor (Storm) 
Ambari
Quintor 
Parallel processing
Quintor 
Storm 
• Nimbus: daemon voor de master node (vergelijkbaar met de application manager in 
MapReduce) 
• Supervisor: daemon voor de worker node. Luistert naar taken dat is toegewezen aan zijn 
machine door de master node (nimbus). De supervisor start processen om deze taken uit te 
voeren. 
• Zookeeper: bewaart de state van de communicatie tussen de nimbus en de supervisor(s), 
zodat deze alleen de processen uitvoeren, en dus stateless blijven
Quintor 
Storm
Quintor 
CODE
Quintor 
Demo

Weitere ähnliche Inhalte

Ähnlich wie The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniek
tjercus
 
Open Source ECM Alternatief Alfresco
Open Source ECM Alternatief AlfrescoOpen Source ECM Alternatief Alfresco
Open Source ECM Alternatief Alfresco
Edwin van der Geest
 

Ähnlich wie The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach (20)

Ontsluiting van remote offices en mobiele locaties: 5 bouwstenen uitgelegd
Ontsluiting van remote offices en mobiele locaties: 5 bouwstenen uitgelegdOntsluiting van remote offices en mobiele locaties: 5 bouwstenen uitgelegd
Ontsluiting van remote offices en mobiele locaties: 5 bouwstenen uitgelegd
 
Presentatie Webscale op DrupalJam 2014
Presentatie Webscale op DrupalJam 2014 Presentatie Webscale op DrupalJam 2014
Presentatie Webscale op DrupalJam 2014
 
Hosting van Drupal gemeentesites @ DrupalJam 2014
Hosting van Drupal gemeentesites @ DrupalJam 2014Hosting van Drupal gemeentesites @ DrupalJam 2014
Hosting van Drupal gemeentesites @ DrupalJam 2014
 
Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniek
 
Oracle 12c Launch Event 03 Web logic 12.1.2 new features Edwin Biemond
Oracle 12c Launch Event 03 Web logic 12.1.2 new features Edwin BiemondOracle 12c Launch Event 03 Web logic 12.1.2 new features Edwin Biemond
Oracle 12c Launch Event 03 Web logic 12.1.2 new features Edwin Biemond
 
ARM Your Green Cloud for Big Data (Cy7 ARM Server Introduction BeNeLux Q4 2014)
ARM Your Green Cloud for Big Data (Cy7 ARM Server Introduction BeNeLux Q4 2014)ARM Your Green Cloud for Big Data (Cy7 ARM Server Introduction BeNeLux Q4 2014)
ARM Your Green Cloud for Big Data (Cy7 ARM Server Introduction BeNeLux Q4 2014)
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows Azure
 
2010 iska - tim m - nosql iska
2010   iska - tim m - nosql iska2010   iska - tim m - nosql iska
2010 iska - tim m - nosql iska
 
BA Netapp Event - Always there IT Infrastructuur
BA Netapp Event - Always there IT InfrastructuurBA Netapp Event - Always there IT Infrastructuur
BA Netapp Event - Always there IT Infrastructuur
 
Cloud computing lunchsessie (v2)
Cloud computing lunchsessie (v2)Cloud computing lunchsessie (v2)
Cloud computing lunchsessie (v2)
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Open Source ECM Alternatief Alfresco
Open Source ECM Alternatief AlfrescoOpen Source ECM Alternatief Alfresco
Open Source ECM Alternatief Alfresco
 
How do you move a supercomputer?
How do you move a supercomputer?How do you move a supercomputer?
How do you move a supercomputer?
 
Cloudmultipitch
CloudmultipitchCloudmultipitch
Cloudmultipitch
 
Webinar: Het nieuwe back-uppen: simpel, snel en schaalbaar
Webinar: Het nieuwe back-uppen: simpel, snel en schaalbaarWebinar: Het nieuwe back-uppen: simpel, snel en schaalbaar
Webinar: Het nieuwe back-uppen: simpel, snel en schaalbaar
 
Netwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demoNetwerkfunctievirtualisatie: proof-of-concept en demo
Netwerkfunctievirtualisatie: proof-of-concept en demo
 
Pres ssc-ict-2014-april hypervisors
Pres ssc-ict-2014-april hypervisorsPres ssc-ict-2014-april hypervisors
Pres ssc-ict-2014-april hypervisors
 
Dutch NEXT on Tour Keynote and Technical Deck
Dutch NEXT on Tour Keynote and Technical DeckDutch NEXT on Tour Keynote and Technical Deck
Dutch NEXT on Tour Keynote and Technical Deck
 
Cloud computing overzicht
Cloud computing overzichtCloud computing overzicht
Cloud computing overzicht
 
Ditp backupserver
Ditp backupserverDitp backupserver
Ditp backupserver
 

Mehr von NLJUG

Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
NLJUG
 

Mehr von NLJUG (20)

Speedy perception trumps speedy reception–smart asynchronous interactions - L...
Speedy perception trumps speedy reception–smart asynchronous interactions - L...Speedy perception trumps speedy reception–smart asynchronous interactions - L...
Speedy perception trumps speedy reception–smart asynchronous interactions - L...
 
Decoding the airspace above you with Java and $7 hardware - Bert Jan Schrijver
Decoding the airspace above you with Java and $7 hardware - Bert Jan SchrijverDecoding the airspace above you with Java and $7 hardware - Bert Jan Schrijver
Decoding the airspace above you with Java and $7 hardware - Bert Jan Schrijver
 
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
Using Docker to Develop, Test and Run Maven Projects - Wouter DanesUsing Docker to Develop, Test and Run Maven Projects - Wouter Danes
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
 
Kill the mutants and test your tests - Roy van Rijn
Kill the mutants and test your tests - Roy van RijnKill the mutants and test your tests - Roy van Rijn
Kill the mutants and test your tests - Roy van Rijn
 
Real-time user interfaces - sosm gewoon makkelijker - Allard Buijze
Real-time user interfaces - sosm gewoon makkelijker - Allard BuijzeReal-time user interfaces - sosm gewoon makkelijker - Allard Buijze
Real-time user interfaces - sosm gewoon makkelijker - Allard Buijze
 
The end of traditional enterprise IT - ING's journey to the next generation I...
The end of traditional enterprise IT - ING's journey to the next generation I...The end of traditional enterprise IT - ING's journey to the next generation I...
The end of traditional enterprise IT - ING's journey to the next generation I...
 
Performance van Java 8 en verder - Jeroen Borgers
Performance van Java 8 en verder - Jeroen BorgersPerformance van Java 8 en verder - Jeroen Borgers
Performance van Java 8 en verder - Jeroen Borgers
 
Introduction to Reactive with Play and Akka - Markus Jura
Introduction to Reactive with Play and Akka - Markus JuraIntroduction to Reactive with Play and Akka - Markus Jura
Introduction to Reactive with Play and Akka - Markus Jura
 
Web-scale op basis van Hadoop en Akka Reactive Streams - Johan Tillema, Rene ...
Web-scale op basis van Hadoop en Akka Reactive Streams - Johan Tillema, Rene ...Web-scale op basis van Hadoop en Akka Reactive Streams - Johan Tillema, Rene ...
Web-scale op basis van Hadoop en Akka Reactive Streams - Johan Tillema, Rene ...
 
Workshop angular dart presentatie - Atos
Workshop angular dart presentatie - AtosWorkshop angular dart presentatie - Atos
Workshop angular dart presentatie - Atos
 
Workshop spring boot presentatie - Atos
Workshop spring boot presentatie - AtosWorkshop spring boot presentatie - Atos
Workshop spring boot presentatie - Atos
 
Cultivating the jenkins job jungle with groovy - Patrick van Dissel
Cultivating the jenkins job jungle with groovy - Patrick van DisselCultivating the jenkins job jungle with groovy - Patrick van Dissel
Cultivating the jenkins job jungle with groovy - Patrick van Dissel
 
Rethink your architecture - Marten Deinum
Rethink your architecture - Marten DeinumRethink your architecture - Marten Deinum
Rethink your architecture - Marten Deinum
 
Evolutionary Algorithms: the key to solving complex Java puzzles! - Bas knopper
Evolutionary Algorithms: the key to solving complex Java puzzles! - Bas knopperEvolutionary Algorithms: the key to solving complex Java puzzles! - Bas knopper
Evolutionary Algorithms: the key to solving complex Java puzzles! - Bas knopper
 
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
 
Apache Wicket: 10 jaar en verder - Martijn Dashorst
Apache Wicket: 10 jaar en verder - Martijn DashorstApache Wicket: 10 jaar en verder - Martijn Dashorst
Apache Wicket: 10 jaar en verder - Martijn Dashorst
 
Opening - Bert Ertman
Opening - Bert ErtmanOpening - Bert Ertman
Opening - Bert Ertman
 
Returning the right results - Jettro Coenradie
Returning the right results - Jettro CoenradieReturning the right results - Jettro Coenradie
Returning the right results - Jettro Coenradie
 
Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn
Reactive programming met Java 8 en Java EE 7 - Martijn BlankestijnReactive programming met Java 8 en Java EE 7 - Martijn Blankestijn
Reactive programming met Java 8 en Java EE 7 - Martijn Blankestijn
 
Event-sourced architectures with Akka - Sander Mak
Event-sourced architectures with Akka - Sander MakEvent-sourced architectures with Akka - Sander Mak
Event-sourced architectures with Akka - Sander Mak
 

The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach

  • 1. Quintor The future of webscale RENE BOERE CTO JOHAN TILLEMA CEO CHRIS QUACH JAVA SPECIALIST
  • 3. Quintor Load balancing Requests verspreiden over meerdere servers/nodes/data centers. Op basis van: - Round Robin - Geo locatie - Least connection HAProxy Nginx Amazon ELB HAProxy beschikt over de meeste mogelijkheden (SSL support in onwikkeling) Nginx erg geschikt voor high load en biedt SSL support Amazon ELB, goede keuze bij gebruik van AWS
  • 4. Quintor Caching Ontlasten van backend systemen en versnellen van applicatie. Is een goede aanvulling op nagenoeg elke applicatie Memcached Redis Memcached erg eenvoudig in gebruik en beheer. Redis bevat meer datatypes en complexe methodes die het bruikbaar maken voor meedere doeleinden. Top 10 lijsten, publish/subscribe etc. Vb: Twitter bewaart timelines alleen in Redis
  • 5. Quintor Content delivery network Verlagen van netwerk latency bij het serveren van Statische content (HTML/CSS/foto's/ video's) Veel CDN aanbieders beschikbaar: Amazon Cloudfront Microsoft Azure Gebruikt servers verspreid over groot gebied zodat klanten met hoge availability en snelheid diensten kunnen gebruiken.
  • 6. Quintor Huge amounts of data to persist
  • 7. Quintor No SQL Gedistribueerde database gebaseerd op HDFS. Gebaseerd op BIGTABLE. Gedistribueerde database over gelijkwaardige nodes. Meerwaarde bij miljarden records en minimaal 5 nodes. CQL3 interface heeft veel overeenkomsten met “SQL” JDBC driver beschikbaar Zeer geschikt voor datasets die veel wijzigen. Volledig in memory. In-memory database met disk persistence HBase Cassandra Redis
  • 9. Quintor Sharding Horizontaal partitioneren van database, verschillende rijen in verschillende databases met zelfde schema. Noodzakelijk wanneer een database node niet meer toereikend is. WebscaleSQL/Gizzard Custom sharding Backend met sharding features bv MongoDB, Hbase. WebscaleSQL is gebasseerd op MySQL. Sharding vindt vaak plaats op basis van geografische locatie. Bestaande relationeel model blijft bruikbaar.
  • 10. Command Query Responsibility Segregation Quintor (CQRS)
  • 13. Quintor Event Sourcing a way of persisting your application's state by storing the history that determines the current state of your application
  • 17. Quintor HDFS • Namenode: HDFS master. Bewaart complete directory tree van het file system. Bepaalt waar blokken data worden opgeslagen en gerepliceerd. Slaat zelf geen inhoudelijke data op (alleen verwijzingen) • Datanode: Slaat data op in het hadoop filesystem. Wordt gestuurd door de namenode welke data hij op moet slaan. • Clients: vragen aan de Namenode locatie van de data, en brengen/halen de data naar/van de Datanode
  • 19. Quintor YARN / Map Reduce Architecture • Resource manager: Het proces dat de resources in het cluster verdeeld over de diverse nodes • Node Manager: Het proces dat de status van de node monitored (CPU, memory, disk, netwerk) en dit communiceert met de resource manager • Application Master: Per map reduce job is er 1 Application master die het werk verdeeld over de diverse nodes, en dit afstemt met de resource manager
  • 21. Quintor HBase • HMaster: – Coördinatie – monitoring van het cluster – verdeelt regions – load balacing en failover • HRegionServer – opslag van region – distributie van regions – verwerken van lees-/schrijfacties – communicatie met clients
  • 24. Quintor MapReduce Map Verdeel de data in kleinere brokken Shuffle Verzamel de brokken op basis van sleutel Reduce Filter de relevante data
  • 25. Quintor public class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } }
  • 26. Quintor public class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } }
  • 29. Quintor Ambari • Provisioning van Hadoop Services op kale linux machines • Prerequisited – FQDN – DNS en reverse DNS – NTP – SSL public key van Ambari in authorized_keys
  • 31. Quintor Summercamp hadoop cluster Hadoop1 DRPC Server Ganglia Monitor Ganglia Server HCat Nagios Server NameNode Nimbus Oozie Client Storm REST API Server Storm UI Server Tez Client YARN Client ZooKeeper Server Hadoop10 App Timeline Server Ganglia Monitor HDFS Client History Server ResourceManager SNameNode ZooKeeper Server Hadoop2 DataNode Falcon Client Ganglia Monitor HBase Client RegionServer HCat HDFS Client Hive Client MapReduce2 Client NodeManager Oozie Client Pig Sqoop Supervisor Tez Client YARN Client ZooKeeper Client HadoopXX DataNode (HDFS) Ganglia Monitor RegionServer (HBase) NodeManager (Map reduce) Supervisor (Storm) Ambari
  • 33. Quintor Storm • Nimbus: daemon voor de master node (vergelijkbaar met de application manager in MapReduce) • Supervisor: daemon voor de worker node. Luistert naar taken dat is toegewezen aan zijn machine door de master node (nimbus). De supervisor start processen om deze taken uit te voeren. • Zookeeper: bewaart de state van de communicatie tussen de nimbus en de supervisor(s), zodat deze alleen de processen uitvoeren, en dus stateless blijven

Hinweis der Redaktion

  1. Bij toename van aantal request willen we de load verdelen er van uitgaande dat je applicatie stateless is en ook schaalbaar is. Verschillende opties, Bv AWS ELB (elastic load balancer), Nginx (engine-x) en HAProxy. Als je host in AWS dan is ELB een voor de hand liggende keuze. Algorithm Options HAProxy has the most options in this arena, support Round-Robin, Least Connection, Weighted and more. Nginx supports Round-Robin and Least connected (active connections) en ip-hashed . AWS ELB only supports Round-Robin. - See more at: http://mervine.net/comparing-load-balancing#sthash.JrFuLKnC.dpuf Monitoring voor HAProxy en Nginx: Scout
  2. Goede toevoeging voor elke webapplicatie. Als we writes acties meerdere keren willen lezen is het verstandig deze gegevens te cachen. Memcached is een goed voorbeeld een eenvoudige cahce mechanisme (verwijzing presentatie Aschwin) waamee je een roundtrip en daarmee belasting op backend eenvoudig kunt verminderen (nog maar 10%). Redis is nog iets geavaceerder waarmee het ook mogelijk wordt om iets complexere structuren te cachen waamee ook latest comments en tweet timelines volledig en eenvoudig uit cache te achterhalen zijn.
  3. Na sharding komen de NoSQL oplossing als praten over grote hoeveelheden gegevens dan is sharding op termijn ook geen haalbare oplossing meer en betere BigData oplossingen zoals Hadoop en Google BigTable zijn er goede oplossingen beschikbaar. Bijvoorbeedl HBase een database gebasseerd op het BiGTable principe en goed bruikbaar wordt bij erg grote datasets denk aan honderden of biljoenen records. HBase Automatic sharding van tables in regions (automatische split en re-distrubution) Hadoop/HDFS integration standaard Java client API Thrift/REST api Wanneer toepasbaar: Is goed toepasbaar bij veel data “Big Data”, Dus bij honderden miljoenen of biljoenen records. Bij een paar duizend/miljoen rijnen dan is RDBMS waarschijnlijk een beter keuze. Accumulo is ook nog een BigTable clone met cell based security afkomstig vanuit NSA Cassandra is ook geavanceerde gedistribueerde database over vergelijkbare nodes waarvan elke node de coordinatie voor zijn rekening kan nemen. De interface zal veel mensen herkenbaar zijn. Namelijk “SQL like” op joins na welliswaar.
  4. Availability - Je data is ten alle tijden beschikbaar en hier mag niet van afgeweken worden Partition tolerance - Je data blijft (oneindig) groeien en hier moet je mee om kunnen gaan Consistency - Iedereen ziet ten alle tijde dezelfde data, eventualy consistent is not an option
  5. Op het moment dat de hoeveel gegevens van je RDBM niet meer op een node te hosting valt (niet meer te schalen) of te kostbaar is het mogelijkheid om de relationeel model op de delen in kleinere delen “Shards”. Zie voorbeeld Twitter en het gebruik van Gizzard. Sharding vindt ook plaats maar dan onderdeel van BigData oplossing zoals Hbase, MangoDB etc…
  6. CQRS is een eenvoudig pattern: scheiden van verantwoordelijkheden in een deel dat wijzigingen doorvoert (het Command-gedeelte) en een deel dat data ophaalt (het Query-gedeelte) “achieve scalability, manage complexity, and manage changing business rules”
  7. Optionele slide.
  8. In veel systemen is er een duidelijk verschil tussen het aantal reads en writes. Toch behandelen we deze mechanismen vaak op grotendeels dezelfde manier; met een business-laag, een ORM, etc. Daarnaast zijn databases meestal geoptimalizeerd voor het wijzigen van de gegevens (3NF). CQRS stelt dat deze 2 kanten van een system verschillend zijn; en waarom deze dan niet optimalizeren voor hun taak. CQRS schrijft niet voor hoe deze 2 kanten geïmplementeerd moeten worden. dit kan met één database, maar b.v. verschillende data-access implementaties of, zoals in dit voorbeeld, met b.v. 2 verschillende databases; waarbij het database-schema gelijk kan zijn, maar ook verschillend zo zijn er veel meer mogelijkheden om beide kanten te optimalizeren voor hun rol in het system
  9. Event Sourcing = de historie van de state van een applicatie opslaan, waarmee de huidige state bepaalt kan worden Voorbeeld: zonder ES: totaal beschikbare aantal van artikelen, b.v. een boek, opslaan en wijzigen bij inkoop en verkoop. met ES: alle events, dus iedere inkoop- en verkoop-actie, opslaan; beschikbare aantal bepalen door al deze events ‘af te spelen’. Elke actie op het systeem (event) heeft context. Als een wijziging is doorgevoerd in een traditioneel systeem, is deze context vaak verdwenen. Bij ES is deze context altijd beschikbaar.
  10. Met ES worden alle wijzigingen als een command uitgevoerd. De commands resulteren in events. Alle events worden opgeslagen. De events kunnen worden gebruikt om de state van de applicatie te bepalen. De events worden ook afgehandeld door event-adapters. Deze adapters werken de data-stores bij aan de query-kant. De adapters kunnen een relationele database bijwerken, met een schema dat is geoptimaliseerd voor het lezen van data. Maar de adapters kunnen ook de resultaten klaarzetten zoals deze door de service-interface worden opgeleverd; b.v. kant-en-klare HTML-fragmenten en JSON-documenten.
  11. Met CQRS en event sourcing is het mogelijk om bestaande legacy-systemen te ontlasten en de overall performance te verbeteren.
  12. Word count Meerdere MapReduce processen achtereenvolgens
  13. Word count Meerdere MapReduce processen achtereenvolgens
  14. Word count Meerdere MapReduce processen achtereenvolgens