{"id":1161,"date":"2012-04-13T08:05:59","date_gmt":"2012-04-13T07:05:59","guid":{"rendered":"http:\/\/www.alpesjug.fr\/?p=1161"},"modified":"2012-05-16T15:59:40","modified_gmt":"2012-05-16T14:59:40","slug":"compte-rendu-de-la-soiree-datagrid-et-distributed-cache-avec-infinispan","status":"publish","type":"post","link":"https:\/\/www.alpesjug.fr\/?p=1161","title":{"rendered":"Compte rendu de la soir\u00e9e DataGrid et Distributed Cache avec Infinispan"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Galder Zamarre\u00f1o a l'AlpesJUG\" src=\"http:\/\/p.twimg.com\/ApLPj-eCIAAn2Ok.jpg\" alt=\"Galder Zamarre\u00f1o a l'AlpesJUG\" width=\"360\" height=\"481\" \/>Le \u00a029 Mars, <a title=\"Galder Zamarreno's blog\" href=\"http:\/\/galder.zamarreno.com\/\">Galder Zamarre\u00f1o<\/a> qui travaille pour JBoss\/Red-Hat est venu nous parler de DataGrid et de Cache Distribu\u00e9 avec <a title=\"Infinispan, a JBoss project\" href=\"http:\/\/www.jboss.org\/infinispan\">Infinispan<\/a> un produit JBoss \/ Red-Hat, \u00e0 l&rsquo;Alpes JUG.<\/p>\n<p>Galder est d&rsquo;orgine Basque, habite en Suisse, comprend et parle le Fran\u00e7ais, mais pr\u00e9f\u00e8re faire sa pr\u00e9sentation en Anglais, car il est plus \u00e0 l&rsquo;aise pour parler de sujets techniques avec le vocabulaire utilis\u00e9 tous les jours dans son travail.<\/p>\n<p>Mais qu&rsquo;est-ce qu&rsquo;Infinispan ? C&rsquo;est une plateforme open source de Data-Grid en m\u00e9moire, hautement disponible et \u00e9lastique. Galder nous explique qu&rsquo;Infinispan est inspir\u00e9 du projet Dynamo d&rsquo;Amazon, et est en fait un cache en m\u00e9moire pour am\u00e9liorer les performances des applications quand les donn\u00e9es sont co\u00fbteuses \u00e0 r\u00e9cup\u00e9rer ou \u00e0 calculer. Le cache fonctionne sous forme de paires Cl\u00e9 &#8211; Valeur et offre des services suppl\u00e9mentaires par rapport \u00e0 une simple ConcurrentHashMap entre autres, la possibilit\u00e9 de d\u00e9finir une dur\u00e9e de vie pour les donn\u00e9es dans le cache, le support de Java Transaction Architecture (JTA) et le choix de l&rsquo;algorithme d&rsquo;\u00e9viction du cache. Infinispan est conforme au JSR 107 (JCache) et Context and Dependancy Injection (CDI, JSR 299), ce qui facilite son utilisation dans les applications. De plus, il offre une API REST pour une utilisation d\u00e9coupl\u00e9e de l&rsquo;application.<\/p>\n<p>Galder nous fait une d\u00e9monstration de l&rsquo;utilisation du cache Infinispan sur un seul noeud, avec une application basique de billetterie de concerts.<\/p>\n<p>Puis il nous explique que les op\u00e9rations du cache peuvent participer aux transactions, et qu&rsquo;il existe plusieurs modes: un mode optimiste pour des transactions avec peu de contention qui acqui\u00e8re un verrou lors de la phase Prepare de la transaction, et un mode Pessimiste avec plus de contention qui acqui\u00e8re le verrou \u00e0 chaque \u00e9criture dans le cache.\u00a0Les transactions distribu\u00e9es permettent\u00a0de garantir la coh\u00e9rence des donn\u00e9es lorsque InfiniSpan est utilis\u00e9 comme base de donn\u00e9es,\u00a0mais si il est utilis\u00e9 comme simple cache, on peut faire une simple synchronisation, c&rsquo;est \u00e0 dire une mise \u00e0 jour du cache asynchrone hors de la transaction applicative.<\/p>\n<p>Mais l&rsquo;int\u00e9r\u00eat d&rsquo;Infinispan se trouve dans la distribution et la mise en cluster du cache, pour maintenir la\u00a0coh\u00e9rence\u00a0d&rsquo;un cache entre plusieurs applications, comme par exemple le cache de Sessions de JBoss. Galder nous raconte que Infinispan s&rsquo;appuie sur JGroups, un projet et une technologie d\u00e9velopp\u00e9s par Red-Hat, pour la communication et la synchronisation des donn\u00e9es entre les caches. Il existe plusieurs modes: une r\u00e9plication totale o\u00f9 toutes les donn\u00e9es se trouvent sur tous les noeuds, mais aussi une replication partielle avec une distribution bas\u00e9e sur le \u00ab\u00a0Consistent Hashing\u00a0\u00bb, un algorithme qui fournit une distribution rapide, d\u00e9terministe quelque soit le nombre de noeuds, et qui supporte les topologies.<\/p>\n<p>Pour illustrer ces capacit\u00e9s, Galder nous fait une nouvelle d\u00e9monstration avec un service \u00e0 base de plusieurs caches en clusters (sur la m\u00eame machine mais des ports diff\u00e9rents).<\/p>\n<p>La soir\u00e9e avance et Galder continue avec les fonctions avanc\u00e9es d&rsquo;Infinispan : support des indexes en s&rsquo;appuyant sur Hibernate Search (et Apache Lucene), la possibilit\u00e9 de d\u00e9finir des \u00ab\u00a0Executors\u00a0\u00bb distribu\u00e9s, et donc faire du \u00ab\u00a0Map \/ Reduce\u00a0\u00bb. Il nous parle bri\u00e8vement d&rsquo;Hibernate OGM qu&rsquo;Emmanuel Bernard nous <a title=\"Hibernate OGM a l'AlpesJUG\" href=\"http:\/\/www.alpesjug.fr\/?p=853\">avait pr\u00e9sent\u00e9 en Juin 2011<\/a>, avant de finir sa pr\u00e9sentation par une session de questions &#8211; r\u00e9ponses, avec un public int\u00e9ress\u00e9 et satisfait.<\/p>\n<p>Merci Galder pour cette belle session \u00e0 l&rsquo;AlpesJUG.<\/p>\n<p>Le\u00a0<a title=\"Infinispan slides (PDF)\" href=\"http:\/\/dl.dropbox.com\/u\/6148072\/caches-datagrids-infinispan.pdf\">support de pr\u00e9sentation<\/a>\u00a0et les\u00a0<a title=\"Infinispan Labs code on Github\" href=\"https:\/\/github.com\/infinispan\/infinispan-labs\">examples de code<\/a>\u00a0sont en ligne.<\/p>\n<p>PS : <a href=\"http:\/\/infinispan.blogspot.fr\/2012\/04\/thanks-alpes-jug-next-stop-miracle-open.html\">le compte-rendu de Galder sur sa pr\u00e9sentation<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le \u00a029 Mars, Galder Zamarre\u00f1o qui travaille pour JBoss\/Red-Hat est venu nous parler de DataGrid et de Cache Distribu\u00e9 avec Infinispan un produit JBoss \/ Red-Hat, \u00e0 l&rsquo;Alpes JUG. Galder est d&rsquo;orgine Basque, habite&#46;&#46;&#46;<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[13,4,53,366],"class_list":["post-1161","post","type-post","status-publish","format-standard","hentry","category-compte-rendu","tag-framework","tag-jug","tag-opensource","tag-slides"],"_links":{"self":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1161"}],"version-history":[{"count":15,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1161\/revisions"}],"predecessor-version":[{"id":1182,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/1161\/revisions\/1182"}],"wp:attachment":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}