JGroups
- Redhat 회사가 가지고 있는 엔진
- 와이드플라이(이전 이름:JBoss) 주요 프로젝트 중 하나.
- UDP와 TCP등과 같은 다양한 프로토콜을 매우 안전하고 빠르게 쓸 수 있도록 개발된.
Replication 엔진
- JBoss가 지원하고 있고 EHCache가 채택한 Cache Clustering엔진
- JBoss, Tomcat등에서 세션 클러스터링 기반기술로 사용
- 개발자가 시스템 안정성이 문제인 신뢰할 수 있는 메시징 응용 프로그램을 만들 수 있도록 하는 메시징 도구 키트
JGroups 하위 시스템은 클러스터의 서버가 서로 통신하는 방법에 대한 통신 메커니즘을 제공
UDP
- 클러스터의 노드는 UDP(User Datagram Protocol) 멀티캐스팅을 사용하여 서로 통신합니다. UDP는 일반적으로 TCP보다 빠르지만 덜 안정적입니다.
TCP
- 클러스터의 노드는 TCP(전송 제어 프로토콜)를 사용하여 서로 통신합니다. TCP는 UDP보다 느린 경향이 있지만 데이터를 대상으로 더 안정적으로 전달합니다.
MBean의 JGroups 구성 예
<mbean code="org.jboss.ha.framework.server.ClusterPartition"
name="jboss:service=${jboss.partition.name:DefaultPartition}">
... ...
<attribute name="PartitionConfig">
<Config>
<UDP mcast_addr="${jboss.partition.udpGroup:228.1.2.3}"
mcast_port="${jboss.hapartition.mcast_port:45566}"
tos="8"
ucast_recv_buf_size="20000000"
ucast_send_buf_size="640000"
mcast_recv_buf_size="25000000"
mcast_send_buf_size="640000"
loopback="false"
discard_incompatible_packets="true"
enable_bundling="false"
max_bundle_size="64000"
max_bundle_timeout="30"
use_incoming_packet_handler="true"
use_outgoing_packet_handler="false"
ip_ttl="${jgroups.udp.ip_ttl:2}"
down_thread="false" up_thread="false"/>
<PING timeout="2000"
down_thread="false" up_thread="false" num_initial_members="3"/>
<MERGE2 max_interval="100000"
down_thread="false" up_thread="false" min_interval="20000"/>
<FD_SOCK down_thread="false" up_thread="false"/>
<FD timeout="10000" max_tries="5"
down_thread="false" up_thread="false" shun="true"/>
<VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
<pbcast.NAKACK max_xmit_size="60000"
use_mcast_xmit="false" gc_lag="0"
retransmit_timeout="300,600,1200,2400,4800"
down_thread="false" up_thread="false"
discard_delivered_msgs="true"/>
<UNICAST timeout="300,600,1200,2400,3600"
down_thread="false" up_thread="false"/>
<pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
down_thread="false" up_thread="false"
max_bytes="400000"/>
<pbcast.GMS print_local_addr="true" join_timeout="3000"
down_thread="false" up_thread="false"
join_retry_timeout="2000" shun="true"
view_bundling="true"/>
<FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
<pbcast.STATE_TRANSFER down_thread="false"
up_thread="false" use_flush="false"/>
</Config>
</attribute>
</mbean>
- 모든 JGroups 구성 데이터는 JGroups config MBean 속성 아래의 요소에 포함
- JGroups 채널을 구성하는 데 사용 ( 채널은 개념적으로 소켓과 유사하며 클러스터의 피어 간의 통신을 관리 )
- 요소 내부의 각 요소는 특정 JGroups 프로토콜을 정의
(참조) http://josh.prever.co.kr/cloud/jgroups
(참조) https://ko.wikipedia.org/wiki/%EC%99%80%EC%9D%BC%EB%93%9C%ED%94%8C%EB%9D%BC%EC%9D%B4
(참조) https://docs.jboss.org/jbossas/docs/Clustering_Guide/beta422/html/jbosscache-jgroups.html
'Programing > ETC' 카테고리의 다른 글
프레임워크 vs 라이브러리 (0) | 2023.07.19 |
---|---|
JGroups 설정 (0) | 2022.07.27 |
Egine 이란? (0) | 2022.07.27 |