Programing/ETC

JGroups 란?

BeomJun.Kwon 2022. 7. 27. 10:55

 

JGroups

- Redhat 회사가 가지고 있는 엔진

- 와이드플라이(이전 이름:JBoss) 주요 프로젝트 중 하나.

- UDP와 TCP등과 같은 다양한 프로토콜을 매우 안전하고 빠르게 쓸 수 있도록 개발된.

Replication 엔진

- JBoss가 지원하고 있고 EHCache가 채택한 Cache Clustering엔진

- JBoss, Tomcat등에서 세션 클러스터링 기반기술로 사용

- 개발자가 시스템 안정성이 문제인 신뢰할 수 있는 메시징 응용 프로그램을 만들 수 있도록 하는 메시징 도구 키트

 

 

JGroups 하위 시스템은 클러스터의 서버가 서로 통신하는 방법에 대한 통신 메커니즘을 제공

 

UDP

 - 클러스터의 노드는 UDP(User Datagram Protocol) 멀티캐스팅을 사용하여 서로 통신합니다. UDP는 일반적으로 TCP보다 빠르지만 덜 안정적입니다.

TCP

 - 클러스터의 노드는 TCP(전송 제어 프로토콜)를 사용하여 서로 통신합니다. TCP는 UDP보다 느린 경향이 있지만 데이터를 대상으로 더 안정적으로 전달합니다.

JGroups의 프로토콜 스택

 

 

 

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://access.redhat.com/documentation/pt-br/red_hat_data_grid/6.2/html/administration_and_configuration_guide/sect-configure_jgroups_library_mode

(참조) 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