SlideShare a Scribd company logo
1 of 40
Download to read offline
Talip Ozturk
talip@hazelcast.com
Agenda
• Introduc-on
• Code
Samples
• Demo
• Internals
• Q/A
What
is
Hazelcast?
• In‐Memory
Data
Grid
(IMDG)
• Clustering
and
highly
scalable
data
distribu-on

  solu-on
for
Java
• Distributed
Data
Structures
for
Java
• Distributed
Hashtable
(DHT)
and
more
Why
Hazelcast?
• Scale
your
applica-on
• Share
data
across
cluster
• Par--on
your
data
• Send/receive
messages
• Balance
the
load
• Process
in
parallel
on
many
JVM
Solu-ons
in
the
Market
•   Oracle
Coherence
•   IBM
WebSphere
eXtreme
Scale
/
ObjectGrid
•   TerracoPa
•   Gigaspaces
•   Gemstone
•   JBossCache/JGroups/Infinispan
Difference
• License
/
Cost
• Feature‐set
• Ease
of
use
• Main
focus
(distributed
map,
tuple
space,
cache,

  processing
vs.
data)
• Light/Heavy
weight
Introducing
Hazelcast
• Open
source
(Apache
License)
• Super
light,
simple,
no‐dependency
• Distributed/par--oned
implementa-on
of
map,
queue,

  set,
list,
lock
and
executor
service
• Transac-onal
(JCA
support)
• Topic
for
pub/sub
messaging
• Cluster
info
and
membership
events
• Dynamic
clustering,
backup,
fail‐over
Data
Par--oning
in
a
Cluster
 If
you
have
5
million
objects
in
your
5‐node
cluster,

 then
each
node
will
carry
 1
million
objects
and
1
million
backup
objects.




Server1     Server2      Server3        Server4       Server5
SuperClient
in
a
Cluster
          • -Dhazelcast.super.client=true
          •


As
fast
as
any
member
in
the
cluster
          •


Holds
no‐data





Server1        Server2      Server3       Server4    Server5
Code
Samples
–
Cluster
Interface

import com.hazelcast.core.*;
import java.util.Set;

Cluster cluster = Hazelcast.getCluster();
cluster.addMembershipListener(listener);

Member localMember = cluster.getLocalMember();
System.out.println (localMember.getInetAddress());

Set setMembers   = cluster.getMembers();
Code
Samples
–
Distributed
Map

import com.hazelcast.core.Hazelcast;
import java.util.Map;

Map<String, Customer> map = Hazelcast.getMap("customers");

map.put ("1", customer);

Customer c = map.get("1");
Code
Samples
–
Distributed
Mul-Map

import com.hazelcast.core.Hazelcast;
İmport com.hazelcast.core.MultiMap;

MultiMap<String, Order> map = Hazelcast.getMultiMap(”orders");

map.put   ("1”,   new   Order   ("iPhone", 340));
map.put   ("1”,   new   Order   (”MacBook", 1200));
map.put   ("1”,   new   Order   (”iPod", 79));
map.put   (“2”,   new   Order   (”iMac", 1500));

Collection<Order> colOrders = map.get ("1”);
for (Order order : colOrders) {
    // process order
}

boolean removed = map.remove("1”, new Order(”iPod", 79));
Code
Samples
–
Distributed
Queue

import com.hazelcast.core.Hazelcast;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;

BlockingQueue<Task> queue = Hazelcast.getQueue(“tasks");

queue.offer(task);

Task t = queue.poll();
Task t = queue.poll(5, TimeUnit.SECONDS);
Code
Samples
–
Distributed
Set

import com.hazelcast.core.Hazelcast;
import java.util.Set;

Set<Price> set = Hazelcast.getSet(“IBM-Quote-History");

set.add (new Price (10, time1));
set.add (new Price (11, time2));
set.add (new Price (13, time3));

for (Price price : set) {
    // process price
}
Code
Samples
–
Distributed
Lock

import com.hazelcast.core.Hazelcast;
import java.util.concurrent.locks.Lock;

Lock mylock = Hazelcast.getLock(mylockobject);
mylock.lock();
try {
   // do something
} finally {
   mylock.unlock();
}
Code
Samples
–
Distributed
Topic

import com.hazelcast.core.*;

public class Sample implements MessageListener {

       public static void main(String[] args) {
               Sample sample = new Sample();
               Topic topic = Hazelcast.getTopic ("default");
               topic.addMessageListener(sample);
               topic.publish ("my-message-object");
       }

       public void onMessage(Object msg) {
               System.out.println("Got msg :" + msg);
       }
}
Code
Samples
–
Distributed
Events
import   com.hazelcast.core.IMap;
import   com.hazelcast.core.Hazelcast;
import   com.hazelcast.core.EntryListener;
import   com.hazelcast.core.EntryEvent;

public class Sample implements EntryListener {
       public static void main(String[] args) {
             Sample sample = new Sample();
             IMap    map   = Hazelcast.getMap ("default");
             map.addEntryListener (sample, true);
             map.addEntryListener (sample, "key");
       }


         public void entryAdded(EntryEvent event) {
               System.out.println("Added " + event.getKey() + ":" + event.getValue());
         }


         public void entryRemoved(EntryEvent event) {
               System.out.println("Removed " + event.getKey() + ":" + event.getValue());
         }


         public void entryUpdated(EntryEvent event) {
               System.out.println("Updated " + event.getKey() + ":" + event.getValue());
         }
}
Code
Samples
–
Transac-ons
import   com.hazelcast.core.Hazelcast;
import   com.hazelcast.core.Transaction;
import   java.util.Map;
import   java.util.Queue;

Map   map    = Hazelcast.getMap  (“default”);
Queue queue = Hazelcast.getQueue (“default”);
Transaction txn = Hazelcast.getTransaction();
txn.begin();
try {
    Object obj = queue.poll();
    //process obj
    map.put (key, obj);

     txn.commit();
} catch (Exception e) {
    txn.rollback();
}
Code
Samples
–
Executor
Service

FutureTask<String> futureTask = new
         DistributedTask<String>(new Echo(input), member);

ExecutorService es = Hazelcast.getExecutorService();

es.execute(futureTask);

String result = futureTask.get();
Executor
Service
Scenario

public int addBonus(long customerId, int extraBonus){

      IMap<Long, Customer> mapCustomers =
                        Hazelcast.getMap("customers");
      mapCustomers.lock (customerId);
      Customer customer = mapCustomers.get(customerId);
      int currentBonus = customer.addBonus(extraBonus);
      mapCustomers.put(customerId, customer);
      mapCustomers.unlock(customerId);
      return currentBonus;

}
Send
computa-on
over
data
public class BonusAddTask implements Callable<Integer>, Serializable{


           private static final long serialVersionUID = 1L;
           private long customerId;
           private long extraBonus;

           public BonusAddTask () {
           }
           public BonusAddTask (long customerId, int extraBonus) {
                this.customerId = customerId;
                this.extraBonus = extraBonus;
           }
           public Integer call () {
                IMap<Long, Customer> mapCustomers = Hazelcast.getMap("customers");
                mapCustomers.lock (customerId);
                Customer customer = mapCustomers.get(customerId);
                int currentBonus = customer.addBonus(extraBonus);
                mapCustomers.put(customerId, customer);
                mapCustomers.unlock(customerId);
                return currentBonus;
           }
}
Send
computa-on
over
data

public int addBonus(long customerId, int extraBonus){
           ExecutorService es = Hazelcast.getExecutorService();
           FutureTask<Integer> task =
                        new DistributedTask<Integer>(new
                        BonusAddTask(customerId, extraBonus),
                        customerId);
           es.execute(task);
           int currentBonus = task.get();
           return currentBonus;
}
<hazelcast>                         Configura-on
        <group>
                  <name>dev</name>
                  <password>dev-pass</password>
        </group>
        <network>
                 <port auto-increment="true">5701</port>
                 <join>
                         <multicast enabled="true">
                                 <multicast-group>224.2.2.3</multicast-group>
                                 <multicast-port>54327</multicast-port>
                         </multicast>
                         <tcp-ip enabled="false">
                                 <interface>192.168.1.2-5</interface>
                                 <hostname>istanbul.acme</hostname>
                         </tcp-ip>
                 </join>
                 <interfaces enabled="false">
                         <interface>10.3.17.*</interface>
                 </interfaces>
        </network>
        <queue name="default">
                 <max-size-per-jvm>10000</max-size-per-jvm>
                  <time-to-live-seconds>60</time-to-live-seconds>
        </queue>
        <map name="default">
                 <backup-count>1</backup-count>
                <time-to-live-seconds>60</time-to-live-seconds>
                 <max-size>10000</max-size>
                <eviction-policy>LRU</eviction-policy>
                <eviction-percentage>25</eviction-percentage>
        </map>
</hazelcast>
DEMO
Internals
:
Threads
• User
threads
(client
threads)
• ServiceThread
(com.hazelcast.impl.ClusterService)
• InThread
• OutThread
• Mul-castThread
• ExecutorService
Threads
Internals
:
Cluster
Membership
• Mul-cast
and
Unicast
Discovery
• Every
member
sends
heartbeats
to
the
oldest

  member
• Oldest
Member
manages
the
memberships
  –Sends
member
list
  –Tells
members
to
sync
their
data
Internals
:
Serializa-on
• Op-mized
for
String, byte[], Long,     Integer

• Custom
serializa-on
with

  (com.hazelcast.nio.DataSerializable)
• Standard
Java
Serializa-on
Internals
:
Serializa-on
public class   Address implements com.hazelcast.nio.DataSerializable {
     private   String street;
     private   int zipCode;
     private   String city;
     private   String state;

    public Address() {}

    //getters setters..

    public void writeData(DataOutput out) throws IOException {
         out.writeUTF(street);
         out.writeInt(zipCode);
         out.writeUTF(city);
         out.writeUTF(state);
    }

    public void readData (DataInput in) throws IOException {
         street    = in.readUTF();
         zipCode = in.readInt();
         city     = in.readUTF();
         state     = in.readUTF();
    }
}
Internals
:
Serializa-on
public class   Employee implements com.hazelcast.nio.DataSerializable {
     private   String firstName;
     private   String lastName;
     private   int age;
     private   double salary;
     private   Address address; //address itself is DataSerializable

    public Employee() {}


    public void writeData(DataOutput out) throws IOException {
         out.writeUTF(firstName);
         out.writeUTF(lastName);
         out.writeInt(age);
         out.writeDouble (salary);
         address.writeData (out);
    }

    public void readData (DataInput in) throws IOException {
         firstName = in.readUTF();
         lastName = in.readUTF();
         age       = in.readInt();
         salary     = in.readDouble();
         address   = new Address();
         address.readData (in);
    }
}
Internals
:
Serializa-on
• Hazelcast
doesn't
work
with
your
objects
directly
• Hazelcast
works
with
com.hazelcast.nio.Data only
• Data
is
the
binary
representa-on
of
your
object
• Data
is
a
list
of
re‐used
java.nio.ByteBuffers
Internals
:
ObjectPool
• Thread‐aware
object
pool
• Try
the
thread's
lock‐free
queue
first
• If
thread's
queue
is
full/empty,
go
to
the
global

  (concurrent)
queue
• See
com.hazelcast.impl.ThreadContext.ObjectPool

Internals
:
Sockets
• Java
NIO
(none‐blocking
mode)
• There
are
only
2
threads
for
read/write

  regardless
of
the
cluster
size
• InThread
for
read
and
accept

• OutThread
for
write
and
connect

• A
pool
of
java.nio.ByteBuffers
is
used

Internals
:
Sockets
• Packet
travels
over
the
wire
com.hazelcast.nio.Packet

• Packet
structure:




• Packet
objects
are
also
re‐used
• Processed
only
by
ServiceThread
Internals
:
Map.put(key,
value)
• com.hazelcast.nio.Data
• com.hazelcast.impl.BaseManager.Call
• com.hazelcast.impl.BaseManager.Request
• com.hazelcast.nio.Packet
• com.hazelcast.impl.BaseManager.PacketProcessor
Internals
:
Map.put(key,
value)
• Convert
key‐value
objects
to
Data
instances
• Hash
of
the
key
tells
us
which
member
is
the

  owner
• If
owner
is
local
simply
put
the
key/value
• If
remote

      •Send
it
to
the
owner
member
      •Read
the
response
• If
remote
owner
dies,
re‐do
Internals
:
Distributed
Map
• Fixed
number
of
blocks
(segments)
• Each
key
falls
into
one
of
these
blocks
• Each
block
is
owned
by
a
member
• Every
member
knows
the
block
owners
• blockId   = hash(keyData) % BLOCK_COUNT
• Block
ownership
is
reassigned
upon
membership

  change
• Blocks
and
keys
migrate
for
load‐balancing
Internals
:
Distributed
Queue
• The
oldest
member
creates
blocks
as
needed
• Every
member
knows
the
block
owners
• Items
are
added
into
the
blocks
• No
migra-on
happens;
short
lived
objects
• Each
member
holds
a
takeBlockId and

 putBlockId
• ‘Go‐Next’
if
the
target
is
wrong
or

block
is
full/
  empty
JVM
‐1                               JVM
‐2

map.put (key, value)



                                 TCP/IP   PacketProcessor
    Call:
MPut



   Request:                                 Request:
   Data
key                                 Data
key
   Data
value                               Data
value
                            Packet
     Owner
?                                  Owner
?
                       No

            Yes
  Process
Request                         Process
Request
Planned
Features
• Persistence
(Load/Store)
for
distributed
map
• Distributed
Search
and
Con-nues
Queries
• Distributed
java.util.concurrent.
 {DelayQueue, Semaphore, CountDownLatch}
• Distributed
Tuple
Space
• Pure
Java
and
C#
clients
Ques-ons?

• hPp://www.hazelcast.com

• hPp://code.google.com/p/hazelcast/
• hazelcast@googlegroups.com
• TwiPer
@oztalip
• hPp://www.linkedin.com/in/talipozturk

More Related Content

What's hot

CloudStack Meetup London - Primary Storage Presentation by SolidFire
CloudStack Meetup London - Primary Storage Presentation by SolidFire CloudStack Meetup London - Primary Storage Presentation by SolidFire
CloudStack Meetup London - Primary Storage Presentation by SolidFire NetApp
 
Processing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkProcessing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkBen Slater
 
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016DataStax
 
Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...
Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...
Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...Altinity Ltd
 
Practicing Continuous Deployment
Practicing Continuous DeploymentPracticing Continuous Deployment
Practicing Continuous Deploymentzeeg
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the DataHao Chen
 
YaJug - Cassandra for Java Developers
YaJug - Cassandra for Java DevelopersYaJug - Cassandra for Java Developers
YaJug - Cassandra for Java DevelopersMichaël Figuière
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced previewPatrick McFadin
 
Where is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by exampleWhere is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by exampleRafał Leszko
 
Paris Cassandra Meetup - Cassandra for Developers
Paris Cassandra Meetup - Cassandra for DevelopersParis Cassandra Meetup - Cassandra for Developers
Paris Cassandra Meetup - Cassandra for DevelopersMichaël Figuière
 
Geneva JUG - Cassandra for Java Developers
Geneva JUG - Cassandra for Java DevelopersGeneva JUG - Cassandra for Java Developers
Geneva JUG - Cassandra for Java DevelopersMichaël Figuière
 
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTOClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTOAltinity Ltd
 
Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021
Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021
Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021Altinity Ltd
 
Using Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraUsing Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraJim Hatcher
 
Understanding DSE Search by Matt Stump
Understanding DSE Search by Matt StumpUnderstanding DSE Search by Matt Stump
Understanding DSE Search by Matt StumpDataStax
 
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax
 
Everyday I’m scaling... Cassandra
Everyday I’m scaling... CassandraEveryday I’m scaling... Cassandra
Everyday I’m scaling... CassandraInstaclustr
 
EclipseCon - Building an IDE for Apache Cassandra
EclipseCon - Building an IDE for Apache CassandraEclipseCon - Building an IDE for Apache Cassandra
EclipseCon - Building an IDE for Apache CassandraMichaël Figuière
 
Feed Burner Scalability
Feed Burner ScalabilityFeed Burner Scalability
Feed Burner Scalabilitydidip
 

What's hot (20)

CloudStack Meetup London - Primary Storage Presentation by SolidFire
CloudStack Meetup London - Primary Storage Presentation by SolidFire CloudStack Meetup London - Primary Storage Presentation by SolidFire
CloudStack Meetup London - Primary Storage Presentation by SolidFire
 
Processing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and SparkProcessing 50,000 events per second with Cassandra and Spark
Processing 50,000 events per second with Cassandra and Spark
 
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
 
Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...
Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...
Introduction to the Mysteries of ClickHouse Replication, By Robert Hodges and...
 
Practicing Continuous Deployment
Practicing Continuous DeploymentPracticing Continuous Deployment
Practicing Continuous Deployment
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the Data
 
YaJug - Cassandra for Java Developers
YaJug - Cassandra for Java DevelopersYaJug - Cassandra for Java Developers
YaJug - Cassandra for Java Developers
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced preview
 
Where is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by exampleWhere is my cache architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by example
 
Paris Cassandra Meetup - Cassandra for Developers
Paris Cassandra Meetup - Cassandra for DevelopersParis Cassandra Meetup - Cassandra for Developers
Paris Cassandra Meetup - Cassandra for Developers
 
Geneva JUG - Cassandra for Java Developers
Geneva JUG - Cassandra for Java DevelopersGeneva JUG - Cassandra for Java Developers
Geneva JUG - Cassandra for Java Developers
 
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTOClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
ClickHouse on Kubernetes, by Alexander Zaitsev, Altinity CTO
 
Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021
Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021
Building ClickHouse and Making Your First Contribution: A Tutorial_06.10.2021
 
Using Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraUsing Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into Cassandra
 
Understanding DSE Search by Matt Stump
Understanding DSE Search by Matt StumpUnderstanding DSE Search by Matt Stump
Understanding DSE Search by Matt Stump
 
Advanced Cassandra
Advanced CassandraAdvanced Cassandra
Advanced Cassandra
 
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
 
Everyday I’m scaling... Cassandra
Everyday I’m scaling... CassandraEveryday I’m scaling... Cassandra
Everyday I’m scaling... Cassandra
 
EclipseCon - Building an IDE for Apache Cassandra
EclipseCon - Building an IDE for Apache CassandraEclipseCon - Building an IDE for Apache Cassandra
EclipseCon - Building an IDE for Apache Cassandra
 
Feed Burner Scalability
Feed Burner ScalabilityFeed Burner Scalability
Feed Burner Scalability
 

Viewers also liked

Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using HazelcastTaras Matyashovsky
 
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.Taras Matyashovsky
 
From distributed caches to in-memory data grids
From distributed caches to in-memory data gridsFrom distributed caches to in-memory data grids
From distributed caches to in-memory data gridsMax Alexejev
 
DNS Security
DNS SecurityDNS Security
DNS Securityinbroker
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M usersJongyoon Choi
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & FeaturesDataStax Academy
 
Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureDan McKinley
 
Big Data in Real-Time at Twitter
Big Data in Real-Time at TwitterBig Data in Real-Time at Twitter
Big Data in Real-Time at Twitternkallen
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeperSaurav Haloi
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsJonas Bonér
 
Building scalable applications with hazelcast
Building scalable applications with hazelcastBuilding scalable applications with hazelcast
Building scalable applications with hazelcastFuad Malikov
 
DNS Security Presentation ISSA
DNS Security Presentation ISSADNS Security Presentation ISSA
DNS Security Presentation ISSASrikrupa Srivatsan
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcachedJurriaan Persyn
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
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 GridHazelcast
 

Viewers also liked (20)

Distributed applications using Hazelcast
Distributed applications using HazelcastDistributed applications using Hazelcast
Distributed applications using 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.
From cache to in-memory data grid. Introduction to Hazelcast.
 
From distributed caches to in-memory data grids
From distributed caches to in-memory data gridsFrom distributed caches to in-memory data grids
From distributed caches to in-memory data grids
 
DNS Security
DNS SecurityDNS Security
DNS Security
 
facebook architecture for 600M users
facebook architecture for 600M usersfacebook architecture for 600M users
facebook architecture for 600M users
 
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
LinkedIn - A Professional Network built with Java Technologies and Agile Prac...
 
Cassandra Introduction & Features
Cassandra Introduction & FeaturesCassandra Introduction & Features
Cassandra Introduction & Features
 
Etsy Activity Feeds Architecture
Etsy Activity Feeds ArchitectureEtsy Activity Feeds Architecture
Etsy Activity Feeds Architecture
 
Big Data in Real-Time at Twitter
Big Data in Real-Time at TwitterBig Data in Real-Time at Twitter
Big Data in Real-Time at Twitter
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
 
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability PatternsScalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
 
Morning at Lohika
Morning at LohikaMorning at Lohika
Morning at Lohika
 
Building scalable applications with hazelcast
Building scalable applications with hazelcastBuilding scalable applications with hazelcast
Building scalable applications with hazelcast
 
Security of DNS
Security of DNSSecurity of DNS
Security of DNS
 
DNS Security Presentation ISSA
DNS Security Presentation ISSADNS Security Presentation ISSA
DNS Security Presentation ISSA
 
Introduction to memcached
Introduction to memcachedIntroduction to memcached
Introduction to memcached
 
Detecting Trends
Detecting TrendsDetecting Trends
Detecting Trends
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Hazelcast 101
Hazelcast 101Hazelcast 101
Hazelcast 101
 
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
 

Similar to Hazelcast

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 OzturkZeroTurnaround
 
Clustering your Application with Hazelcast
Clustering your Application with HazelcastClustering your Application with Hazelcast
Clustering your Application with HazelcastHazelcast
 
Camel one v3-6
Camel one v3-6Camel one v3-6
Camel one v3-6wxdydx
 
Store and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraStore and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraDeependra Ariyadewa
 
KISSY 的昨天、今天与明天
KISSY 的昨天、今天与明天KISSY 的昨天、今天与明天
KISSY 的昨天、今天与明天tblanlan
 
kissy-past-now-future
kissy-past-now-futurekissy-past-now-future
kissy-past-now-futureyiming he
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGMatthew McCullough
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ EtsyNishan Subedi
 
Emerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the HorizonEmerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the HorizonAlex Payne
 
AJUG April 2011 Cascading example
AJUG April 2011 Cascading exampleAJUG April 2011 Cascading example
AJUG April 2011 Cascading exampleChristopher Curtin
 
Secure .NET programming
Secure .NET programmingSecure .NET programming
Secure .NET programmingAnte Gulam
 
Monitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry PiMonitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry PiInfluxData
 
apidays LIVE Australia - Building distributed systems on the shoulders of gia...
apidays LIVE Australia - Building distributed systems on the shoulders of gia...apidays LIVE Australia - Building distributed systems on the shoulders of gia...
apidays LIVE Australia - Building distributed systems on the shoulders of gia...apidays
 
Google App Engine Developer - Day3
Google App Engine Developer - Day3Google App Engine Developer - Day3
Google App Engine Developer - Day3Simon Su
 
Flux and InfluxDB 2.0 by Paul Dix
Flux and InfluxDB 2.0 by Paul DixFlux and InfluxDB 2.0 by Paul Dix
Flux and InfluxDB 2.0 by Paul DixInfluxData
 
Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010Ismael Celis
 
Hadoop Integration in Cassandra
Hadoop Integration in CassandraHadoop Integration in Cassandra
Hadoop Integration in CassandraJairam Chandar
 

Similar to Hazelcast (20)

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
 
Clustering your Application with Hazelcast
Clustering your Application with HazelcastClustering your Application with Hazelcast
Clustering your Application with Hazelcast
 
Apache Cassandra and Go
Apache Cassandra and GoApache Cassandra and Go
Apache Cassandra and Go
 
Camel one v3-6
Camel one v3-6Camel one v3-6
Camel one v3-6
 
JavaScript Refactoring
JavaScript RefactoringJavaScript Refactoring
JavaScript Refactoring
 
Store and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and CassandraStore and Process Big Data with Hadoop and Cassandra
Store and Process Big Data with Hadoop and Cassandra
 
KISSY 的昨天、今天与明天
KISSY 的昨天、今天与明天KISSY 的昨天、今天与明天
KISSY 的昨天、今天与明天
 
kissy-past-now-future
kissy-past-now-futurekissy-past-now-future
kissy-past-now-future
 
Cascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUGCascading Through Hadoop for the Boulder JUG
Cascading Through Hadoop for the Boulder JUG
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
Emerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the HorizonEmerging Languages: A Tour of the Horizon
Emerging Languages: A Tour of the Horizon
 
AJUG April 2011 Cascading example
AJUG April 2011 Cascading exampleAJUG April 2011 Cascading example
AJUG April 2011 Cascading example
 
Secure .NET programming
Secure .NET programmingSecure .NET programming
Secure .NET programming
 
Monitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry PiMonitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
 
apidays LIVE Australia - Building distributed systems on the shoulders of gia...
apidays LIVE Australia - Building distributed systems on the shoulders of gia...apidays LIVE Australia - Building distributed systems on the shoulders of gia...
apidays LIVE Australia - Building distributed systems on the shoulders of gia...
 
Google App Engine Developer - Day3
Google App Engine Developer - Day3Google App Engine Developer - Day3
Google App Engine Developer - Day3
 
Flux and InfluxDB 2.0 by Paul Dix
Flux and InfluxDB 2.0 by Paul DixFlux and InfluxDB 2.0 by Paul Dix
Flux and InfluxDB 2.0 by Paul Dix
 
Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010
 
Hadoop Integration in Cassandra
Hadoop Integration in CassandraHadoop Integration in Cassandra
Hadoop Integration in Cassandra
 
Aimaf
AimafAimaf
Aimaf
 

Hazelcast