Infinispan

1,332 views
1,216 views

Published on

quick introduction to Infinispan, JBug Roma and Jug Sardegna

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

  • Be the first to like this

No Downloads
Views
Total views
1,332
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Infinispan

  1. 1. Non puoi evitare le Cloud ● Le cloud in ogni forma ● Come SaaS, PaaS, IaaS ● Ovunque ● Pubbliche: Amazon, Google, GoGrid, RackSpace ● Private: Eucalyptus, VMWare, IBM ● Datacenter tradizionali ● Mercato di nicchia ● Le cloud come mainstream
  2. 2. Dati sulla cloud ● Nuovi pattern architetturali ● Le macchine sono stateless, effimere ● IP dinamici ● Servizi dinamici ● Database sono problematici ● Storage tradizionali non si adattano alla cloud ● Scalabilità ● I database sono ancora il bottleneck ● ...e single point of failure!
  3. 3. Soluzione: Data Grids! ● Data Grids sono perfetti per le cloud: ● Fortemente scalabili ● Nessun single point of failure ● Si adatta ai nodi effimeri ● Latenza molto bassa ● Data Grids: ● Amazon SimpleDB usa Dynamo ● Infinispan, etc.. ● Altre offerte commerciali e open source
  4. 4. Soluzione: Data Grids! ● Veloci! ● Latenza minima, uso minimale dei dischi ● La memoria è due ordini di grandezza più veloce ● Accesso concorrente ottimizzato ● IO su disco è sempre un impedimento alla concorrenza ● La memoria è più adatta all'uso concorrente
  5. 5. ● Highly scalable data grid platform ● 100% open source licensed (LGPL) ● Based on some JBoss Cache code ● But mostly all-new! ● JBoss Cache is a clustered caching library ● Infinispan is a data grid platform ● JBoss Cache uses a tree-structured API ● Infinispan is a Map. Like JSR-107’s JCACHE
  6. 6. Complicato?
  7. 7. Tutti conoscono Map<?,?> CacheManager cm = new DefaultCacheManager("infin-cfg.xml"); Cache cache1 = cm.getCache("cache1"); Map distMap = cache1; distMap.put( "chiave", "valore" ); distMap.get( "altraChiave" ); ConcurrentMap concurrentDistMap = cm.getCache("cache2"); concurrentDistMap.replace( "k", "atteso", "nuovo" );
  8. 8. Map, arricchito CacheManager cm = new DefaultCacheManager("infi-cfg.xml"); Cache cache1 = cm.getCache("cache1"); cache1.addListener( arg0 ); cache1.putAsync( arg0, arg1 ); cache1.removeAsync( arg0 ); cache1.startBatch(); AdvancedCache advancedCache = cache1.getAdvancedCache(); advancedCache.withFlags( Flag.SKIP_REMOTE_LOOKUP ) .put( arg0, arg1 );
  9. 9. Caratteristiche ● Strutture interne efficienti ● CAS totale ● Synchronized assente ● Contenitori di dati naturalmete ordinate – Molto efficiente per gestire policy di eviction ● Serializzazione ottimizzata ● JBoss Marshalling – payloads minimali + poolable streams
  10. 10. Ereditati da JBoss Cache ● JTA transactions ● Replicated data structure ● Eviction, cache persistence ● Notifications and eventing API ● JMX reporting ● Fine-grained replication ● MVCC locking ● Non-blocking state transfer techniques ● Query API ● Custom (non-JDK) marshalling
  11. 11. Nuove funzioni ● Consistent hash based data distribution ● Map API semplicissima (JSR-107 compliant) ● modulo compatibile memcached Client/server ● REST API ● Non limitata a piattaforme JVM ● Console di management basata su JOPR ● Distributed executors ● Map/reduce programming model made easy!
  12. 12. Cache distribuita ● Consistent hash based data distribution ● Permette di scalare su cluster grandi ● Test in corso su cluster di migliaia di nodi ● Cache locale “L1” per letture migliorate ● Invalidazione distribuita ● Ribilanciamento dinamico ● Non presenta single-point-of-failure
  13. 13. Memoria condivisa
  14. 14. Storage esterno
  15. 15. Storage esterno
  16. 16. Configurazioni Avanzate <?xml version="1.0" encoding="UTF-8"?> <infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:infinispan:config:4.0 http://www.infinispan.org/schemas/infinispan-config- 4.0.xsd" xmlns="urn:infinispan:config:4.0" /> <infinispan />
  17. 17. Configurazioni Avanzate Esempio: Scarlet
  18. 18. Come partecipare? ● Provalo! ● Segnala problemi: non solo nel codice ● Suggerisci nuove feature ● Testa i tuoi casi d'uso particolari ● E raccontaceli ● Collabora con lo sviluppo ● Sviluppo open e democratico ● Priorità discusse pubblicamente ● Già alcuni committer “core” esterni a Red Hat

×