본문 바로가기

TECH DOC

ORACLE COHERENCE 12c

코히어런스 소개 (펜타시스템)

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