SlideShare a Scribd company logo
1 of 50
Microservices: Terabytes in
Microseconds
Peter Lawrey
Higher FrequencyTrading Ltd
Per Minborg
Speedment, Inc.
About Per 3
About Peter
Microservices
• Microservices bring together best practices from a variety of areas
• Most likely you are already using some of these best practices
Microservices
• It sounds like marketing hype
• It all sounds pretty familiar
• It just a rebranding of stuff we already do
• There is room for improvement in what we do
• There are some tools, and ideas we could apply to our systems
without changing too much
• Simple component based design
• Asynchronous messaging
• Automated, dynamic deployment of services
• Service private data sets
• Transparent messaging
• Teams can develop independently based on well defined contracts
Microservices
Terabytes in Microseconds Solution
Speed
Data volume
GB TB EB
us
ms
s
min
hour
days
Speedment
Chronicle
Terabytes in Microseconds Solution
Maps the data in a key-value store
Synchronizes SQL Data into an in-
JVM-memory data store
Maps the data in Column key stores
Provides application APIs
Terabytes
1. Synchronization
2. Key Value Store
3. Column Key Stores
4. API
Microservice 3
Microservice 2
Microservice
1. Synchronization
• Synchronizes SQL Data with the in-JVM-memory solution:
• Initially
• Over time
• Periodically
• Reactively
1. Synchronization
Periodically
• Dumps are reloaded
periodically
• All data elements are reloaded
• Data remains unchanged
between reloads
• System restart is just a reload
• MVCC so that several dumps
can be active at the same time
Reactively
• Changed data is captured in the
Database
• Changed data events are pushed into
memory
• Events are grouped in transactions
• Cache updates are persisted
• Data changes all the time
• System restart, replay the missed
events
or
1. Synchronization
*
Periodically Reactively Poll Comparison
Max Data Age Dump period Replication Latency- ms Eviction time
Lookup Performance Consistently Instant Consistently Instant 20% very slow
Consistency Eventually Consistent Eventually Consistent Inconsistent – stale data
Database Cache
Update Load
~ Total Size / Dump ~ Rate of Change ~ Cache size * Eviction
Restart Complete Reload Down time*update rate -
>10% of down time
Heat-up time
1. Synchronization Properties
• Detect changes in a database
• Buffer the changes
• Can replay the changes later on
• Preserve order
• Preserve transactions
• See data as it was persisted
• Detect changes from any source
JVM
Column
Oriented
CQRS
In-JVM-
Memory
1. Synchronization
How is data synchronized?
• Periodic MVCC reload
• Transaction log harvesting
• Event Sourcing and CQRS
2. Key Value Store
Makes it possible to
• Having Maps that can exceed the server’s RAM by up to 40x
• Opening up the path to mammoth JVMs with tens of terabytes
• Data persistence inside JVM provides fast restart
• When you have multiple instances of a service they can share the data with a
single copy in memory
32 bit Operating System (31-bit heap)
Compress Oops in Java 7 (35-bit)
• Using the default of
–XX:+UseCompressedOops
• In a 64-bit JVM, it can use “compressed” memory references
• This allows the heap to be up to 32 GB without the overhead of 64-bit object references. The
Oracle/OpenJDK JVM still uses 64-bit class references by default
• As all object must be 8-byte aligned, the lower 3 bits of the address are always 000 and don’t
need to be stored. This allows the heap to reference 4 billion * 8-bytes or 32 GB
• Uses 32-bit references
Compressed Oops with 8 Byte Alignment
Compress Oops in Java 8 (36 bits)
• Using the default of
–XX:+UseCompressedOops
–XX:ObjectAlignmentInBytes=16
• In a 64-bit JVM, it can use “compressed” memory references
• This allows the heap to be up to 64 GB without the overhead of 64-bit object references. The
Oracle/OpenJDK JVM still uses 64-bit class references by default
• As all object must be 8 or 16-byte aligned, the lower 3 or 4 bits of the address are always
zeros and don’t need to be stored. This allows the heap to reference 4 billion * 16-bytes or 64
GB
• Uses 32-bit references
64-bit References in Java (100+ GB)
• A small but significant overhead on main memory use
• Reduces the efficiency of CPU caches as less objects can fit in
• Can address up to the limit of the free memory. Limited to main memory
• GC pauses become a real concern and can take tens of second or many minutes
• For larger heap sizes, using the G1 collector may be a good choice.
NUMA Regions (~40 bits)
• Large machine are limited in how large a single bank of memory can be. This varies based on
the architecture
• Ivy and Sandy bridge Xeon processors are limited to addressing 40 bits of real memory
• In Haswell and Boradwell this has been lifted to 46-bits
• Each Socket has “local” access to a bank of memory, however to access other bank it may
need to use a bus. This is much slower
• The GC of a JVM can perform very poorly if it doesn’t sit within one NUMA region. Ideally
you want a JVM to use just one NUMA region
NUMA Regions (~40 bits)
Virtual Address Space (48-bit)
Virtual Address Space (48-bit)
Memory Mapped Files (48+ bits)
• Memory mappings are not limited to main memory size
• 64-bit OS support 128TiB to 256TiB virtual memory at once
• For larger data sizes, memory mapping need to be managed and cached manually
• Can be shared between processes
• A library can hide the 48-bit limitation by caching memory mapping
Peta Byte JVMs (50+ bits)
• If you are receiving 1 GB/s down a 10 Gig-E line in two weeks you will have received over 1 PB
• Managing this much data in large servers is more complex than your standard JVM
• Replication is critical. Large complex systems, are more likely to fail and take longer to
recover
• You can have systems which cannot be recovered in the normal way. i.e. Unless you recover
faster than new data is added, you will never catch up
Peta Byte JVMs (50+ bits)
Peta Byte JVMs (50+ bits)
3. Column Key Store
• Column Key Stores are used much like database indexes
• The Column Key Stores can produce data lazily
• Can be mapped onto memory mapped files
3. Column Key Store
• Features over ConcurrentNavigableMap
• Handles null values
• Can handle several values for one key
• Can serialize data off-heap
• Can map onto files
• Can compress its keys
• Contains a bi-directional skip dictionary
• Remains performant for billions and trillions of entries
• Supports transactions
3. Column Key Store
Filesystem
Page cache
User Space Kernel Space
Physical memory
Disk blocks
SSD
Page mapping
Microservice JVM
mapped buffer filesystem pages
memory pages
3. Column Key Store
Filesystem
Page cache
User Space Kernel Space
Physical memory
Disk blocks
SSD
Page mapping
Microservice1 JVM 2
filesystem pages
memory pages
mapped buffer
Microservice1 JVM 1
mapped buffer
3. Column Key Store
• O(1) operations:
• equals, notEquals
• isNull, isNotNull
• in, notIn
• sort
• O(log N) operations
• <, <=, >, >=
• between
• startsWith(String)
• O(N)
• matches(regexp)
3. Column Key Store
0
50
100
150
200
250
300
350
1 10 20 30 40 50 60 70 80 90 100
Big-Ohs
O(1) O(log N) O(N) O(NlogN)
3. Column Key Store
Key-Value
Store
ID
Column Key
Store
User.AGE.greaterThan(42)
AGE
Column Key
Store
NAME
Column Key
Store
greaterThan(42) Keys Values
User
3. Column Key Store - The Stream Pipeline
Key-Value
Store
AGE
Column Key
Store
greaterThan(42) Keys
Values
3. Column Key Store - Parallelism
Key-Value
Store
AGE
Column Key
Store
greaterThan(42)
Parallel
Keys
Parallel
Values
Optional
Parallel
Strategy
4. API
• Provides application APIs
• Java 8 Stream API
• REST API
4. API
• Speedment generates Java code automatically from SQL metadata
• Free from hand coding errors
• Reduces development time
• Improves the application quality
• Reduces maintenance for applications
• Uses standard streams for querying
• Custom code possibilities
4. API Java 8 Stream API
REST API
users.stream()
.filter(AGE.greaterThen(42))
.forEach(someOperation());
https://mysite/user/
?filter=[{"property":”age",
”operator":”gt","value":42}]
4. API Java 8 Stream API
REST API
users.stream()
.filter(AGE.greaterThen(42))
.skip(10)
.limit(100)
.sorted(NAME.comparator())
.forEach(someOperation());
https://mysite/user/
?filter=[{"property":”age",
”operator":”gt","value":42}]
&skip=10
&limit=100
&sort=[{"property":”name", ”direction":”ASC”}]
4. API - Parallelism
• Java 8 Stream API
users.stream()
.parallel()
.filter(AGE.greaterThen(42))
.flatMap(users::findLogins)
.forEach(expensiveOperation());
Demo 1
• 300,000 Users
• Off Heap Data Store and Key-Value map
• Test
• Find all users with id = 42
• Count them
• Add the count to a sum
• Iterate 1,000,000 times
• JVMWarmup and then Benchmark
• Sum will be 1,000,000
• A standard MySQL database will process 2,000TPS on a 4 CPU
laptop like mine
Demo 2
• 1,000,000 Users
• Tests
• ID.equal(42)
• ID.greaterOrEqual(42)
• ID.in(42, 43, 44)
• ID.between(42, 45)
Demo 3
Replication demo
Compare Latencies Using the Speed of Light
During the time a database makes a 1 s query, how
far will the light move?
Database CPU L1 cache
Conclusion : Do not place your data on the moon,
keep it close by using in-JVM-memory technology!
Epic Threshold for Mankind Passed in 2016
Conclusion: Quit drinking coffee
and buy more RAM for your application
server instead!
Microservices Solution
MS1 MS1 MS1 MS2 MS2 MS2 MS3 MS3 MS3
Speedment
Chronicle
Speedment
Chronicle
Speedment
Chronicle
Microservices JVM
• The solution maps Java NavigableMaps to persistent stores (files)
• The views of the maps are available for any JVM that has access to
these files
• Microservice JVMs can be started or restarted very rapidly
• Access to these maps will be gained in millisecond time
• These maps can be shared instantly between several microservice
JVMs
• New microservice instances are added, removed, or restarted very
quickly
If You Only Remember One Thing….
Speed
Data volume
GB TB EB
us
ms
s
min
hour
days
Thank you!
sales@chronicle.software
@ChronicleUG
http://chronicle.software
minborg@speedment.com
@Speedment
www.speedment.com
www.speedment.org

More Related Content

What's hot

Sql server 2016 it just runs faster sql bits 2017 edition
Sql server 2016 it just runs faster   sql bits 2017 editionSql server 2016 it just runs faster   sql bits 2017 edition
Sql server 2016 it just runs faster sql bits 2017 editionBob Ward
 
Gs08 modernize your data platform with sql technologies wash dc
Gs08 modernize your data platform with sql technologies   wash dcGs08 modernize your data platform with sql technologies   wash dc
Gs08 modernize your data platform with sql technologies wash dcBob Ward
 
Brk3288 sql server v.next with support on linux, windows and containers was...
Brk3288 sql server v.next with support on linux, windows and containers   was...Brk3288 sql server v.next with support on linux, windows and containers   was...
Brk3288 sql server v.next with support on linux, windows and containers was...Bob Ward
 
Unique ID generation in distributed systems
Unique ID generation in distributed systemsUnique ID generation in distributed systems
Unique ID generation in distributed systemsDave Gardner
 
Transactions and Concurrency Control Patterns
Transactions and Concurrency Control PatternsTransactions and Concurrency Control Patterns
Transactions and Concurrency Control PatternsVlad Mihalcea
 
Brk2051 sql server on linux and docker
Brk2051 sql server on linux and dockerBrk2051 sql server on linux and docker
Brk2051 sql server on linux and dockerBob Ward
 
Experience sql server on l inux and docker
Experience sql server on l inux and dockerExperience sql server on l inux and docker
Experience sql server on l inux and dockerBob Ward
 
Inside sql server in memory oltp sql sat nyc 2017
Inside sql server in memory oltp sql sat nyc 2017Inside sql server in memory oltp sql sat nyc 2017
Inside sql server in memory oltp sql sat nyc 2017Bob Ward
 
AWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data CommonsAWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data CommonsHannes Mühleisen
 
MongoDB at eBay
MongoDB at eBayMongoDB at eBay
MongoDB at eBayMongoDB
 
NoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learnedNoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learnedLa FeWeb
 
Memcached Code Camp 2009
Memcached Code Camp 2009Memcached Code Camp 2009
Memcached Code Camp 2009NorthScale
 
Melbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBMelbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBYuval Ararat
 
Big data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseBig data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseMartin Toshev
 
MongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL DatabaseMongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL DatabaseGaurav Awasthi
 
Compare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBCompare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBAmar Das
 

What's hot (20)

Sql server 2016 it just runs faster sql bits 2017 edition
Sql server 2016 it just runs faster   sql bits 2017 editionSql server 2016 it just runs faster   sql bits 2017 edition
Sql server 2016 it just runs faster sql bits 2017 edition
 
Gs08 modernize your data platform with sql technologies wash dc
Gs08 modernize your data platform with sql technologies   wash dcGs08 modernize your data platform with sql technologies   wash dc
Gs08 modernize your data platform with sql technologies wash dc
 
Brk3288 sql server v.next with support on linux, windows and containers was...
Brk3288 sql server v.next with support on linux, windows and containers   was...Brk3288 sql server v.next with support on linux, windows and containers   was...
Brk3288 sql server v.next with support on linux, windows and containers was...
 
Unique ID generation in distributed systems
Unique ID generation in distributed systemsUnique ID generation in distributed systems
Unique ID generation in distributed systems
 
Transactions and Concurrency Control Patterns
Transactions and Concurrency Control PatternsTransactions and Concurrency Control Patterns
Transactions and Concurrency Control Patterns
 
Brk2051 sql server on linux and docker
Brk2051 sql server on linux and dockerBrk2051 sql server on linux and docker
Brk2051 sql server on linux and docker
 
Experience sql server on l inux and docker
Experience sql server on l inux and dockerExperience sql server on l inux and docker
Experience sql server on l inux and docker
 
Inside sql server in memory oltp sql sat nyc 2017
Inside sql server in memory oltp sql sat nyc 2017Inside sql server in memory oltp sql sat nyc 2017
Inside sql server in memory oltp sql sat nyc 2017
 
memcached Distributed Cache
memcached Distributed Cachememcached Distributed Cache
memcached Distributed Cache
 
AWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data CommonsAWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data Commons
 
Level DB - Quick Cheat Sheet
Level DB - Quick Cheat SheetLevel DB - Quick Cheat Sheet
Level DB - Quick Cheat Sheet
 
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
 
qcon
qconqcon
qcon
 
MongoDB at eBay
MongoDB at eBayMongoDB at eBay
MongoDB at eBay
 
NoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learnedNoSQL into E-Commerce: lessons learned
NoSQL into E-Commerce: lessons learned
 
Memcached Code Camp 2009
Memcached Code Camp 2009Memcached Code Camp 2009
Memcached Code Camp 2009
 
Melbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBMelbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDB
 
Big data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseBig data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle Database
 
MongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL DatabaseMongoDB - An Agile NoSQL Database
MongoDB - An Agile NoSQL Database
 
Compare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBCompare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDB
 

Viewers also liked

Functional progrmming with scala
Functional progrmming with scalaFunctional progrmming with scala
Functional progrmming with scala오석 한
 
Ambiental Microbiologia
Ambiental MicrobiologiaAmbiental Microbiologia
Ambiental Microbiologiafigempa uce
 
Java one2015 - Work With Hundreds of Hot Terabytes in JVMs
Java one2015 - Work With Hundreds of Hot Terabytes in JVMsJava one2015 - Work With Hundreds of Hot Terabytes in JVMs
Java one2015 - Work With Hundreds of Hot Terabytes in JVMsSpeedment, Inc.
 
บทคัดย่อ
บทคัดย่อบทคัดย่อ
บทคัดย่อNirut Uthatip
 
Geología del subsuelo
Geología del subsueloGeología del subsuelo
Geología del subsuelofigempa uce
 
Legislación aplicada
Legislación aplicadaLegislación aplicada
Legislación aplicadafigempa uce
 
예제로 쉽게 배우는 Log4j 기초 활용법
예제로 쉽게 배우는 Log4j 기초 활용법예제로 쉽게 배우는 Log4j 기초 활용법
예제로 쉽게 배우는 Log4j 기초 활용법오석 한
 
Ambiental Hidraulica
Ambiental HidraulicaAmbiental Hidraulica
Ambiental Hidraulicafigempa uce
 
Netty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/ConnectivityNetty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/ConnectivityC4Media
 
Ambiental Fisica ii
Ambiental Fisica iiAmbiental Fisica ii
Ambiental Fisica iifigempa uce
 
Ambiental Quimica organica
Ambiental Quimica organicaAmbiental Quimica organica
Ambiental Quimica organicafigempa uce
 
Petsil metinvestigacion
Petsil metinvestigacionPetsil metinvestigacion
Petsil metinvestigacionfigempa uce
 
Petsil geologiapetroleo
Petsil geologiapetroleoPetsil geologiapetroleo
Petsil geologiapetroleofigempa uce
 

Viewers also liked (16)

Functional progrmming with scala
Functional progrmming with scalaFunctional progrmming with scala
Functional progrmming with scala
 
Ambiental Microbiologia
Ambiental MicrobiologiaAmbiental Microbiologia
Ambiental Microbiologia
 
Java one2015 - Work With Hundreds of Hot Terabytes in JVMs
Java one2015 - Work With Hundreds of Hot Terabytes in JVMsJava one2015 - Work With Hundreds of Hot Terabytes in JVMs
Java one2015 - Work With Hundreds of Hot Terabytes in JVMs
 
บทคัดย่อ
บทคัดย่อบทคัดย่อ
บทคัดย่อ
 
Geología del subsuelo
Geología del subsueloGeología del subsuelo
Geología del subsuelo
 
Legislación aplicada
Legislación aplicadaLegislación aplicada
Legislación aplicada
 
Smart work
Smart workSmart work
Smart work
 
예제로 쉽게 배우는 Log4j 기초 활용법
예제로 쉽게 배우는 Log4j 기초 활용법예제로 쉽게 배우는 Log4j 기초 활용법
예제로 쉽게 배우는 Log4j 기초 활용법
 
JAVA NIO
JAVA NIOJAVA NIO
JAVA NIO
 
Ambiental Hidraulica
Ambiental HidraulicaAmbiental Hidraulica
Ambiental Hidraulica
 
Netty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/ConnectivityNetty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/Connectivity
 
Ambiental Fisica ii
Ambiental Fisica iiAmbiental Fisica ii
Ambiental Fisica ii
 
Ambiental Quimica organica
Ambiental Quimica organicaAmbiental Quimica organica
Ambiental Quimica organica
 
Petsil metinvestigacion
Petsil metinvestigacionPetsil metinvestigacion
Petsil metinvestigacion
 
Petsil geologiapetroleo
Petsil geologiapetroleoPetsil geologiapetroleo
Petsil geologiapetroleo
 
Petsil dibujo
Petsil dibujoPetsil dibujo
Petsil dibujo
 

Similar to JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]

NYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentNYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentSpeedment, Inc.
 
How does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsDataHow does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsDataacelyc1112009
 
Responding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in JavaResponding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in JavaPeter Lawrey
 
MariaDB ColumnStore
MariaDB ColumnStoreMariaDB ColumnStore
MariaDB ColumnStoreMariaDB plc
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Marco Tusa
 
Work with hundred of hot terabytes in JVMs
Work with hundred of hot terabytes in JVMsWork with hundred of hot terabytes in JVMs
Work with hundred of hot terabytes in JVMsMalin Weiss
 
SQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTPSQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTPTony Rogerson
 
Dissecting Scalable Database Architectures
Dissecting Scalable Database ArchitecturesDissecting Scalable Database Architectures
Dissecting Scalable Database Architectureshypertable
 
Agility and Scalability with MongoDB
Agility and Scalability with MongoDBAgility and Scalability with MongoDB
Agility and Scalability with MongoDBMongoDB
 
7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth7. Key-Value Databases: In Depth
7. Key-Value Databases: In DepthFabio Fumarola
 
4. (mjk) extreme performance 2
4. (mjk) extreme performance 24. (mjk) extreme performance 2
4. (mjk) extreme performance 2Doina Draganescu
 
HBase in Practice
HBase in PracticeHBase in Practice
HBase in Practicelarsgeorge
 
A Closer Look at Apache Kudu
A Closer Look at Apache KuduA Closer Look at Apache Kudu
A Closer Look at Apache KuduAndriy Zabavskyy
 
Cloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation inCloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation inRahulBhole12
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchJoe Alex
 
Building a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache SolrBuilding a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache SolrRahul Jain
 
Alluxio - Scalable Filesystem Metadata Services
Alluxio - Scalable Filesystem Metadata ServicesAlluxio - Scalable Filesystem Metadata Services
Alluxio - Scalable Filesystem Metadata ServicesAlluxio, Inc.
 
C* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag Jambhekar
C* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag JambhekarC* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag Jambhekar
C* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag JambhekarDataStax Academy
 

Similar to JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516] (20)

NYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ SpeedmentNYJavaSIG - Big Data Microservices w/ Speedment
NYJavaSIG - Big Data Microservices w/ Speedment
 
How does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsDataHow does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsData
 
Responding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in JavaResponding rapidly when you have 100+ GB data sets in Java
Responding rapidly when you have 100+ GB data sets in Java
 
MariaDB ColumnStore
MariaDB ColumnStoreMariaDB ColumnStore
MariaDB ColumnStore
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2
 
Work with hundred of hot terabytes in JVMs
Work with hundred of hot terabytes in JVMsWork with hundred of hot terabytes in JVMs
Work with hundred of hot terabytes in JVMs
 
SQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTPSQL Server 2014 In-Memory OLTP
SQL Server 2014 In-Memory OLTP
 
Dissecting Scalable Database Architectures
Dissecting Scalable Database ArchitecturesDissecting Scalable Database Architectures
Dissecting Scalable Database Architectures
 
Agility and Scalability with MongoDB
Agility and Scalability with MongoDBAgility and Scalability with MongoDB
Agility and Scalability with MongoDB
 
7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth7. Key-Value Databases: In Depth
7. Key-Value Databases: In Depth
 
4. (mjk) extreme performance 2
4. (mjk) extreme performance 24. (mjk) extreme performance 2
4. (mjk) extreme performance 2
 
Elasticsearch 5.0
Elasticsearch 5.0Elasticsearch 5.0
Elasticsearch 5.0
 
HBase in Practice
HBase in Practice HBase in Practice
HBase in Practice
 
HBase in Practice
HBase in PracticeHBase in Practice
HBase in Practice
 
A Closer Look at Apache Kudu
A Closer Look at Apache KuduA Closer Look at Apache Kudu
A Closer Look at Apache Kudu
 
Cloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation inCloud computing UNIT 2.1 presentation in
Cloud computing UNIT 2.1 presentation in
 
Managing Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using ElasticsearchManaging Security At 1M Events a Second using Elasticsearch
Managing Security At 1M Events a Second using Elasticsearch
 
Building a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache SolrBuilding a Large Scale SEO/SEM Application with Apache Solr
Building a Large Scale SEO/SEM Application with Apache Solr
 
Alluxio - Scalable Filesystem Metadata Services
Alluxio - Scalable Filesystem Metadata ServicesAlluxio - Scalable Filesystem Metadata Services
Alluxio - Scalable Filesystem Metadata Services
 
C* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag Jambhekar
C* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag JambhekarC* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag Jambhekar
C* Summit 2013: Cassandra at eBay Scale by Feng Qu and Anurag Jambhekar
 

More from Speedment, Inc.

How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseSpeedment, Inc.
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSpeedment, Inc.
 
SenchaCon Roadshow Irvine 2017
SenchaCon Roadshow Irvine 2017SenchaCon Roadshow Irvine 2017
SenchaCon Roadshow Irvine 2017Speedment, Inc.
 
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesSenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesSpeedment, Inc.
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...Speedment, Inc.
 
DZone Java 8 Block Buster: Query Databases Using Streams
DZone Java 8 Block Buster: Query Databases Using StreamsDZone Java 8 Block Buster: Query Databases Using Streams
DZone Java 8 Block Buster: Query Databases Using StreamsSpeedment, Inc.
 
Speed-up Your Big Data Applications with Sencha and Speedment
Speed-up Your Big Data Applications with Sencha and SpeedmentSpeed-up Your Big Data Applications with Sencha and Speedment
Speed-up Your Big Data Applications with Sencha and SpeedmentSpeedment, Inc.
 
Speedment & Sencha at Oracle Open World 2015
Speedment & Sencha at Oracle Open World 2015Speedment & Sencha at Oracle Open World 2015
Speedment & Sencha at Oracle Open World 2015Speedment, Inc.
 
eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015
eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015
eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015Speedment, Inc.
 
Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment, Inc.
 
SAP Open Source meetup/Speedment - Palo Alto 2015
SAP Open Source meetup/Speedment - Palo Alto 2015SAP Open Source meetup/Speedment - Palo Alto 2015
SAP Open Source meetup/Speedment - Palo Alto 2015Speedment, Inc.
 

More from Speedment, Inc. (12)

How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your database
 
SenchaCon Roadshow Irvine 2017
SenchaCon Roadshow Irvine 2017SenchaCon Roadshow Irvine 2017
SenchaCon Roadshow Irvine 2017
 
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesSenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
DZone Java 8 Block Buster: Query Databases Using Streams
DZone Java 8 Block Buster: Query Databases Using StreamsDZone Java 8 Block Buster: Query Databases Using Streams
DZone Java 8 Block Buster: Query Databases Using Streams
 
Speed-up Your Big Data Applications with Sencha and Speedment
Speed-up Your Big Data Applications with Sencha and SpeedmentSpeed-up Your Big Data Applications with Sencha and Speedment
Speed-up Your Big Data Applications with Sencha and Speedment
 
Speedment & Sencha at Oracle Open World 2015
Speedment & Sencha at Oracle Open World 2015Speedment & Sencha at Oracle Open World 2015
Speedment & Sencha at Oracle Open World 2015
 
eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015
eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015
eXtreme Tuesday Club at Pivotal Labs ft. Speemdnet / San Francisco - SEP 2015
 
Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8
 
Java days gbg online
Java days gbg onlineJava days gbg online
Java days gbg online
 
SAP Open Source meetup/Speedment - Palo Alto 2015
SAP Open Source meetup/Speedment - Palo Alto 2015SAP Open Source meetup/Speedment - Palo Alto 2015
SAP Open Source meetup/Speedment - Palo Alto 2015
 

Recently uploaded

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 

Recently uploaded (20)

The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 

JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]

  • 1. Microservices: Terabytes in Microseconds Peter Lawrey Higher FrequencyTrading Ltd Per Minborg Speedment, Inc.
  • 4. Microservices • Microservices bring together best practices from a variety of areas • Most likely you are already using some of these best practices
  • 5. Microservices • It sounds like marketing hype • It all sounds pretty familiar • It just a rebranding of stuff we already do • There is room for improvement in what we do • There are some tools, and ideas we could apply to our systems without changing too much
  • 6. • Simple component based design • Asynchronous messaging • Automated, dynamic deployment of services • Service private data sets • Transparent messaging • Teams can develop independently based on well defined contracts Microservices
  • 7. Terabytes in Microseconds Solution Speed Data volume GB TB EB us ms s min hour days
  • 8. Speedment Chronicle Terabytes in Microseconds Solution Maps the data in a key-value store Synchronizes SQL Data into an in- JVM-memory data store Maps the data in Column key stores Provides application APIs Terabytes 1. Synchronization 2. Key Value Store 3. Column Key Stores 4. API Microservice 3 Microservice 2 Microservice
  • 9. 1. Synchronization • Synchronizes SQL Data with the in-JVM-memory solution: • Initially • Over time • Periodically • Reactively
  • 10. 1. Synchronization Periodically • Dumps are reloaded periodically • All data elements are reloaded • Data remains unchanged between reloads • System restart is just a reload • MVCC so that several dumps can be active at the same time Reactively • Changed data is captured in the Database • Changed data events are pushed into memory • Events are grouped in transactions • Cache updates are persisted • Data changes all the time • System restart, replay the missed events or
  • 11. 1. Synchronization * Periodically Reactively Poll Comparison Max Data Age Dump period Replication Latency- ms Eviction time Lookup Performance Consistently Instant Consistently Instant 20% very slow Consistency Eventually Consistent Eventually Consistent Inconsistent – stale data Database Cache Update Load ~ Total Size / Dump ~ Rate of Change ~ Cache size * Eviction Restart Complete Reload Down time*update rate - >10% of down time Heat-up time
  • 12. 1. Synchronization Properties • Detect changes in a database • Buffer the changes • Can replay the changes later on • Preserve order • Preserve transactions • See data as it was persisted • Detect changes from any source JVM Column Oriented CQRS In-JVM- Memory
  • 13. 1. Synchronization How is data synchronized? • Periodic MVCC reload • Transaction log harvesting • Event Sourcing and CQRS
  • 14. 2. Key Value Store Makes it possible to • Having Maps that can exceed the server’s RAM by up to 40x • Opening up the path to mammoth JVMs with tens of terabytes • Data persistence inside JVM provides fast restart • When you have multiple instances of a service they can share the data with a single copy in memory
  • 15. 32 bit Operating System (31-bit heap)
  • 16. Compress Oops in Java 7 (35-bit) • Using the default of –XX:+UseCompressedOops • In a 64-bit JVM, it can use “compressed” memory references • This allows the heap to be up to 32 GB without the overhead of 64-bit object references. The Oracle/OpenJDK JVM still uses 64-bit class references by default • As all object must be 8-byte aligned, the lower 3 bits of the address are always 000 and don’t need to be stored. This allows the heap to reference 4 billion * 8-bytes or 32 GB • Uses 32-bit references
  • 17. Compressed Oops with 8 Byte Alignment
  • 18. Compress Oops in Java 8 (36 bits) • Using the default of –XX:+UseCompressedOops –XX:ObjectAlignmentInBytes=16 • In a 64-bit JVM, it can use “compressed” memory references • This allows the heap to be up to 64 GB without the overhead of 64-bit object references. The Oracle/OpenJDK JVM still uses 64-bit class references by default • As all object must be 8 or 16-byte aligned, the lower 3 or 4 bits of the address are always zeros and don’t need to be stored. This allows the heap to reference 4 billion * 16-bytes or 64 GB • Uses 32-bit references
  • 19. 64-bit References in Java (100+ GB) • A small but significant overhead on main memory use • Reduces the efficiency of CPU caches as less objects can fit in • Can address up to the limit of the free memory. Limited to main memory • GC pauses become a real concern and can take tens of second or many minutes • For larger heap sizes, using the G1 collector may be a good choice.
  • 20. NUMA Regions (~40 bits) • Large machine are limited in how large a single bank of memory can be. This varies based on the architecture • Ivy and Sandy bridge Xeon processors are limited to addressing 40 bits of real memory • In Haswell and Boradwell this has been lifted to 46-bits • Each Socket has “local” access to a bank of memory, however to access other bank it may need to use a bus. This is much slower • The GC of a JVM can perform very poorly if it doesn’t sit within one NUMA region. Ideally you want a JVM to use just one NUMA region
  • 24. Memory Mapped Files (48+ bits) • Memory mappings are not limited to main memory size • 64-bit OS support 128TiB to 256TiB virtual memory at once • For larger data sizes, memory mapping need to be managed and cached manually • Can be shared between processes • A library can hide the 48-bit limitation by caching memory mapping
  • 25. Peta Byte JVMs (50+ bits) • If you are receiving 1 GB/s down a 10 Gig-E line in two weeks you will have received over 1 PB • Managing this much data in large servers is more complex than your standard JVM • Replication is critical. Large complex systems, are more likely to fail and take longer to recover • You can have systems which cannot be recovered in the normal way. i.e. Unless you recover faster than new data is added, you will never catch up
  • 26. Peta Byte JVMs (50+ bits)
  • 27. Peta Byte JVMs (50+ bits)
  • 28. 3. Column Key Store • Column Key Stores are used much like database indexes • The Column Key Stores can produce data lazily • Can be mapped onto memory mapped files
  • 29. 3. Column Key Store • Features over ConcurrentNavigableMap • Handles null values • Can handle several values for one key • Can serialize data off-heap • Can map onto files • Can compress its keys • Contains a bi-directional skip dictionary • Remains performant for billions and trillions of entries • Supports transactions
  • 30. 3. Column Key Store Filesystem Page cache User Space Kernel Space Physical memory Disk blocks SSD Page mapping Microservice JVM mapped buffer filesystem pages memory pages
  • 31. 3. Column Key Store Filesystem Page cache User Space Kernel Space Physical memory Disk blocks SSD Page mapping Microservice1 JVM 2 filesystem pages memory pages mapped buffer Microservice1 JVM 1 mapped buffer
  • 32. 3. Column Key Store • O(1) operations: • equals, notEquals • isNull, isNotNull • in, notIn • sort • O(log N) operations • <, <=, >, >= • between • startsWith(String) • O(N) • matches(regexp)
  • 33. 3. Column Key Store 0 50 100 150 200 250 300 350 1 10 20 30 40 50 60 70 80 90 100 Big-Ohs O(1) O(log N) O(N) O(NlogN)
  • 34. 3. Column Key Store Key-Value Store ID Column Key Store User.AGE.greaterThan(42) AGE Column Key Store NAME Column Key Store greaterThan(42) Keys Values User
  • 35. 3. Column Key Store - The Stream Pipeline Key-Value Store AGE Column Key Store greaterThan(42) Keys Values
  • 36. 3. Column Key Store - Parallelism Key-Value Store AGE Column Key Store greaterThan(42) Parallel Keys Parallel Values Optional Parallel Strategy
  • 37. 4. API • Provides application APIs • Java 8 Stream API • REST API
  • 38. 4. API • Speedment generates Java code automatically from SQL metadata • Free from hand coding errors • Reduces development time • Improves the application quality • Reduces maintenance for applications • Uses standard streams for querying • Custom code possibilities
  • 39. 4. API Java 8 Stream API REST API users.stream() .filter(AGE.greaterThen(42)) .forEach(someOperation()); https://mysite/user/ ?filter=[{"property":”age", ”operator":”gt","value":42}]
  • 40. 4. API Java 8 Stream API REST API users.stream() .filter(AGE.greaterThen(42)) .skip(10) .limit(100) .sorted(NAME.comparator()) .forEach(someOperation()); https://mysite/user/ ?filter=[{"property":”age", ”operator":”gt","value":42}] &skip=10 &limit=100 &sort=[{"property":”name", ”direction":”ASC”}]
  • 41. 4. API - Parallelism • Java 8 Stream API users.stream() .parallel() .filter(AGE.greaterThen(42)) .flatMap(users::findLogins) .forEach(expensiveOperation());
  • 42. Demo 1 • 300,000 Users • Off Heap Data Store and Key-Value map • Test • Find all users with id = 42 • Count them • Add the count to a sum • Iterate 1,000,000 times • JVMWarmup and then Benchmark • Sum will be 1,000,000 • A standard MySQL database will process 2,000TPS on a 4 CPU laptop like mine
  • 43. Demo 2 • 1,000,000 Users • Tests • ID.equal(42) • ID.greaterOrEqual(42) • ID.in(42, 43, 44) • ID.between(42, 45)
  • 45. Compare Latencies Using the Speed of Light During the time a database makes a 1 s query, how far will the light move? Database CPU L1 cache Conclusion : Do not place your data on the moon, keep it close by using in-JVM-memory technology!
  • 46. Epic Threshold for Mankind Passed in 2016 Conclusion: Quit drinking coffee and buy more RAM for your application server instead!
  • 47. Microservices Solution MS1 MS1 MS1 MS2 MS2 MS2 MS3 MS3 MS3 Speedment Chronicle Speedment Chronicle Speedment Chronicle
  • 48. Microservices JVM • The solution maps Java NavigableMaps to persistent stores (files) • The views of the maps are available for any JVM that has access to these files • Microservice JVMs can be started or restarted very rapidly • Access to these maps will be gained in millisecond time • These maps can be shared instantly between several microservice JVMs • New microservice instances are added, removed, or restarted very quickly
  • 49. If You Only Remember One Thing…. Speed Data volume GB TB EB us ms s min hour days

Editor's Notes

  1. I live in Palo Alto in California..