6장. 메시지 저장

이 장에서는 지속성이 AMQ Broker와 함께 작동하는 방식과 이를 구성하는 방법을 설명합니다.

브로커에는 두 가지 지속성 옵션이 있습니다.

  1. 저널 기반

    기본값입니다. 파일 시스템의 저널에 메시지를 쓰는 고성능 옵션입니다.

  2. JDBC 기반

    브로커의 JDBC 저장소를 사용하여 메시지를 선택한 데이터베이스에 유지합니다.

또는 제로 지속성 을 위해 브로커를 구성할 수도 있습니다.

브로커는 메시지 저널 외부에서 큰 메시지를 유지하기 위해 다른 솔루션을 사용합니다. 자세 한 내용은 대용량 메시지 작업 을 참조하십시오. 메모리 부족 상태에서 디스크에 메시지를 페이징하도록 브로커를 구성할 수도 있습니다. 자세 한 내용은 메시지 삭제 를 참조하십시오.

6.1. 저널 기반 지속성 정보

브로커의 저널은 디스크에 파일 만 첨부 하는 세트입니다. 각 파일은 고정된 크기로 미리 만들어지며 처음에는 패딩으로 채워집니다. 메시징 작업이 브로커에서 수행되면 레코드가 저널 끝에 추가됩니다. 레코드를 추가하면 브로커가 디스크 헤드 이동 및 임의의 액세스 작업을 최소화하여 일반적으로 디스크에서 가장 느린 작업을 수행할 수 있습니다. 하나의 저널 파일이 가득 차면 브로커는 새 파일을 사용합니다.

저널 파일 크기는 구성할 수 있으며 각 파일에서 사용하는 디스크 실린더 수를 최소화합니다. 그러나 최신 디스크 토폴로지는 복잡하며 브로커는 파일이 매핑되는 실린더를 제어할 수 없습니다. 따라서 저널 파일 크기 조정은 정확한 과학이 아닙니다.

기타 지속성 관련 기능은 다음과 같습니다.

  • 특정 저널 파일이 여전히 사용 중인지 확인하는 정교한 파일 가비지 수집 알고리즘입니다. 그렇지 않은 경우 파일을 회수하고 다시 사용할 수 있습니다.
  • 저널에서 제거된 공간을 제거하고 데이터를 압축하는 압축 알고리즘입니다. 그러면 디스크에서 파일을 더 적게 사용하는 저널이 생성됩니다.
  • 로컬 트랜잭션 지원.
  • AMQ JMS 클라이언트를 사용할 때 XA 트랜잭션 지원

대부분의 저널은 Java로 작성됩니다. 그러나 실제 파일 시스템과의 상호 작용은 추상화되므로 서로 다른 플러그형 구현을 사용할 수 있습니다. AMQ Broker는 다음 두 가지 구현과 함께 제공됩니다.

  • Java NIO.

    표준 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