Weitere ähnliche Inhalte
Ähnlich wie SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire (20)
Kürzlich hochgeladen (20)
SpringCamp 2016 - Apache Geode 와 Spring Data Gemfire
- 2. 2© 2015 Pivotal Software, Inc. All rights reserved. 2
Apache Geode 와
Spring
이창재 (jaylee@pivotal.io)| Pivotal | Advanced Platform Architects
April, 2016
- 3. 3© 2015 Pivotal Software, Inc. All rights reserved.
Agenda
Ÿ Apache Geode 소개
Ÿ Spring Data Gemfire
Ÿ Spring Session
Ÿ Demo
- 6. 6© 2015 Pivotal Software, Inc. All rights reserved.
Apache Geode 는?
open source distributed, in-
memory database for scale-out
applications
- 7. 7© 2015 Pivotal Software, Inc. All rights reserved.
Geode 는?
Ÿ 온라인으로 수평 확장이 가능한 고가용성 및 Low latency in-
memory Data Grid
Ÿ Key/Value (Map) Store (+ ααααααααα)
Ÿ Open Source
– 2015년 4월 Pivotal Gemfire 를 Apache 재단에 기증
– Project Geode
– 2016년 4월 현재 1.0.0-M2
- 8. 8© 2015 Pivotal Software, Inc. All rights reserved.
Geode - In Memory
Ÿ Data 를 메모리에 분산해서 저장
– JVM Heap
– Off Heap 사용 가능(defragmentation)
Ÿ Disk 에도 저장 가능
– Persistent
Ÿ Eviction 과 Expiration 지원
– Least Recently Used 기반 Eviction
– Time To Live 기반 Expiration
- 9. 9© 2015 Pivotal Software, Inc. All rights reserved.
Geode In-Memory 데이타 분산
VM 1
VM 2 VM 3
- 10. 10© 2015 Pivotal Software, Inc. All rights reserved.
Server 3Server 2
Bucket 3
*primary*
Bucket 1
secondary
Bucket 3
secondary
Bucket 2
*primary*
Server 1
Bucket 2
secondary
Bucket 1
*primary*
Geode In-Memory 데이타 분산 (Redundant = 1)
- 11. 11© 2015 Pivotal Software, Inc. All rights reserved.
Server 3Server 2
Bucket 3
*primary*
Bucket 1
secondary
Bucket 3
secondary
Bucket 2
*primary*
Server 1
Bucket 2
secondary
Bucket 1
*primary*
Geode In-Memory 데이타 분산 (Redundant = 1)
Server 가 죽으면?
- 12. 12© 2015 Pivotal Software, Inc. All rights reserved.
Server 1 Server 3Server 2
Bucket 2
secondary
Bucket 1
*primary*
Bucket 3
*primary*
Bucket 1
*primary*
Bucket 3
secondary
Bucket 2
*primary*
Bucket 2
secondary
Primary
Failover
Restore
Redundancy
Bucket 1
secondary
Geode In-Memory 데이타 분산 (Redundant = 1)
- 13. 13© 2015 Pivotal Software, Inc. All rights reserved.
Geode – PARTITION REGION
Ÿ REGION
– Database 의 Table
– 메모리에 분산되서 저장되는 java.util.Map
Ÿ REDUNDANT 를 가지는 것과 안가지는 것(PARTITION,
PARTITION_REDUNDANT)
– REDUNDANT 즉 Backup 의 갯수는 지정 가능 – 0~3개
Ÿ Consistent Hashing
– 기본 113 개의 Bucket
Ÿ Map API 뿐만 아니라 SQL Query 도 지원
- 14. 14© 2015 Pivotal Software, Inc. All rights reserved.
Geode – Key/Value (Map) Store (+ ααααααααα)
Ÿ In Memory Data Grid
Ÿ Data Colocation
– Master / Detail 형태의 data graph
Ÿ Data Serialization (PDX)
Ÿ FuctionService
Ÿ JTA 호환 Transaction
출처 : http://s.hswstatic.com/gif/grid-computing-1.gif
- 15. 15© 2015 Pivotal Software, Inc. All rights reserved.
Geode – Key/Value (Map) Store (+ ααααααααα)
- 16. 16© 2015 Pivotal Software, Inc. All rights reserved.
Geode – Key/Value (Map) Store (+ ααααααααα)
- 17. 17© 2015 Pivotal Software, Inc. All rights reserved.
Gemfire vs Geode
Ÿ Open Source
Ÿ 상용 Support
Ÿ 기능상의 차이
– WAN 상의 클러스터 복제 (M2 에 이미 포함)
– Continuous Query (M2 에 이미 포함)
– C++, C# 지원
- 18. 18© 2015 Pivotal Software, Inc. All rights reserved.
Demo Repo
https://github.com/eggboy/springcamp2016geode
https://github.com/eggboy/gemfiredemo
- 20. 20© 2015 Pivotal Software, Inc. All rights reserved.
Spring Data GemFire (SDG)
Spring Data 의 강력하고 단순한 프로그래밍 모델을 이용하여 Apache
Geode 이용가능.
Spring Ecosystem Integration…
– Spring Cache Abstraction / Transaction Management
– Spring Data Commons + REST
– Spring Integration (Inbound/Outbound Channel Adapters)
– Spring Data Flow (Input Source and Sinks)
- 21. 21© 2015 Pivotal Software, Inc. All rights reserved.
Apache Geode combined with Spring Data GemFire
can be used as JSR-107 (JCache) caching provider
+ +
- 22. 22© 2015 Pivotal Software, Inc. All rights reserved.
GRAILS
Full-stack, Web
Data Flow
Stream, Taps, Jobs
BOOT
Bootable, Minimal, Ops-Ready
Big,
Fast,
Flexible
Data Web,
Integration,
Batch
WEB
Controllers, REST,
WebSocket
INTEGRATION
Channels, Adapters,
Filters, Transformers
BATCH
Jobs, Steps,
Readers, Writers
BIG DATA
Ingestion, Export,
Orchestration, Hadoop
DATA
NON-RELATIONALRELATIONAL
CORE
GROOVYFRAMEWORK SECURITY REACTOR
- 23. 23© 2015 Pivotal Software, Inc. All rights reserved.
Server 설정
Spring XML 기반 설정
- 24. 24© 2015 Pivotal Software, Inc. All rights reserved.
Client 설정
Spring XML 기반 설정
- 25. 25© 2015 Pivotal Software, Inc. All rights reserved.
with Spring
Geode 서버 시작
@SpringBootApplication
@ImportResource("/spring-data-gemfire-cache.xml")
@EnableGemfireRepositories
@EnableTransactionManagement
public class SampleDataGemFireApplication {
public static void main(String[] args) {
SpringApplication.run(SampleDataGemFireApplication.class, args);
}
}
혹은…
gfsh>start server –name=Example … --spring-xml-location=“spring-data-gemfire-cache.xml”
- 26. 26© 2015 Pivotal Software, Inc. All rights reserved.
GemfireRepository
Repository 를 이용한 data 접근
public interface CustomerRepository extends GemfireRepository<Customer, Long> {
}
// Spring context.xml
<gfe-data:repositories base-package="io.pivotal.springcamp.geode.repository" />
- 27. 27© 2015 Pivotal Software, Inc. All rights reserved.
GemfireTemplate
GemfireTemplate 을 이용한 data 접근
Ÿ 가장 단순한 data 접근 방법
Ÿ Gemfire/Geode API 변경으로 부터 자유로움
Ÿ Exception 이 Spring DAO Exception 으로 변경
Ÿ Transaction
<bean id="customerTemplate" class="org.springframework.data.gemfire.GemfireTemplate"
p:region-ref="Customer" />
- 28. 28© 2015 Pivotal Software, Inc. All rights reserved.
Implementation
Annotation-based Function Implementation/Execution
package org.example.app.functions;
import …
@Component
public class ExampleFunctions {
@GemfireFunction
public Customer update(…) {
…
}
…
}
Example…
(Optional)…
<bean class=“org.example….ExampleFunctions”/>
- 29. 29© 2015 Pivotal Software, Inc. All rights reserved.
Execution
Annotation-based Function Implementation/Execution
package org.example.app.function.executions;
import …
@OnRegion(“Example”)
public interface ExampleFunctionExecution {
Customer update(…);
}
And…
<gfe:annotation-driven/>
<gfe-data:function-executions base-package="org.example.app.function.executions">
- 30. 30© 2015 Pivotal Software, Inc. All rights reserved.
JSR-107 (JCache), Spring Cache Abstraction
Geode Caching Provider
Ÿ With @Cacheable
Ÿ And @CachePut, @CacheEvict(allEntries=[true|false]),
@CacheConfig
– http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#cache-jsr-107
Ÿ Or with JSR-107 using…
– @CacheResult, @CachePut, @CacheRemove, @CacheRemoveAll,
@CacheDefaults
- 32. 32© 2015 Pivotal Software, Inc. All rights reserved. 32
12factor App Manifesto - VI. Processes
Twelve-factor processes are stateless and share-nothing.
Some web systems rely on “sticky sessions” – that is, caching user
session data in memory of the app’s process and expectingfuture
requests from the same visitor to be routed to the same process. Sticky
sessions are a violation of twelve-factor and should never be used
or relied upon.
- 33. 33© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session
Ÿ 일반적인 WAS 의 Clustering
– SESSION Replication-> Overhead
– 구성의 복잡
Ÿ HTTPSession 과 User 의 Object
들이 공존
– Session 이 차지하는 공간으로 인한
Heap 부족
- 34. 34© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session
Ÿ 플랫폼에 독립적인 세션 관리
Ÿ Annotation 기반에 쉬운 설정
Ÿ Persistence
Ÿ WebSocket 지원
Ÿ 지원하는 기술
– Redis
– Geode
– Hazelcast
- 35. 35© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session - @EnableGemFireHttpSession
- 36. 36© 2015 Pivotal Software, Inc. All rights reserved.
Spring Session – Servlet Filter
출처 : http://www.slideshare.net/dgomezg/managing-users-data-with-spring-session