코히어런스 소개 (펜타시스템)
http://www.penta.co.kr/Oracle_Coherence
타임게이트
http://www.time-gate.com/product/oracle/coherence/
오라클 코히런스
http://www.oracle.com/technetwork/middleware/coherence/overview/index.html
영상으로 보는 아키텍처
https://apexapps.oracle.com/pls/apex/f?p=44785:24:0:::24:P24_CONTENT_ID,P24_PREV_PAGE:10834,1&utm_source=twitterfeed&utm_medium=twitter
튜토리얼
http://javahonk.com/category/other/oracle_coherence/
P23
http://www.oracle.com/technetwork/middleware/coherence/learnmore/hotcache-tutorial-2193398.pdf
Configuring HotCache
HotCache 는 GoldenGate 가 제공하는 커스텀 API 를 사용한다.
- EXTRACT 필요
- JAVA EXTRACT PARAMETER FILE 필요 (앞의 TRAIL 파일을 읽어 XML 로 변환한다.)
- JAVA USER EXIT PROPERTIES FILE 이 모든 HotCache 구성되어 있는곳에 필요
<EXTRACT>
EXTRACT 는 기존 셋팅을 그대로 사용한다
<JAVA EXTRACT FILE>
JAVA EXTRACT FILE 은 trail file 을 읽기 위해 HotCache 에 의해 사용된다.
EXTRACT hcjavaue
USERID ggowner, PASSWORD ggowner
setEnv (GGS_USEREXIT_CONF ="/home/oracle/oracle_products/Middleware/gg11gr2/dirprm/hotcache.properties")
GetEnv (JAVA_HOME)
GetEnv (PATH)
GetEnv (LD_LIBRARY_PATH)
CUserExit /home/oracle/oracle_products/Middleware/goldengate/libggjava_ue.so
CUSEREXIT PASSTHRU INCLUDEUPDATEBEFORES
sourceDefs /home/oracle/oracle_products/Middleware/gg11gr2/dirdef/customerdef.def
getUpdateBefores
NoTcpSourceTimer
TABLE SCOTT.CUSTOMERS;
sourceDefs --> DDL 발생 시 이슈가 발생할 수 있음.
<JAVA USER EXIT PROPERTIES FILE>
앞서 본 EXTRACT 의 GGS_USEREXIT_CONF 의 VALUE 에 해당하는 파일이다.
#============================================================
# List of active event handlers. Handlers not in the list are ignored.
gg.handlerlist=cgga
#============================================================
# Coherence cache updater
gg.handler.cgga.type=oracle.toplink.goldengate.CoherenceAdapter
#============================================================
gg.brokentrail=true
goldengate.log.logname=cuserexit
goldengate.log.level=DEBUG
goldengate.log.tofile=true
#=============================================
# Native JNI library properties
goldengate.userexit.nochkpt=true
goldengate.userexit.writers=jvm
#=================================================
jvm.bootoptions=-Xmx32M -Xms32M -Dtoplink.goldengate.persistenceunit=CoherenceHotCache -Dlog4j.configuration=/home/oracle/oracle_products/Middleware/gg11gr2/ggjava/resources/debug-log4j.properties -Dtangosol.coherence.cacheconfig=/home/oracle/Documents/goldenGate/hotcache/client-extend-config.xml -Dlog4j.debug=true -Djava.class.path=/home/oracle/oracle_products/Middleware/gg11gr2/dirprm:/home/oracle/oracle_products/dbxe/product/11.2.0/dbhome_1/jdbc/lib/ojdbc6.jar:/home/oracle/oracle_products/Middleware/gg11gr2/ggjava/ggjava.jar:/home/oracle/oracle_products/Middleware122c/coherence/lib/coherence.jar:/home/oracle/oracle_products/Middleware122c/oracle_common/modules/javax.persistence_2.0.0.0_2-Oracle Coherence GoldenGate HotCache Tutorial260.jar:/home/oracle/oracle_products/Middleware122c/oracle_common/modules/oracle.toplink_12.1.2/eclipselink.jar:/home/oracle/oracle_products/Middleware122c/oracle_common/modules/oracle.toplink_12.1.2/toplinkgrid.jar:/home/oracle/Documents/goldenGate/hotcache/customerJPA.jar
---------------------------------------------------------------------------------------------
Introduction to Coherence
http://docs.oracle.com/middleware/1221/coherence/develop-applications/gs_intro.htm#COHDG5140
코히런스가 제공하는 캐시의 종류
- Local Caches
- Replicated Caches : For small, read-heavy caches
- Distributed Caches : read, write 에 대해 선형 스케일 아웃
데이타가 자동으로 노드 간 분산 된다.
- Near Caches : 로컬 캐시의 성능과 분산 캐시의 스케일을 제공
데이타 저장 옵션
- On-heap : 가장 빠름
- Journal : RAM, DISK 를 같이 사용. 저널 기술을 사용하는 SSD 에 최적화
- File-based : Berkeley Database JE storage system 을 사용
캐시의 대상
- 데이타베이스
- 서비스 : 메인프레임, 웹서비스 등등
- 연산 (Calculations)
Write-back 옵션
- write-through
- write-behind
---------------------------------------------------------------------------------------------
Introduction to Coherence Clusters
http://docs.oracle.com/middleware/1221/coherence/develop-applications/cluster_overview.htm#COHDG5163
TCMP (Tangsol Cluster Management Protocaol)
코히런스 클러스터는 코히런스를 수행하는 JVM 프로세스의 네트워크이다.
클러스터 멤버는 TCMP 를 사용하여 통신한다.
TCMP - 클러스터 멤버를 찾고, 관리하고, 서비스를 프로비전하고, 데이타를 전송하기 위해 사용하는
IP 기반의 프로토콜
- UDP/IP multicast, unicast 의 조합 (기본)
- UDP/IP unicastonly : multi cast 를 사용 못 하거나 사용이 어려운 경우에 사용
- TCP/IP only (no UDP/IP multicast or UDP/IP unicast) : TCP 를 선호하는 경우 사용
- SDP/IP only (no UDP/IP multicast or UDP/IP unicast) : SDP 를 선호하는 경우 사용
- SSL over TCP/IP or SDP/IP : 클러스터 멤버 간 높은 보안이 요구되는 네트워크의 경우 사용
Use of Multicast
- Cluster discovery
- Cluster heartbeat
Use of Unicast
- Data transfer
- When multicast communication is disabled
Use of TCP
Protocol Reliability
TCMP 는 TCP 를 기반으로 하고 있어, UDP 와 비교하여 확실한 메시지 전달, 메시지의 순서를 보장한다.
Protocol Resource Utilization
TCMP protocol 은 세 개의 UDP/IP sockets 을 요구한다
(one multicast, two unicast)
JVM 에 대해서는 6개의 스레드가 기동된다.
앞서 본 포트 및 스레드는 클러스터 사이즈와 상관없다.
Data Services
- Distributed Cache Service
각 노드가 데이타를 나눠 가질 수 있고, 페일오버를 위해 복제본을 가지게 셋팅할 수 있다.
또 특정 노드가 전 데이타를 들 수 있게도 컨트롤 가능하다.
- Federated Cache Service
앞서 이야기 한 Distributed Cache Service 를 지형학적으로 떨어진
데이타센터에 대해 캐시 된 데이타를 복제하고 동기화 하는 서비스이다.
- Replicated Cache Service
클러스터의 모든 멤버가 동일한 데이타를 가진다.
- Optimistic Cache Service
잘 사용되지 않는 모드.
----------------------------------------------------------------------------------------
Introduction to Coherence Caches
Distributed Caches
key points
- Partitioned : 데이타가 분산 되어 있다.
- Load-Balanced
- Location Transparency : APPLICATION 에서는 데이타가 클러스터 어느 멤버에 있는지 고려할 필요가 없다.
- Failover : 데이타 백업을 셋팅하여 갑작스러운 셧다운으로 인한 데이타 로스를 방지한다.
Replicated Caches
Read 속도 측면에서 강한 면모를 보이나, write 에 대해서는 속도 면에서 패널티가 있다.
클러스터의 모든 멤버가 동일한 캐시 데이타를 가져가기 때문에 새로운 멤버 추가로
캐시 사이즈 증량하지 못 한다.
Optimistic Caches
기본적으로 Replicated Caches 와 동일하나 동시성 컨트롤이 빠져있다.
때문에 Replicated Cache 와 비교하여 쓰기속도가 더 빠르다.
Near Caches
일종의 hybrid cache. Replicated caches 의 성능과 distributed caches 의 스케일러빌리티를
동시에 추구하고 있다.
front cache 와 back cache 로 나뉘어진다.
front cache 에서 미스 난 데이타는 back cache 에서 찾는다.
Local Caches