SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
Data Grid Platform
인피니스팬 소개와 사용 사례

전 재 홍 / Jaehong Cheon
9 Nov 2013
Agenda





Data Grid
Infinispan
Case Study
References
Data Grid
Data Grid
 Distributed Cache with persistence
–
–
–
–
–

Performance Boost
Dynamic provisioning
Fast access to data (in memory) - optionally write-through
Elasticity
Fault tolerance

 Data Grid
– Evolution of distributed caches
– Well-known pattern to boost data access performance and
scalability
– Clustered by nature
Cache vs. Data Grid
 JSR 107 - Temporary Caching for the Java Platform
– read, write, expiry, write-through, distributed-manner
– JBoss Cache

 JSR 347 - Data Grids for the Java Platform
– query, consistency, map-reducing standard way
– Infinispan
Infinispan
Infinispan








Distributed In-memory key/value Data Grid/ Cache
org.infinispan.Cache Interface
Distributed as Library and Server (from 5.3)
High availability
Elastic
Manageable
Open source

DefaultCacheManager manager = new DefaultCacheManager();
// Cache<Integer, Ticket> cache = manager.getCache();
Cache<Integer, Ticket> cache = manager.getCache(“myCache”);
Architecture: Library
Library Mode - standalone

Infinispan

App

JVM

JCP-107 Style Cache
just cache with advantages: expiry, j2ee transaction
Architecture: Library (Clustered)
 Use as library

Library Mode - clustered
Infinispan

– More features
– Richer APIs
– Programmatic/
Declarative
configuration
– Extendable/
embeddable
– Faster (API call)

App

JVM

Infinispan

App

Cluster

JVM
Infinispan

App

JVM

Application doesn’t know it’s on cluster
Architecture: Server
Server Mode - clustered

 Use as server

Infinispan

JVM
App

App

Infinispan

Cluster

JVM
Infinispan
App

JVM

– Remote
 Memcached, R
EST, Hot Rod,
WebSocket

– Data tier shared
by multi-apps
– App doesn’t affe
ct cluster
– Non-java clients
 C++, .NET, Rub
y, Python, Java
Architecture: Durability
Durability

 Durability
Infinispan
JVM

Cluster
Infinispan
JVM

Infinispan
JVM

Infinispan
JVM

Cluster
persistence

– By replication
– By persistence
– By replication to
other cluster
(topology aware)
Infinispan: Key Features





Transactions
Persistence
Querying
Map/Reduce
Clustering
 Peer-to-Peer
– No central master, no single point of failure, no single bottle
neck

 JGroups
– Reliable multicast communication library, nodes discovery,
sharing data, performing cluster scaling

 Consistent Hash
– Hash based data distribution
– How it finds where data locates

 Linear in nature: throughput, capacity
 Cluster Mode
Cluster Mode: Replication(복제)
Replication Mode
cache.put(K,V)

Cache on
Server 2 K,V

Cache on
Server 1 K,V

Cache on
Server 3 K,V

Cache on
Server 4 K,V
Cluster Mode: Distribution(분산)
Distribution Mode(numOwners=2)
cache.put(K,V)

Cache on
Server 1 K,V

cache.get(K,V)

Cache on
Server 2 K,V

Cache on
Server 3

Cache on
Server 4
Cluster Mode: Invalidation(무효화)
Invalidation Mode
cache.put(K,V2)

Cache on
Server 1 K,V2

Cache on
Server 2 K,V

Cache on
Server 3

Cache on
Server 4

DB
Configuration: Declarative
<global>
<transport clusterName="OperationsCacheCluster">
<properties>
<property name="configurationFile“
value="jgroups-tcp.xml" />
</properties>
</transport>
<globalJmxStatistics enabled="true" />
</global>
<default>
<clustering mode="replication">
<sync />
</clustering>
</default>

<namedCache name="secureLayerContextCache">
<eviction strategy="LIRS" maxEntries="2000" />
<expiration lifespan="600000" />
<loaders passivation="true" shared="false" preload="false">
<fileStore fetchPersistentState="true" purgerThreads="3"
purgeSynchronously="true" ignoreModifications="false"
purgeOnStartup="false" location="${java.io.tmpdir}">
<async />
</fileStore>
</loaders>
</namedCache>

 Eviction(제거)
 Expiration(만료)
– on cache
– on key
Configuration: Programmatic
 Configuration Based on XML
DefaultCacheManager manager = new DefaultCacheManager("infinispan-config.xml");
Configuration baseConf = manager.getDefaultCacheConfiguration();
Configuration config =new ConfigurationBuilder().
read(baseConf).expiration().lifespan(50000).build();
manager.defineConfiguration(programmaticCache, config);
Cache<String, String> cache = manager.getCache("secureLayerContextCache");

 Programmatic configuration
DefaultCacheManager manager = new DefaultCacheManager();
Configuration config = new ConfigurationBuilder()
.loaders()
.shared(false).passivation(false).preload(false)
.addCacheLoader()
.cacheLoader(new JdbcStringBasedCacheStore())
.addProperty("connectionFactoryClass","org.infinispan.loaders.jdbc
.connectionfactory.ManagedConnectionFactory")
.addProperty("datasourceJndiLocation", "java:jboss/datasources/MySQLDS")
.addProperty("userName", "root")
.addProperty("password", "admin")
.async().threadPoolSize(10).build();
manager.defineConfiguration(programmaticCache, config);
Cache<String, String> cache = manager.getCache("secureLayerContextCache");
Listener
 Listener on CacheManager
– Node join/ leave, Cache start/ stop

 Cache
– CRUD, Eviction/ Passivation
– Rehashing/ Transaction completion
@Listener
public class SimpleListener {
@CacheEntryCreated
public void dataAdded(CacheEntryCreatedEvent event) {
if (event.isPre()) {
System.out.println("Before creating the entry:" + event.getKey());
} else {
System.out.println("After creating the entry:" + event.getKey());
}
…
}

DefaultCacheManager manager = new DefaultCacheManager();
manager.addListener(listener);
Cache<Integer, Ticket> cache = manager.getCache();
cache.addListener(listener);
Asynchronous APIs
 put() and get() and remove() are synchronous
– They wait for RPC and Locks (and maybe cache stores)

 The asynchronous API returns NotifyingFuture
– Events are fired on completion of the operation
NotifyingFuture<String> future = c.removeAsync(key);
future.attachListener(new FutureListener<String>() {
@Override
public void futureDone(Future<String> future) {
try {
future.get();
System.out.printf ("The entry stored under key %s has been removed.", key);
} catch (ExecutionException e) {
System.out.printf("Failed to remove %s!", key);
}
}
});
Key Features: Persistence
 Used for durability
 Cache Store - Persistence Storage
– File System, Cloud, Remote, JDBC, JPA, LevelDB, Cassandra,
– HBase, MongoDB, BerkeleyDB, JDBM, REST







CacheLoader, CacheStore(CacheWriter from 6.0)
Write-through, write-behind
Passivation, activation
Store chain
Shared store
Persistence: Passivation/Activation
 Passivation – write to persistence when evicted from
memory (default)
 Activation – read to memory and remove from
persistence
Key Features: Transactons
 JTA Transaction Support
 Support MVCC (Multi-Versioned Concurrency Control)
 Isolation Level
– READ_COMMITTED (default)
– REPEATABLE_READ

 Locking Mode
– Optimistic Lock (default)
– Pessimistic Lock
Key Features: Query
 JBoss Hibernate Search + Apache Lucene
 Query on values
 Index Directory
– Lucene Directory: in-memory, file system, JDBC
– Infinispan Directory

 Distributed queries
Distributed Execution
 Executes codes on distributed nodes
 Through a standard JDK ExecutorService interface
 Use DistributedCallable extends
java.util.concurrent.Callable
Key Features: Map/Reduce
 Based on Distributed Execution Framework
 Mapper, Reducer, Collator, MapReduceTask
public interface Mapper<KIn, VIn, KOut, VOut> extends Serializable {
void map(KIn key, VIn value, Collector<KOut, VOut> collector);
}
public interface Reducer<KOut, VOut> extends Serializable {
VOut reduce(KOut reducedKey, Iterator<VOut> iter);
}
public interface Callator<KOut, Vout, R> {

R collate(Map<KOut, VOut>);
}
Client
Monitoring/Management
 Mbeans on CacheManager, Cache
 RHQ (JON, JBoss Operations Network)
Spring Integration
 Infinispan provider for Spring cache abstraction
 infinispan-spring.jar
<cache:annotation-driven cache-manager="operationCacheManager"/>
<bean id="operationCacheManager"
class="org.infinispan.spring.provider.SpringEmbeddedCacheManagerFactoryBean"
p:configurationFileLocation="classpath:infinispan-config.xml" />
@Cacheable(value = "secureLayerContextCache", key="#contextId")
public SecureLayerContext getSecureLayerContext(String contextId) {
return null;
}

@CachePut(value = "secureLayerContextCache", key="#contextId")
public SecureLayerContext setSecureLayerContext(String contextId,
SecureLayerContext secureLayerContext) {
return secureLayerContext;
}
@CacheEvict(value = "secureLayerContextCache", key="#contextId")
public void removeSecureLayerContext(String contextId) {
// Intentionally blank
}
Infinispan on Jboss AS 7
 Used for session clustering, Hibernate L2 cache
 Application gets cache with JNDI name using
@Resource
 XML Configuration in server configuration file
<cache-container name="web" aliases="standard-session-cache" default-cache="repl">
<transport lock-timeout="60000" />
<replicated-cache name="repl" mode="ASYNC" batching="true">
<file-store />
</replicated-cache>
</cache-container>
JDG





Red Hat JBoss Data Grid
Infinispan-based
JON
All the benefits of
subscription, including
Red Hat world class
support and services
Radar Gun
 Data grid and distributed cache benchmarking
framework
 Built to test Infinispan and other distributed data grid
platforms
 https://github.com/radargun/radargun
Case Study
Case Study: Session Clustering

 Store session information into cache
in Spring MVC Interceptor
Case Study: Session Clustering
Store session information into cache
in Spring Security Filter
-

-

SecurityContextRepository를 구현한
CacheSecurityContextRepository 작성
loadContext, saveContext를 오버라이드하여
인피니스팬 사용
Spring cache abstraction 사용
Use Cases: Storm Processing State Store

Infinispan Data Grid
References
www.acornpub.co.kr/book/infinispan
infinispan.org
blog.infinispan.org
infinispan-ko.blogspot.com
facebook.com/groups/infinispan
red.ht/data-grid
tedwon.com/display
/dev/Infinispan+Data+Grid
 cbcpascal.blogspot.kr







jbugkorea.org

Contenu connexe

Tendances

[B5]memcached scalability-bag lru-deview-100
[B5]memcached scalability-bag lru-deview-100[B5]memcached scalability-bag lru-deview-100
[B5]memcached scalability-bag lru-deview-100NAVER D2
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바NeoClova
 
PostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication CheatsheetPostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication CheatsheetAlexey Lesovsky
 
plProxy, pgBouncer, pgBalancer
plProxy, pgBouncer, pgBalancerplProxy, pgBouncer, pgBalancer
plProxy, pgBouncer, pgBalancerelliando dias
 
Oracle: Binding versus caging
Oracle: Binding versus cagingOracle: Binding versus caging
Oracle: Binding versus cagingBertrandDrouvot
 
Proxysql sharding
Proxysql shardingProxysql sharding
Proxysql shardingMarco Tusa
 
My sql monitoring cu沙龙
My sql monitoring cu沙龙My sql monitoring cu沙龙
My sql monitoring cu沙龙colderboy17
 
Xtrabackup工具使用简介 - 20110427
Xtrabackup工具使用简介 - 20110427Xtrabackup工具使用简介 - 20110427
Xtrabackup工具使用简介 - 20110427Jinrong Ye
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQLI Goo Lee
 
Building better Node.js applications on MariaDB
Building better Node.js applications on MariaDBBuilding better Node.js applications on MariaDB
Building better Node.js applications on MariaDBMariaDB plc
 
Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer Sameer Kumar
 
MySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesMySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesLenz Grimmer
 
ACADGILD:: HADOOP LESSON
ACADGILD:: HADOOP LESSON ACADGILD:: HADOOP LESSON
ACADGILD:: HADOOP LESSON Padma shree. T
 
MySQL Replication: Demo Réplica en Español
MySQL Replication: Demo Réplica en EspañolMySQL Replication: Demo Réplica en Español
MySQL Replication: Demo Réplica en EspañolKeith Hollman
 
The Essential postgresql.conf
The Essential postgresql.confThe Essential postgresql.conf
The Essential postgresql.confRobert Treat
 
Top5 scalabilityissues withappendix
Top5 scalabilityissues withappendixTop5 scalabilityissues withappendix
Top5 scalabilityissues withappendixColdFusionConference
 
Proxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteProxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteMarco Tusa
 
A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)Nati Shalom
 

Tendances (20)

[B5]memcached scalability-bag lru-deview-100
[B5]memcached scalability-bag lru-deview-100[B5]memcached scalability-bag lru-deview-100
[B5]memcached scalability-bag lru-deview-100
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
 
PostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication CheatsheetPostgreSQL Streaming Replication Cheatsheet
PostgreSQL Streaming Replication Cheatsheet
 
plProxy, pgBouncer, pgBalancer
plProxy, pgBouncer, pgBalancerplProxy, pgBouncer, pgBalancer
plProxy, pgBouncer, pgBalancer
 
Oracle: Binding versus caging
Oracle: Binding versus cagingOracle: Binding versus caging
Oracle: Binding versus caging
 
Proxysql sharding
Proxysql shardingProxysql sharding
Proxysql sharding
 
My sql monitoring cu沙龙
My sql monitoring cu沙龙My sql monitoring cu沙龙
My sql monitoring cu沙龙
 
Xtrabackup工具使用简介 - 20110427
Xtrabackup工具使用简介 - 20110427Xtrabackup工具使用简介 - 20110427
Xtrabackup工具使用简介 - 20110427
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQL
 
Building better Node.js applications on MariaDB
Building better Node.js applications on MariaDBBuilding better Node.js applications on MariaDB
Building better Node.js applications on MariaDB
 
Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer Connection Pooling in PostgreSQL using pgbouncer
Connection Pooling in PostgreSQL using pgbouncer
 
MySQL Backup and Security Best Practices
MySQL Backup and Security Best PracticesMySQL Backup and Security Best Practices
MySQL Backup and Security Best Practices
 
ACADGILD:: HADOOP LESSON
ACADGILD:: HADOOP LESSON ACADGILD:: HADOOP LESSON
ACADGILD:: HADOOP LESSON
 
hadoop
hadoophadoop
hadoop
 
MySQL Replication: Demo Réplica en Español
MySQL Replication: Demo Réplica en EspañolMySQL Replication: Demo Réplica en Español
MySQL Replication: Demo Réplica en Español
 
Broker otw.pptx
Broker otw.pptxBroker otw.pptx
Broker otw.pptx
 
The Essential postgresql.conf
The Essential postgresql.confThe Essential postgresql.conf
The Essential postgresql.conf
 
Top5 scalabilityissues withappendix
Top5 scalabilityissues withappendixTop5 scalabilityissues withappendix
Top5 scalabilityissues withappendix
 
Proxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteProxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynote
 
A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)A Groovy Kind of Java (San Francisco Java User Group)
A Groovy Kind of Java (San Francisco Java User Group)
 

Similaire à 인피니스팬 데이터그리드 플랫폼

인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처Jaehong Cheon
 
인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)Jaehong Cheon
 
Infinispan @ Red Hat Forum 2013
Infinispan @ Red Hat Forum 2013Infinispan @ Red Hat Forum 2013
Infinispan @ Red Hat Forum 2013Jaehong Cheon
 
Think Distributed: The Hazelcast Way
Think Distributed: The Hazelcast WayThink Distributed: The Hazelcast Way
Think Distributed: The Hazelcast WayRahul Gupta
 
Distributed caching and computing v3.7
Distributed caching and computing v3.7Distributed caching and computing v3.7
Distributed caching and computing v3.7Rahul Gupta
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroOndrej Mihályi
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroPayara
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroPayara
 
Scalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseScalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseChristina Lin
 
JBoss AS Upgrade
JBoss AS UpgradeJBoss AS Upgrade
JBoss AS Upgradesharmami
 
An Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle CoherenceAn Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle CoherenceOracle
 
The Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache PegasusThe Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache Pegasusacelyc1112009
 
Speed it up and Spark it up at Intel
Speed it up and Spark it up at IntelSpeed it up and Spark it up at Intel
Speed it up and Spark it up at IntelDataWorks Summit
 
Leveraging Hadoop in your PostgreSQL Environment
Leveraging Hadoop in your PostgreSQL EnvironmentLeveraging Hadoop in your PostgreSQL Environment
Leveraging Hadoop in your PostgreSQL EnvironmentJim Mlodgenski
 
Hidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceHidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceSven Ruppert
 
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, AirbnbAirbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, AirbnbLucidworks
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration BackendArun Gupta
 

Similaire à 인피니스팬 데이터그리드 플랫폼 (20)

인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처인메모리 클러스터링 아키텍처
인메모리 클러스터링 아키텍처
 
인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)인피니스팬데이터그리드따라잡기 (@JCO 2014)
인피니스팬데이터그리드따라잡기 (@JCO 2014)
 
Infinispan @ Red Hat Forum 2013
Infinispan @ Red Hat Forum 2013Infinispan @ Red Hat Forum 2013
Infinispan @ Red Hat Forum 2013
 
Think Distributed: The Hazelcast Way
Think Distributed: The Hazelcast WayThink Distributed: The Hazelcast Way
Think Distributed: The Hazelcast Way
 
Distributed caching and computing v3.7
Distributed caching and computing v3.7Distributed caching and computing v3.7
Distributed caching and computing v3.7
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
Elastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara MicroElastic and Cloud-ready Applications with Payara Micro
Elastic and Cloud-ready Applications with Payara Micro
 
JCache Using JCache
JCache Using JCacheJCache Using JCache
JCache Using JCache
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Scalable Integration with JBoss Fuse
Scalable Integration with JBoss FuseScalable Integration with JBoss Fuse
Scalable Integration with JBoss Fuse
 
JBoss AS Upgrade
JBoss AS UpgradeJBoss AS Upgrade
JBoss AS Upgrade
 
An Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle CoherenceAn Engineer's Intro to Oracle Coherence
An Engineer's Intro to Oracle Coherence
 
The Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache PegasusThe Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache Pegasus
 
Speed it up and Spark it up at Intel
Speed it up and Spark it up at IntelSpeed it up and Spark it up at Intel
Speed it up and Spark it up at Intel
 
Leveraging Hadoop in your PostgreSQL Environment
Leveraging Hadoop in your PostgreSQL EnvironmentLeveraging Hadoop in your PostgreSQL Environment
Leveraging Hadoop in your PostgreSQL Environment
 
Java >= 9
Java >= 9Java >= 9
Java >= 9
 
Hidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-PersistenceHidden pearls for High-Performance-Persistence
Hidden pearls for High-Performance-Persistence
 
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, AirbnbAirbnb Search Architecture: Presented by Maxim Charkov, Airbnb
Airbnb Search Architecture: Presented by Maxim Charkov, Airbnb
 
GlassFish REST Administration Backend
GlassFish REST Administration BackendGlassFish REST Administration Backend
GlassFish REST Administration Backend
 

Dernier

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

인피니스팬 데이터그리드 플랫폼

  • 1.
  • 2. Data Grid Platform 인피니스팬 소개와 사용 사례 전 재 홍 / Jaehong Cheon 9 Nov 2013
  • 5. Data Grid  Distributed Cache with persistence – – – – – Performance Boost Dynamic provisioning Fast access to data (in memory) - optionally write-through Elasticity Fault tolerance  Data Grid – Evolution of distributed caches – Well-known pattern to boost data access performance and scalability – Clustered by nature
  • 6. Cache vs. Data Grid  JSR 107 - Temporary Caching for the Java Platform – read, write, expiry, write-through, distributed-manner – JBoss Cache  JSR 347 - Data Grids for the Java Platform – query, consistency, map-reducing standard way – Infinispan
  • 8. Infinispan        Distributed In-memory key/value Data Grid/ Cache org.infinispan.Cache Interface Distributed as Library and Server (from 5.3) High availability Elastic Manageable Open source DefaultCacheManager manager = new DefaultCacheManager(); // Cache<Integer, Ticket> cache = manager.getCache(); Cache<Integer, Ticket> cache = manager.getCache(“myCache”);
  • 9. Architecture: Library Library Mode - standalone Infinispan App JVM JCP-107 Style Cache just cache with advantages: expiry, j2ee transaction
  • 10. Architecture: Library (Clustered)  Use as library Library Mode - clustered Infinispan – More features – Richer APIs – Programmatic/ Declarative configuration – Extendable/ embeddable – Faster (API call) App JVM Infinispan App Cluster JVM Infinispan App JVM Application doesn’t know it’s on cluster
  • 11. Architecture: Server Server Mode - clustered  Use as server Infinispan JVM App App Infinispan Cluster JVM Infinispan App JVM – Remote  Memcached, R EST, Hot Rod, WebSocket – Data tier shared by multi-apps – App doesn’t affe ct cluster – Non-java clients  C++, .NET, Rub y, Python, Java
  • 14. Clustering  Peer-to-Peer – No central master, no single point of failure, no single bottle neck  JGroups – Reliable multicast communication library, nodes discovery, sharing data, performing cluster scaling  Consistent Hash – Hash based data distribution – How it finds where data locates  Linear in nature: throughput, capacity  Cluster Mode
  • 15. Cluster Mode: Replication(복제) Replication Mode cache.put(K,V) Cache on Server 2 K,V Cache on Server 1 K,V Cache on Server 3 K,V Cache on Server 4 K,V
  • 16. Cluster Mode: Distribution(분산) Distribution Mode(numOwners=2) cache.put(K,V) Cache on Server 1 K,V cache.get(K,V) Cache on Server 2 K,V Cache on Server 3 Cache on Server 4
  • 17. Cluster Mode: Invalidation(무효화) Invalidation Mode cache.put(K,V2) Cache on Server 1 K,V2 Cache on Server 2 K,V Cache on Server 3 Cache on Server 4 DB
  • 18. Configuration: Declarative <global> <transport clusterName="OperationsCacheCluster"> <properties> <property name="configurationFile“ value="jgroups-tcp.xml" /> </properties> </transport> <globalJmxStatistics enabled="true" /> </global> <default> <clustering mode="replication"> <sync /> </clustering> </default> <namedCache name="secureLayerContextCache"> <eviction strategy="LIRS" maxEntries="2000" /> <expiration lifespan="600000" /> <loaders passivation="true" shared="false" preload="false"> <fileStore fetchPersistentState="true" purgerThreads="3" purgeSynchronously="true" ignoreModifications="false" purgeOnStartup="false" location="${java.io.tmpdir}"> <async /> </fileStore> </loaders> </namedCache>  Eviction(제거)  Expiration(만료) – on cache – on key
  • 19. Configuration: Programmatic  Configuration Based on XML DefaultCacheManager manager = new DefaultCacheManager("infinispan-config.xml"); Configuration baseConf = manager.getDefaultCacheConfiguration(); Configuration config =new ConfigurationBuilder(). read(baseConf).expiration().lifespan(50000).build(); manager.defineConfiguration(programmaticCache, config); Cache<String, String> cache = manager.getCache("secureLayerContextCache");  Programmatic configuration DefaultCacheManager manager = new DefaultCacheManager(); Configuration config = new ConfigurationBuilder() .loaders() .shared(false).passivation(false).preload(false) .addCacheLoader() .cacheLoader(new JdbcStringBasedCacheStore()) .addProperty("connectionFactoryClass","org.infinispan.loaders.jdbc .connectionfactory.ManagedConnectionFactory") .addProperty("datasourceJndiLocation", "java:jboss/datasources/MySQLDS") .addProperty("userName", "root") .addProperty("password", "admin") .async().threadPoolSize(10).build(); manager.defineConfiguration(programmaticCache, config); Cache<String, String> cache = manager.getCache("secureLayerContextCache");
  • 20. Listener  Listener on CacheManager – Node join/ leave, Cache start/ stop  Cache – CRUD, Eviction/ Passivation – Rehashing/ Transaction completion @Listener public class SimpleListener { @CacheEntryCreated public void dataAdded(CacheEntryCreatedEvent event) { if (event.isPre()) { System.out.println("Before creating the entry:" + event.getKey()); } else { System.out.println("After creating the entry:" + event.getKey()); } … } DefaultCacheManager manager = new DefaultCacheManager(); manager.addListener(listener); Cache<Integer, Ticket> cache = manager.getCache(); cache.addListener(listener);
  • 21. Asynchronous APIs  put() and get() and remove() are synchronous – They wait for RPC and Locks (and maybe cache stores)  The asynchronous API returns NotifyingFuture – Events are fired on completion of the operation NotifyingFuture<String> future = c.removeAsync(key); future.attachListener(new FutureListener<String>() { @Override public void futureDone(Future<String> future) { try { future.get(); System.out.printf ("The entry stored under key %s has been removed.", key); } catch (ExecutionException e) { System.out.printf("Failed to remove %s!", key); } } });
  • 22. Key Features: Persistence  Used for durability  Cache Store - Persistence Storage – File System, Cloud, Remote, JDBC, JPA, LevelDB, Cassandra, – HBase, MongoDB, BerkeleyDB, JDBM, REST      CacheLoader, CacheStore(CacheWriter from 6.0) Write-through, write-behind Passivation, activation Store chain Shared store
  • 23. Persistence: Passivation/Activation  Passivation – write to persistence when evicted from memory (default)  Activation – read to memory and remove from persistence
  • 24. Key Features: Transactons  JTA Transaction Support  Support MVCC (Multi-Versioned Concurrency Control)  Isolation Level – READ_COMMITTED (default) – REPEATABLE_READ  Locking Mode – Optimistic Lock (default) – Pessimistic Lock
  • 25. Key Features: Query  JBoss Hibernate Search + Apache Lucene  Query on values  Index Directory – Lucene Directory: in-memory, file system, JDBC – Infinispan Directory  Distributed queries
  • 26. Distributed Execution  Executes codes on distributed nodes  Through a standard JDK ExecutorService interface  Use DistributedCallable extends java.util.concurrent.Callable
  • 27. Key Features: Map/Reduce  Based on Distributed Execution Framework  Mapper, Reducer, Collator, MapReduceTask public interface Mapper<KIn, VIn, KOut, VOut> extends Serializable { void map(KIn key, VIn value, Collector<KOut, VOut> collector); } public interface Reducer<KOut, VOut> extends Serializable { VOut reduce(KOut reducedKey, Iterator<VOut> iter); } public interface Callator<KOut, Vout, R> { R collate(Map<KOut, VOut>); }
  • 29. Monitoring/Management  Mbeans on CacheManager, Cache  RHQ (JON, JBoss Operations Network)
  • 30. Spring Integration  Infinispan provider for Spring cache abstraction  infinispan-spring.jar <cache:annotation-driven cache-manager="operationCacheManager"/> <bean id="operationCacheManager" class="org.infinispan.spring.provider.SpringEmbeddedCacheManagerFactoryBean" p:configurationFileLocation="classpath:infinispan-config.xml" /> @Cacheable(value = "secureLayerContextCache", key="#contextId") public SecureLayerContext getSecureLayerContext(String contextId) { return null; } @CachePut(value = "secureLayerContextCache", key="#contextId") public SecureLayerContext setSecureLayerContext(String contextId, SecureLayerContext secureLayerContext) { return secureLayerContext; } @CacheEvict(value = "secureLayerContextCache", key="#contextId") public void removeSecureLayerContext(String contextId) { // Intentionally blank }
  • 31. Infinispan on Jboss AS 7  Used for session clustering, Hibernate L2 cache  Application gets cache with JNDI name using @Resource  XML Configuration in server configuration file <cache-container name="web" aliases="standard-session-cache" default-cache="repl"> <transport lock-timeout="60000" /> <replicated-cache name="repl" mode="ASYNC" batching="true"> <file-store /> </replicated-cache> </cache-container>
  • 32. JDG     Red Hat JBoss Data Grid Infinispan-based JON All the benefits of subscription, including Red Hat world class support and services
  • 33. Radar Gun  Data grid and distributed cache benchmarking framework  Built to test Infinispan and other distributed data grid platforms  https://github.com/radargun/radargun
  • 35. Case Study: Session Clustering  Store session information into cache in Spring MVC Interceptor
  • 36. Case Study: Session Clustering Store session information into cache in Spring Security Filter - - SecurityContextRepository를 구현한 CacheSecurityContextRepository 작성 loadContext, saveContext를 오버라이드하여 인피니스팬 사용 Spring cache abstraction 사용
  • 37. Use Cases: Storm Processing State Store Infinispan Data Grid