Hazelcastin-memory data grid
Agenda•   Introdução•   Mercado•   Particionamento dos dados•   Funcionalidades•   Integrações•   Enterprise Edition•   De...
Hazelcast• In-memory Data Grid (IMDG):  –   Dados distribuídos e particionados;  –   Altamente disponíveis;  –   Sem inter...
java.util.MapLocal                       Distribuídoimport java.util.Map;       import java.util.Map;import java.util.Hash...
Soluções no MercadoOpen source           Comercial• Hazelcast           • Oracle Coherence• JBoss Infinispan    • IBM WebS...
Particionamento dos dados
Funcionalidades• Persistence   – write-through   – write-behind   – read-throughcom.hazelcast.core.MapStore    – loadAllKe...
Funcionalidades• NIO                 • Backup• Eviction            • Distributed Query                         – SqlPredic...
IntegraçõesSpring                    Hibernate• Configuração            • Second level cache• Contexto• Cache (JSR-107)   ...
Map (List, Set, MultiMap)import com.hazelcast.core.Hazelcast;import java.util.Map;import java.util.Collection;Map<String, ...
Distributed Lockimport com.hazelcast.core.Hazelcast;import java.util.concurrent.locks.Lock;Lock lock = Hazelcast.getLock(m...
Distributed Queryimport com.hazelcast.core.IMap;import com.hazelcast.query.SqlPredicate;IMap map = Hazelcast.getMap("emplo...
Enterprise Edition• Elastic Memory  – Possível utilizar memória além da heap• JAAS• C# client• Management Center  – Gratui...
Demonstraçãohttps://github.com/brunolellis/hazelcast-demo
ConclusãoHibernate + Cache segundo nível   DAO (java.util.Map) + MapStore
Referências• http://www.hazelcast.com/files/hazelcast-  presentation.pdf• http://hazelcast.com/docs/2.2/manual/single  _ht...
Links interessantes• Gartner Selected Hazelcast as a “Cool Vendor”• Mozilla: Caching and processing 2TB on 50  Node Hazelc...
Bruno Lellis• http://about.me/brunolellis
Upcoming SlideShare
Loading in …5
×

Hazelcast

814 views

Published on

Apresentação e demonstração do uso do Hazelcast como cache distribuído

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
814
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Cluster Member:5 milhões de objetos com 5 nós no cluster: cadanóterá 1 milhão de objetos + 1 milhão de objetos-backupSuperClient: como um membro do cluster, mas semarmazenamento de dadosdeveestar no mesmo datacenter (cluster overhead)Native client (Java, C#)escalamelhor com baixo overheadregrageraléutilizar native client paradepoistestarSuperClientAcesso via memcache e REST
  • Persistencewrite-through (síncrono): certeza das seguintesaçõesocorrerem no momento do map.put(key, value): MapStore.store(key, value)chamado com sucesso; item namemóriaatualizado; Itens de backup propagados.write-behind (assíncrono):Item namemóriaatualizado;Itens de backup propagados;Item marcadocomo “dirty” e, após write-delay-seconds serápersistido;read-through: se map.get(key) for null, carrega do MapLoaderMapLoader.loadAllKeys(): utilizadoparapré-carregar a cache no primeiroacesso (Hazelcast.getMap(“mymap”))Se retornar “null”, nada serácarregado;Possibilidade de retornartodas as chavesouapenas as maisutilizadas;Forma maisrápida de carregar a cache, poiscadanóseráresponsávelporsua “porção” de chaves;
  • NIOEviction LRU (least recently used – remove o maisantigo)LFU (least frequently used – remove o menosutilizado – problema?)Time-to-live-seconds (independente do algoritmo, se for diferente de 0, itensmaisvelhosserãoremovidos)BackupPossibilidade de configurarquantascópiasserãodistribuídas entre osnós de forma e de que forma (síncronaouassíncrona)Distributed QueryPossibilidade de fazer um “select” em um Imap, suportaalgumassintaxes do SQL (AND, OR, expressões =, !=, &gt;, &lt;, IN, LIKE, BETWEEN;Tambémpossui API semelhante a JPA;Cadanóvaiprocessar a query;Adicionaríndiceagilizamuito a busca, mas afeta a escrita, comoembanco de dados.Near CacheSe um membroestálendo o item k muitasvezes, entãoépossívelevitartodoestetráfego da redetrazendo o item k paraestemembro;Algumasobservações: JVM vaiter dados “extras” armazenados; detalhes com invalidação e consistência;Entry StatisticsVáriasinformaçõessobrecada item do Map
  • Hazelcast

    1. 1. Hazelcastin-memory data grid
    2. 2. Agenda• Introdução• Mercado• Particionamento dos dados• Funcionalidades• Integrações• Enterprise Edition• Demonstração
    3. 3. Hazelcast• In-memory Data Grid (IMDG): – Dados distribuídos e particionados; – Altamente disponíveis; – Sem interrupções; – “shared nothing”• Dados distribuídos: – List, Set, Map e MultiMap; – Lock; – Queue e Topic.
    4. 4. java.util.MapLocal Distribuídoimport java.util.Map; import java.util.Map;import java.util.HashMap; import com.hazelcast.core.Hazelcast;Map map = new HashMap(); Map map = Hazelcast.getMap(“mymap”);map.put(“1”, “value”); map.put(“1”, “value”);map.get(“1”); map.get(“1”);
    5. 5. Soluções no MercadoOpen source Comercial• Hazelcast • Oracle Coherence• JBoss Infinispan • IBM WebSphere eXtreme Scale
    6. 6. Particionamento dos dados
    7. 7. Funcionalidades• Persistence – write-through – write-behind – read-throughcom.hazelcast.core.MapStore – loadAllKeys(); – loadAll(keys); – load(key); – store(key, value); – delete(key);
    8. 8. Funcionalidades• NIO • Backup• Eviction • Distributed Query – SqlPredicate – LRU – Indexing – LFU • Near Cache – time-to-live • Entry Statistics
    9. 9. IntegraçõesSpring Hibernate• Configuração • Second level cache• Contexto• Cache (JSR-107) – @Cacheable – @CacheEvict
    10. 10. Map (List, Set, MultiMap)import com.hazelcast.core.Hazelcast;import java.util.Map;import java.util.Collection;Map<String, Customer> mapCustomers =Hazelcast.getMap("customers");mapCustomers.put("1", new Customer("Joe", "Smith"));mapCustomers.put("2", new Customer("Ali", "Selam"));mapCustomers.put("3", new Customer("Avi", "Noyan"));Collection<Customer> colCustomers = mapCustomers.values();for (Customer customer : colCustomers) { // process customer}
    11. 11. Distributed Lockimport com.hazelcast.core.Hazelcast;import java.util.concurrent.locks.Lock;Lock lock = Hazelcast.getLock(myLockedObject);lock.lock();try { // do something here} finally { lock.unlock();}
    12. 12. Distributed Queryimport com.hazelcast.core.IMap;import com.hazelcast.query.SqlPredicate;IMap map = Hazelcast.getMap("employee");SqlPredicate sql = new SqlPredicate("activeAND age < 30");Set<Employee> employees = (Set<Employee>)map.values(sql);
    13. 13. Enterprise Edition• Elastic Memory – Possível utilizar memória além da heap• JAAS• C# client• Management Center – Gratuito para até 2 nós
    14. 14. Demonstraçãohttps://github.com/brunolellis/hazelcast-demo
    15. 15. ConclusãoHibernate + Cache segundo nível DAO (java.util.Map) + MapStore
    16. 16. Referências• http://www.hazelcast.com/files/hazelcast- presentation.pdf• http://hazelcast.com/docs/2.2/manual/single _html• http://highscalability.com/blog/2011/12/21/i n-memory-data-grid-technologies.html
    17. 17. Links interessantes• Gartner Selected Hazelcast as a “Cool Vendor”• Mozilla: Caching and processing 2TB on 50 Node Hazelcast Cluster• Running 100 Node Hazelcast Cluster on Amazon EC2• www.github.com/hazelcast
    18. 18. Bruno Lellis• http://about.me/brunolellis

    ×