6장. 메시지 저장
이 장에서는 지속성이 AMQ Broker와 함께 작동하는 방식과 이를 구성하는 방법을 설명합니다.
브로커에는 두 가지 지속성 옵션이 있습니다.
또는 제로 지속성 을 위해 브로커를 구성할 수도 있습니다.
브로커는 메시지 저널 외부에서 큰 메시지를 유지하기 위해 다른 솔루션을 사용합니다. 자세 한 내용은 대용량 메시지 작업 을 참조하십시오. 메모리 부족 상태에서 디스크에 메시지를 페이징하도록 브로커를 구성할 수도 있습니다. 자세 한 내용은 메시지 삭제 를 참조하십시오.
6.1. 저널 기반 지속성 정보
브로커의 저널은 디스크에 파일 만 첨부 하는 세트입니다. 각 파일은 고정된 크기로 미리 만들어지며 처음에는 패딩으로 채워집니다. 메시징 작업이 브로커에서 수행되면 레코드가 저널 끝에 추가됩니다. 레코드를 추가하면 브로커가 디스크 헤드 이동 및 임의의 액세스 작업을 최소화하여 일반적으로 디스크에서 가장 느린 작업을 수행할 수 있습니다. 하나의 저널 파일이 가득 차면 브로커는 새 파일을 사용합니다.
저널 파일 크기는 구성할 수 있으며 각 파일에서 사용하는 디스크 실린더 수를 최소화합니다. 그러나 최신 디스크 토폴로지는 복잡하며 브로커는 파일이 매핑되는 실린더를 제어할 수 없습니다. 따라서 저널 파일 크기 조정은 정확한 과학이 아닙니다.
기타 지속성 관련 기능은 다음과 같습니다.
- 특정 저널 파일이 여전히 사용 중인지 확인하는 정교한 파일 가비지 수집 알고리즘입니다. 그렇지 않은 경우 파일을 회수하고 다시 사용할 수 있습니다.
- 저널에서 제거된 공간을 제거하고 데이터를 압축하는 압축 알고리즘입니다. 그러면 디스크에서 파일을 더 적게 사용하는 저널이 생성됩니다.
- 로컬 트랜잭션 지원.
- AMQ JMS 클라이언트를 사용할 때 XA 트랜잭션 지원
대부분의 저널은 Java로 작성됩니다. 그러나 실제 파일 시스템과의 상호 작용은 추상화되므로 서로 다른 플러그형 구현을 사용할 수 있습니다. AMQ Broker는 다음 두 가지 구현과 함께 제공됩니다.
표준 Java NIO를 사용하여 파일 시스템과 인터페이스합니다. 이는 매우 우수한 성능을 제공하며 Java 6 이상 런타임이 있는 모든 플랫폼에서 실행됩니다.
Linux 비동기 IO
씬 네이티브 래퍼를 사용하여 Linux 비동기 IO 라이브러리(AIO)와 통신합니다. AIO에서 브로커는 데이터가 디스크에 만들어진 후 다시 호출되므로 명시적으로 동기화되지 않습니다. 기본적으로 브로커는 AIO 저널을 사용하려고 하며 AIO를 사용할 수 없는 경우 NIO를 사용하도록 대체합니다.
AIO를 사용하면 일반적으로 Java NIO를 사용하는 것보다 성능이 향상됩니다. libaio를 설치하는 방법에 대한 지침은 AIO 저널 사용을 참조하십시오.
6.1.1. AIO 사용
Java NIO 저널은 성능이 매우 뛰어나지 만 Linux 커널 2.6 이상을 사용하여 브로커를 실행하는 경우 AIO 저널을 사용하여 지속성 성능을 향상시키는 것이 좋습니다. AIO 저널은 다른 운영 체제 또는 이전 버전의 Linux 커널과 함께 사용할 수 없습니다.
AIO 저널을 사용하려면 libaio
가 아직 설치되지 않은 경우 설치해야 합니다.
절차
-
아래의 예와 같이
yum
명령을 사용하여libaio
를 설치합니다.
yum install libaio