SlideShare une entreprise Scribd logo
1  sur  79
Télécharger pour lire hors ligne
@PeterVeentjer#DV13-{session hashtag}
Distributed Systems Using
Hazelcast
Peter Veentjer
@PeterVeentjer#DV13-{session hashtag}
• Working for Hazelcast	

• Senior developer	

• Solution architect	

• Author of ‘Pragmatic Guide to Hazelcast 3'	

• 13 years Java experience	

• Big love	

• Concurrency control	

• Distributed computing
Whoami
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
What is Hazelcast?
@PeterVeentjer#DV13-{session hashtag}
What is Hazelcast?
• Leading Open Source Java In Memory Data/Compute Grid	

• Main goal is to simplify development of:	

• Scalable systems	

• Highly available systems
@PeterVeentjer#DV13-{session hashtag}
Why Hazelcast?
• 2.5 MByte JAR	

• no other dependencies!	

• no need to install software!	

• Its a library, not an application framework	

• Scale at the application level	

• Apache 2 License	

• Free to use	

• no limitations
@PeterVeentjer#DV13-{session hashtag}
Distributed Data-structures
• IAtomicLong	

• IdGenerator	

• Lock/Condition	

• CountDownLatch	

• Semaphore	

• Queue	

• Map	

• MultiMap	

• Set	

• List	

• Topic	

• Executor	

• TransactionalMap/Q/S…	

• Write your own!
@PeterVeentjer#DV13-{session hashtag}
So what can I do with it?
@PeterVeentjer#DV13-{session hashtag}
Scale up
@PeterVeentjer#DV13-{session hashtag}
Scale Out
@PeterVeentjer#DV13-{session hashtag}
High Availability
@PeterVeentjer#DV13-{session hashtag}
Raspberry Pi Cluster
@PeterVeentjer#DV13-{session hashtag}
When?
• Messaging Solution	

• Event processing	

• Clustered Scheduling	

• Job Processing	

• Cluster management	

• HTTP session clustering	

• Caching
@PeterVeentjer#DV13-{session hashtag}
Which companies
• Financials	

• JP Morgan, Morgan Stanley, HSBC, Deutsche Bank	

• Telco’s	

• AT&T, Ericsson	

• Gaming	

• Ubisoft/Blue Byte	

• E-Commerce	

• Apple, eBay
@PeterVeentjer#DV13-{session hashtag}
Which Open Source Projects
• WSO2 Carbon	

• Mule ESB	

• Vert.x	

• Apache Camel	

• Apache Shiro	

• OrientDB	

• Alfresco 	

• Karaf
@PeterVeentjer#DV13-{session hashtag}
NO SQL FAMILY
Hazelcast
Coherence
Infinispan
Gigaspaces
Datagrids KeyValue Stores Document DB’s Column DB’s
Mongo
MarkLogic
CassandraRedis
CouchDB
HBaseRiak
Voldimort
Graph 	

DB’s
Neo4J
@PeterVeentjer#DV13-{session hashtag}
How Often
• In October 2013	

• 3M startups	

• 48K unique
@PeterVeentjer#DV13-{session hashtag}
Where is the code!
@PeterVeentjer#DV13-{session hashtag}
HazelcastInstance	
  hz	
  =	
  Hazelcast.newHazelcastInstance();
Creating Hazelcast Cluster
@PeterVeentjer#DV13-{session hashtag}
<hazelcast>	
  
	
  	
  	
  	
  <network>…</network>	
  
	
  	
  	
  	
  <map	
  name=“m”>…</map>	
  
	
  	
  	
  	
  <queue	
  name=“q”>…</queue>	
  
	
  	
  	
  	
  <…	
  
</hazelcast>
XML Configuration
@PeterVeentjer#DV13-{session hashtag}
Config	
  config	
  =	
  new	
  Config();	
  
…	
  make	
  config	
  modifications	
  
HazelcastInstance	
  hz	
  =	
  Hazelcast.newHazelcastInstance(config);
Programmatic Configuration
Demo
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
Map<String,String>	
  products	
  =	
  new	
  HashMap();	
  
map.put("1","IPhone");
Map
@PeterVeentjer#DV13-{session hashtag}
Map<String,String>	
  products	
  =	
  new	
  ConcurrentHashMap();	
  
map.put("1","IPhone");
Map
@PeterVeentjer#DV13-{session hashtag}
HazelcastInstance	
  hz	
  =	
  Hazelcast.newHazelcastInstance();	
  
Map<String,String>	
  products	
  =	
  hz.getMap("products");	
  
cities.put("1","IPhone");	
  
Map
Demo
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
!
<map	
  name="products">	
  
	
  	
  	
  <time-­‐to-­‐live-­‐seconds>4</time-­‐to-­‐live-­‐seconds>	
  
	
  	
  	
  <indexes>	
  
	
  	
  	
  	
  	
  	
  	
  <index>name</index>	
  
	
  	
  	
  </indexes>	
  
	
  	
  	
  <..>	
  
</map>
Map Configuration
@PeterVeentjer#DV13-{session hashtag}
Map Scalability and High Availability
271 Partitions
partitionid = hash(key) % partitioncount
…
@PeterVeentjer#DV13-{session hashtag}
Map Scalability and High Availability
Member 1
@PeterVeentjer#DV13-{session hashtag}
Map Scalability and High Availability
Member 1
Member 2
Member 3
@PeterVeentjer#DV13-{session hashtag}
Map Scalability and High Availability
Member 1
Member 2
Member 3
@PeterVeentjer#DV13-{session hashtag}
Map Scalability and High Availability
Member 1
Member 2
Member 3
@PeterVeentjer#DV13-{session hashtag}
Map Scalability and High Availability
Member 1
Member 2
Demo
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
Map Persistence
• Data Connection	

• MapLoader	

• MapStore	

!
• Write through	

• Write behind
@PeterVeentjer#DV13-{session hashtag}
Multimap
• Collection as value	

• Serialization Overhead	

• Lost update
Demo
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
BlockingQueue	
  queue	
  =	
  new	
  LinkedBlockingQueue();	
  
queue.offer("1");	
  
Object	
  item	
  =	
  queue.take();	
  
Queue
@PeterVeentjer#DV13-{session hashtag}
!
HazelcastInstance	
  hz	
  =	
  Hazelcast.newHazelcastInstance();	
  
BlockingQueue	
  queue	
  =	
  hz.getQueue("queue");	
  
queue.offer("1");	
  
Object	
  item	
  =	
  queue.take();
Queue
Demo
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
ITopic	
  topic	
  =	
  hz.getTopic("topic");	
  	
  	
  	
  	
  
//publishing	
  
topic.publish(msg);	
  	
  	
  
!
//subscribing	
  	
  	
  	
  
topic.addMessageListener(new	
  TopicSubscriber());	
  
!
public	
  class	
  TopicSubscriber	
  implements	
  MessageListener<String>	
  
{	
  
	
  	
  	
  	
  public	
  void	
  onMessage(Message<String>	
  m)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  System.out.println(m.getMessageObject());	
  
	
  	
  	
  	
  }	
  
}
Topic
@PeterVeentjer#DV13-{session hashtag}
Client
• Simplified	

• Encryption	

• Load Balance Policy	

• C++ and C# version
@PeterVeentjer#DV13-{session hashtag}
HazelcastInstance	
  client	
  =	
  
HazelcastClient.newHazelcastClient();	
  
Client
@PeterVeentjer#DV13-{session hashtag}
Network Communication
• Cluster Discovery	

• Multicast	

• TCP/IP Cluster	

• AWS Cluster	

• Normal Network Communication	

• TCP/IP
@PeterVeentjer#DV13-{session hashtag}
Advanced Hazelcast
@PeterVeentjer#DV13-{session hashtag}
IMap	
  map1	
  =	
  hz.getMap(“map1”);	
  
IMap	
  map2	
  =	
  hz.getMap(“map2”);



<map	
  name=“map1”>	
  
	
   <time-­‐to-­‐live-­‐seconds>10</time-­‐to-­‐live-­‐seconds>	
  
</map>	
  
!
<map	
  name=“map2”>	
  
	
  	
  	
  	
  <time-­‐to-­‐live-­‐seconds>10</time-­‐to-­‐live-­‐seconds>	
  
</map>
Wildcard configuration
@PeterVeentjer#DV13-{session hashtag}
IMap	
  map1	
  =	
  hz.getMap(“map1”);	
  
IMap	
  map2	
  =	
  hz.getMap(“map2”);	
  
!
<map	
  name=“map*”>	
  
	
  	
  	
  	
  	
  <time-­‐to-­‐live-­‐seconds>10</time-­‐to-­‐live-­‐seconds>	
  
</map>

Wildcard configuration
@PeterVeentjer#DV13-{session hashtag}
<map	
  name=“map”>	
  
	
  	
  	
  	
  <time-­‐to-­‐live-­‐seconds>${ttl}</time-­‐to-­‐live-­‐seconds>	
  
</map>
XML Variables
@PeterVeentjer#DV13-{session hashtag}
Map: In Memory Format
• 2 Options	

• BINARY	

• OBJECT	

• Predicates	

• EntryProcessor
@PeterVeentjer#DV13-{session hashtag}
!
ILock	
  lock	
  =	
  hz.getLock(“someLock”);	
  
IAtomicLong	
  counter	
  =	
  getAtomicLong(“someCounter”);	
  
IMap	
  map	
  =	
  hz.getMap(“someMap”);	
  
map.put(“somePerson”,new	
  Person());	
  
map.get(“somePerson”);
Data Locality: Problem
@PeterVeentjer#DV13-{session hashtag}
Member 1
Member 2
Member 3
SomeLock
SomeCounter
SomePerson
@PeterVeentjer#DV13-{session hashtag}
name@partitionkey
name
@PeterVeentjer#DV13-{session hashtag}
ILock	
  lock	
  =	
  hz.getLock(“someLock@foo”);

IAtomicLong	
  counter	
  =	
  hz.getAtomicLong(“someCounter@foo”);	
  
IMap	
  map	
  =	
  hz.getMap(“someMap”);	
  
map.put(“somePerson@foo”,	
  new	
  Person());	
  
Person	
  p	
  =	
  map.get(“somePerson@foo”);
Data Locality: Fixed
@PeterVeentjer#DV13-{session hashtag}
Member 1
Member 2
Member 3
SomeLock
SomeCounter
SomePerson
Foo Partition
@PeterVeentjer#DV13-{session hashtag}
IAtomicLong	
  c1	
  =	
  …	
  
IAtomicLong	
  c2	
  =	
  hz.getAtomicLong(“c2@“+c1.getPartitionKey());
Adding object in same partition
@PeterVeentjer#DV13-{session hashtag}
Executor
• Execute task anywhere	

• Execute task on key owner	

• Execute task 	

• one/all/subset members	

• Synchronisation	

• ExecutionCallback	

• Futures
Demo
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
Concurrency Control
• Locks	

• TransactionalMap.getForUpdate	

• Map.Lock
Demo
@PeterVeentjer#DV13-{session hashtag}
@PeterVeentjer#DV13-{session hashtag}
public	
  void	
  increment(int	
  accountId,int	
  amount){	
  
	
  	
  	
  	
  Account	
  account	
  =	
  accounts.get(accountId);	
  
	
  	
  	
  	
  account.balance+=amount;	
  
	
  	
  	
  	
  accounts.put(accountId,	
  account);	
  
}	
  
Race problem
@PeterVeentjer#DV13-{session hashtag}
public	
  void	
  increment(int	
  accountId,int	
  amount){	
  
	
  	
  	
  	
  accounts.lock(accountId);	
  
	
  	
  	
  	
  try{	
  
	
  	
  	
  	
  	
  	
  	
  	
  Account	
  account	
  =	
  accounts.get(accountId);	
  
	
  	
  	
  	
  	
  	
  	
  	
  account.balance+=amount;	
  
	
  	
  	
  	
  	
  	
  	
  	
  accounts.put(accountId,	
  account);	
  
	
  	
  	
  	
  }finally{	
  
	
  	
  	
  	
  	
  	
  	
  	
  accounts.unlock(accountId);	
  
	
  	
  	
  	
  }	
  
}	
  
Pessimistic Increment
@PeterVeentjer#DV13-{session hashtag}
public	
  void	
  increment(int	
  accountId,int	
  amount){	
  
	
  	
  	
  	
  accounts.lock(accountId);	
  
	
  	
  	
  	
  try{	
  
	
  	
  	
  	
  	
  	
  	
  	
  Account	
  account	
  =	
  accounts.get(accountId);	
  
	
  	
  	
  	
  	
  	
  	
  	
  account.balance+=amount;	
  
	
  	
  	
  	
  	
  	
  	
  	
  accounts.put(accountId,	
  account);	
  
	
  	
  	
  	
  }finally{	
  
	
  	
  	
  	
  	
  	
  	
  	
  accounts.unlock(accountId);	
  
	
  	
  	
  	
  }	
  
}	
  
Pessimistic Increment
@PeterVeentjer#DV13-{session hashtag}
public	
  void	
  increment(int	
  accountId,int	
  amount){	
  
	
  	
  	
  	
  for(;;){	
  
	
  	
  	
  	
  	
  	
  	
  	
  Account	
  oldAccount	
  =	
  accounts.get(accountId);	
  
	
  	
  	
  	
  	
  	
  	
  	
  Account	
  newAccount	
  =	
  new	
  Account(oldAccount);	
  
	
  	
  	
  	
  	
  	
  	
  	
  newAccount.balance+=amount;	
  
	
  	
  	
  	
  	
  	
  	
  	
  if(accounts.replace(accountId,	
  oldAccount,newAccount)){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return;	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
}	
  
Optimistic Increment
@PeterVeentjer#DV13-{session hashtag}
public	
  void	
  increment(int	
  accountId,int	
  amount){	
  
	
  	
  	
  	
  for(;;){	
  
	
  	
  	
  	
  	
  	
  	
  	
  Account	
  oldAccount	
  =	
  accounts.get(accountId);	
  
	
  	
  	
  	
  	
  	
  	
  	
  Account	
  newAccount	
  =	
  new	
  Account(oldAccount);	
  
	
  	
  	
  	
  	
  	
  	
  	
  newAccount.balance+=amount;	
  
	
  	
  	
  	
  	
  	
  	
  	
  if(accounts.replace(accountId,	
  oldAccount,newAccount)){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return;	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
}	
  
Optimistic Increment
@PeterVeentjer#DV13-{session hashtag}
DATA
Bad: Send Data to Function
DATA
Good: Send Function to Data
Read Data
Write Data
Write Function
@PeterVeentjer#DV13-{session hashtag}
private	
  class	
  BalanceTask	
  implements	
  Runnable,Serializable{	
  
	
  	
  	
  	
  private	
  int	
  accountId,	
  amount;	
  
!
	
  	
  	
  	
  public	
  void	
  run()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  for(;;){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Account	
  oldAccount	
  =	
  accounts.get(accountId);	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Account	
  newAccount	
  =	
  new	
  Account(oldAccount);	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  newAccount.balance+=amount;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  if(accounts.replace(accountId,	
  
oldAccount,newAccount)){	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return;	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }	
  
}	
  	
  	
  	
  
Increment with runnable
@PeterVeentjer#DV13-{session hashtag}
public	
  void	
  increment(int	
  accountId,	
  int	
  amount){	
  
	
  	
  	
  	
  BalanceTask	
  task	
  =	
  new	
  BalanceTask(accountId,amount);	
  
	
  	
  	
  	
  executorService.executeOnKeyOwner(task,accountId);	
  
}
Increment with runnable
@PeterVeentjer#DV13-{session hashtag}
class	
  BalanceProcessor	
  
	
  	
  	
  	
  	
  	
  	
  	
  extends	
  AbstractEntryProcessor<Integer,Account>{	
  
	
  	
  	
  	
  int	
  amount;	
  
	
  	
  	
  	
  BalanceProcessor(int	
  amount)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  this.amount	
  =	
  amount;	
  
	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  @Override	
  
	
  	
  	
  	
  public	
  Object	
  process(Map.Entry<Integer,	
  Account>	
  entry)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  entry.getValue().balance+=amount;	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  null;	
  
	
  	
  	
  	
  }	
  
}
Increment with EntryProcessor
@PeterVeentjer#DV13-{session hashtag}
public	
  void	
  increment(int	
  accountId,	
  int	
  amount){	
  
	
  	
  	
  	
  BalanceProcessor	
  processor	
  =	
  new	
  BalanceProcessor(amount);	
  
	
  	
  	
  	
  accounts.executeOnKey(accountId,	
  processor);	
  
}	
  
Using entry processor
@PeterVeentjer#DV13-{session hashtag}
SPI
• You can write your own distributed data-structures	

• Examples	

• Distributed Actors implementation	

• Remote interfaces
@PeterVeentjer#DV13-{session hashtag}
Serialization API
• Serializable/Externalizable	

• Portable	

• ByteArraySerializable	

• StreamSerializer	

• Kryo	

• Jackson Smile	

• Protobuf
@PeterVeentjer#DV13-{session hashtag}
!
boolean	
  compress	
  =	
  …;	
  
!
SerializerConfig	
  serialiserCfg	
  =	
  new	
  SerializerConfig()	
  
	
  	
  	
  	
  	
  .setTypeClass(Product.class)	
  
	
  	
  	
  	
  	
  .setImplementation(new	
  ProductSerializer(compress));	
  
!
Config	
  config	
  =	
  new	
  Config();	
  
config.getSerializationConfig().addSerializerConfig(serializerC
fg);	
  
HazelcastInstance	
  hz	
  =	
  Hazelcast.newHazelcastInstance(config);
Pluggable Serialization
@PeterVeentjer#DV13-{session hashtag}
Kryo Serialization
SizeinBytes
0
5,000
10,000
15,000
20,000
Serialization Kryo Kryp + Compr
@PeterVeentjer#DV13-{session hashtag}
IExecutorService	
  executor	
  =	
  hz.getExecutor(“executor”);	
  
executor.execute(()-­‐>System.out.println”hello”));	
  
!
//configuration	
  
SerializerConfig	
  sc	
  =	
  new	
  SerializerConfig().	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  setImplementation(new	
  KryoSerializer(false)).	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  setTypeClass(Runnable.class);	
  
Config	
  config	
  =	
  new	
  Config();	
  
config.getSerializationConfig().addSerializerConfig(sc);	
  
Kryo: Lambda expression
@PeterVeentjer#DV13-{session hashtag}
IMap<Integer,Account>	
  accounts	
  =	
  hz.getMap(“accounts”);	
  
Map<Integer,Integer>	
  result	
  =	
  accounts	
  
	
  	
  	
  	
  	
  .map(new	
  AccountSumMapper())	
  
	
  	
  	
  	
  	
  .reduce(new	
  AccountSumReducer())	
  
	
  	
  	
  	
  	
  .submit()
Hazelcast 3.2? Map Reduce
@PeterVeentjer#DV13-{session hashtag}
Enterprise vs Community edition
• Support contracts	

• Elastic Memory	

• Security	

• Management Center
@PeterVeentjer#DV13-{session hashtag}
The Future
• Topologies	

• Hosted Management Center	

• Dynamic Creation	

• Map of Maps	

• Tiered storage
@PeterVeentjer#DV13-{session hashtag}
We are hiring!
@PeterVeentjer#DV13-{session hashtag}
Questions?
You can find us at the
Hazelcast booth!
Good Question? 

Get a Hazelcast
book!

Contenu connexe

Tendances

Easy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip OzturkEasy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip Ozturk
ZeroTurnaround
 

Tendances (6)

Getting physical with web bluetooth in the browser
Getting physical with web bluetooth in the browserGetting physical with web bluetooth in the browser
Getting physical with web bluetooth in the browser
 
Easy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip OzturkEasy Scaling with Open Source Data Structures, by Talip Ozturk
Easy Scaling with Open Source Data Structures, by Talip Ozturk
 
Am pmetrics v2
Am pmetrics v2Am pmetrics v2
Am pmetrics v2
 
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
 
Introduction To Lamp P2
Introduction To Lamp P2Introduction To Lamp P2
Introduction To Lamp P2
 
What You Need to Know to Move from a Relational to a NoSQL Database
What You Need to Know to Move from a Relational to a NoSQL DatabaseWhat You Need to Know to Move from a Relational to a NoSQL Database
What You Need to Know to Move from a Relational to a NoSQL Database
 

En vedette

En vedette (18)

Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using Hazelcast
 
Glass fish performance tuning tips from the field
Glass fish performance tuning tips from the fieldGlass fish performance tuning tips from the field
Glass fish performance tuning tips from the field
 
Distributed Computing in Hazelcast - Geekout 2014 Edition
Distributed Computing in Hazelcast - Geekout 2014 EditionDistributed Computing in Hazelcast - Geekout 2014 Edition
Distributed Computing in Hazelcast - Geekout 2014 Edition
 
Deploying Elastic Java EE Microservices in the Cloud with Docker
Deploying Elastic Java EE Microservices in the Cloud with DockerDeploying Elastic Java EE Microservices in the Cloud with Docker
Deploying Elastic Java EE Microservices in the Cloud with Docker
 
Hazelcast
HazelcastHazelcast
Hazelcast
 
Distributed computing with Hazelcast - JavaOne 2014
Distributed computing with Hazelcast - JavaOne 2014Distributed computing with Hazelcast - JavaOne 2014
Distributed computing with Hazelcast - JavaOne 2014
 
Introduction to hazelcast
Introduction to hazelcastIntroduction to hazelcast
Introduction to hazelcast
 
Hazelcast
HazelcastHazelcast
Hazelcast
 
Hazelcast For Beginners (Paris JUG-1)
Hazelcast For Beginners (Paris JUG-1)Hazelcast For Beginners (Paris JUG-1)
Hazelcast For Beginners (Paris JUG-1)
 
Hazelcast
HazelcastHazelcast
Hazelcast
 
Hazelcast - In-Memory DataGrid
Hazelcast - In-Memory DataGridHazelcast - In-Memory DataGrid
Hazelcast - In-Memory DataGrid
 
Hazelcast Deep Dive (Paris JUG-2)
Hazelcast Deep Dive (Paris JUG-2)Hazelcast Deep Dive (Paris JUG-2)
Hazelcast Deep Dive (Paris JUG-2)
 
Building scalable applications with hazelcast
Building scalable applications with hazelcastBuilding scalable applications with hazelcast
Building scalable applications with hazelcast
 
Think Distributed: The Hazelcast Way
Think Distributed: The Hazelcast WayThink Distributed: The Hazelcast Way
Think Distributed: The Hazelcast Way
 
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and IgniteJCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
 
Hazelcast Essentials
Hazelcast EssentialsHazelcast Essentials
Hazelcast Essentials
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
[OracleCode SF] In memory analytics with apache spark and hazelcast
[OracleCode SF] In memory analytics with apache spark and hazelcast[OracleCode SF] In memory analytics with apache spark and hazelcast
[OracleCode SF] In memory analytics with apache spark and hazelcast
 

Similaire à Devoxx 2013 - Hazelcast

JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...
JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...
JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...
JSFestUA
 
a real-time architecture using Hadoop and Storm at Devoxx
a real-time architecture using Hadoop and Storm at Devoxxa real-time architecture using Hadoop and Storm at Devoxx
a real-time architecture using Hadoop and Storm at Devoxx
Nathan Bijnens
 
Understanding Presto - Presto meetup @ Tokyo #1
Understanding Presto - Presto meetup @ Tokyo #1Understanding Presto - Presto meetup @ Tokyo #1
Understanding Presto - Presto meetup @ Tokyo #1
Sadayuki Furuhashi
 

Similaire à Devoxx 2013 - Hazelcast (20)

HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 
The Devil and HTML5
The Devil and HTML5The Devil and HTML5
The Devil and HTML5
 
JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...
JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...
JS Fest 2019. Олег Докука и Даниил Дробот. RSocket - future Reactive Applicat...
 
Hidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceHidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-Persistence
 
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and NoteworthyJava EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
Java EE & Glass Fish User Group: Digital JavaEE 7 - New and Noteworthy
 
JavaEE & GlassFish UG - Digital JavaEE 7 New & Noteworthy by P.Pilgrim
JavaEE & GlassFish UG - Digital JavaEE 7 New & Noteworthy by P.PilgrimJavaEE & GlassFish UG - Digital JavaEE 7 New & Noteworthy by P.Pilgrim
JavaEE & GlassFish UG - Digital JavaEE 7 New & Noteworthy by P.Pilgrim
 
a real-time architecture using Hadoop and Storm at Devoxx
a real-time architecture using Hadoop and Storm at Devoxxa real-time architecture using Hadoop and Storm at Devoxx
a real-time architecture using Hadoop and Storm at Devoxx
 
Building and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsBuilding and Scaling Node.js Applications
Building and Scaling Node.js Applications
 
The Past, Present and Future of Real-Time Apps and Communications
The Past, Present and Future of Real-Time Apps and CommunicationsThe Past, Present and Future of Real-Time Apps and Communications
The Past, Present and Future of Real-Time Apps and Communications
 
Html5 drupal7 with mandakini kumari(1)
Html5 drupal7 with mandakini kumari(1)Html5 drupal7 with mandakini kumari(1)
Html5 drupal7 with mandakini kumari(1)
 
IT Data Visualization - Sumit 2008
IT Data Visualization - Sumit 2008IT Data Visualization - Sumit 2008
IT Data Visualization - Sumit 2008
 
Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
 
Alan Pope, Sebastian Spaink [InfluxData] | Data Collection 101 | InfluxDays N...
Alan Pope, Sebastian Spaink [InfluxData] | Data Collection 101 | InfluxDays N...Alan Pope, Sebastian Spaink [InfluxData] | Data Collection 101 | InfluxDays N...
Alan Pope, Sebastian Spaink [InfluxData] | Data Collection 101 | InfluxDays N...
 
Introduction to KillrChat
Introduction to KillrChatIntroduction to KillrChat
Introduction to KillrChat
 
Prestogres internals
Prestogres internalsPrestogres internals
Prestogres internals
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
 
Droidcon Paris 2015
Droidcon Paris 2015Droidcon Paris 2015
Droidcon Paris 2015
 
Understanding Presto - Presto meetup @ Tokyo #1
Understanding Presto - Presto meetup @ Tokyo #1Understanding Presto - Presto meetup @ Tokyo #1
Understanding Presto - Presto meetup @ Tokyo #1
 
Tips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefTips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with Chef
 

Plus de Hazelcast

The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScriptThe Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
Hazelcast
 
Speed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and SpeedmentSpeed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and Speedment
Hazelcast
 
Applying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data GridApplying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data Grid
Hazelcast
 
Hazelcast for Terracotta Users
Hazelcast for Terracotta UsersHazelcast for Terracotta Users
Hazelcast for Terracotta Users
Hazelcast
 
Extreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on ToruswareExtreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on Torusware
Hazelcast
 
JAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGsJAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGs
Hazelcast
 
Devoxx UK 2014 High Performance In-Memory Java with Open Source
Devoxx UK 2014   High Performance In-Memory Java with Open SourceDevoxx UK 2014   High Performance In-Memory Java with Open Source
Devoxx UK 2014 High Performance In-Memory Java with Open Source
Hazelcast
 

Plus de Hazelcast (20)

Hazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap PreviewHazelcast 3.6 Roadmap Preview
Hazelcast 3.6 Roadmap Preview
 
Time to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data GridsTime to Make the Move to In-Memory Data Grids
Time to Make the Move to In-Memory Data Grids
 
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScriptThe Power of the JVM: Applied Polyglot Projects with Java and JavaScript
The Power of the JVM: Applied Polyglot Projects with Java and JavaScript
 
JCache - It's finally here
JCache -  It's finally hereJCache -  It's finally here
JCache - It's finally here
 
Speed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and SpeedmentSpeed Up Your Existing Relational Databases with Hazelcast and Speedment
Speed Up Your Existing Relational Databases with Hazelcast and Speedment
 
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorganShared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
Shared Memory Performance: Beyond TCP/IP with Ben Cotton, JPMorgan
 
Applying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data GridApplying Real-time SQL Changes in your Hazelcast Data Grid
Applying Real-time SQL Changes in your Hazelcast Data Grid
 
WAN Replication: Hazelcast Enterprise Lightning Talk
WAN Replication: Hazelcast Enterprise Lightning TalkWAN Replication: Hazelcast Enterprise Lightning Talk
WAN Replication: Hazelcast Enterprise Lightning Talk
 
JAAS Security Suite: Hazelcast Enterprise Lightning Talk
JAAS Security Suite: Hazelcast Enterprise Lightning TalkJAAS Security Suite: Hazelcast Enterprise Lightning Talk
JAAS Security Suite: Hazelcast Enterprise Lightning Talk
 
Hazelcast for Terracotta Users
Hazelcast for Terracotta UsersHazelcast for Terracotta Users
Hazelcast for Terracotta Users
 
Extreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on ToruswareExtreme Network Performance with Hazelcast on Torusware
Extreme Network Performance with Hazelcast on Torusware
 
Big Data, Simple and Fast: Addressing the Shortcomings of Hadoop
Big Data, Simple and Fast: Addressing the Shortcomings of HadoopBig Data, Simple and Fast: Addressing the Shortcomings of Hadoop
Big Data, Simple and Fast: Addressing the Shortcomings of Hadoop
 
JAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGsJAXLondon - Squeezing Performance of IMDGs
JAXLondon - Squeezing Performance of IMDGs
 
OrientDB & Hazelcast: In-Memory Distributed Graph Database
 OrientDB & Hazelcast: In-Memory Distributed Graph Database OrientDB & Hazelcast: In-Memory Distributed Graph Database
OrientDB & Hazelcast: In-Memory Distributed Graph Database
 
How to Use HazelcastMQ for Flexible Messaging and More
 How to Use HazelcastMQ for Flexible Messaging and More How to Use HazelcastMQ for Flexible Messaging and More
How to Use HazelcastMQ for Flexible Messaging and More
 
Devoxx UK 2014 High Performance In-Memory Java with Open Source
Devoxx UK 2014   High Performance In-Memory Java with Open SourceDevoxx UK 2014   High Performance In-Memory Java with Open Source
Devoxx UK 2014 High Performance In-Memory Java with Open Source
 
JSR107 State of the Union JavaOne 2013
JSR107  State of the Union JavaOne 2013JSR107  State of the Union JavaOne 2013
JSR107 State of the Union JavaOne 2013
 
Jfokus - Hazlecast
Jfokus - HazlecastJfokus - Hazlecast
Jfokus - Hazlecast
 
In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014In-memory No SQL- GIDS2014
In-memory No SQL- GIDS2014
 
In-memory Data Management Trends & Techniques
In-memory Data Management Trends & TechniquesIn-memory Data Management Trends & Techniques
In-memory Data Management Trends & Techniques
 

Dernier

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Dernier (20)

WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 

Devoxx 2013 - Hazelcast