Liberty의 비동기 호출 API

비동기 호출 API를 사용하여 SIP(Session Initiation Protocol) 애플리케이션 세션에서 처리가 필요한 이벤트를 애플리케이션 세션 ID를 기반으로 클러스터의 임의의 서버로 전송할 수 있습니다.

비동기 작업 디스패처라고도 하는 비동기 호출 API는 관련된 애플리케이션 세션 ID를 사용하여 SIP 애플리케이션 세션의 컨텍스트에서 처리가 필요한 이벤트를 클러스터의 서버로 전송할 수 있습니다. 이 전송은 일반적으로 다른 서버의 SIP 세션에 대한 상태 변경을 유발하는 이벤트에 의해 트리거됩니다. 비동기 작업 디스패처는 이벤트 태스크를 실행되기 위한 올바른 서버로 전송합니다.

Liberty에서 모든 관련 SIP 메시지는 클러스터의 동일한 서버에 전달되며, 세션은 항상 동일한 SIP 컨테이너에 있습니다. 동기화 문제와 잠금을 방지하기 위해 동일한 애플리케이션 세션의 태스크는 동시에 처리될 수 없으며(즉, 다른 스레드 또는 프로세스에서), 이는 특정 이벤트 유형의 처리를 제한합니다.

SIP 세션 및 SIP 애플리케이션 세션에 대한 보다 자세한 정보는 JSR(Java™ Specification Request) 289의 세션 6을 참조하십시오.

다음의 두 가지 시나리오가 비동기 호출 API를 구현함으로써 해결됩니다.
  1. 동일한 SIP 애플리케이션 세션과 관련된 두 개의 요청이 두 개의 서로 다른 스레드에서 동시에 실행됩니다.

    예를 들어, 메시지 구동 Bean(MDB) 관련 작업을 수행하는 Java Platform, Enterprise Edition 애플리케이션은 특정 SIP 애플리케이션 세션에서 SIP 메시지를 전송하는 이벤트를 검색할 수 있습니다. 이와 동시에 SIP 컨테이너는 동일한 애플리케이션 세션에 연결된 다른 세션에서 수신 SIP 메시지를 수신하며, 이를 다른 스레드에서 처리합니다. 경합 상태를 피하고 모든 세션 속성이 동기화되도록 보장하려면 세션 액세스를 동기화하는 것이 필요합니다. 이 경우에 잠금 메커니즘을 적용하는 것은 유효하지 않습니다. SIP 애플리케이션 세션에 다수의 SIP 세션이 포함될 수 있기 때문입니다.

  2. 특정 SIP 애플리케이션 세션을 보유하지 않는 서버는 해당 세션의 컨텍스트에서 메시지를 보내기 위해 비-SIP 프로토콜을 통해 요청을 받습니다.

    예를 들어, SIP 대화 상자를 시작하는 웹 서비스는 자신이 사용해야 하는 SIP 애플리케이션 세션을 보유하는 서버와 다른 서버에 있을 수 있습니다.

비동기 호출 API는 SIP 애플리케이션 세션 ID에 따라 특정 애플리케이션 코드가 올바른 서버와 올바른 스레드에서 실행되도록 보장합니다.

비동기 호출 API는 다음과 같은 이점을 제공합니다.
  1. 둘을 초과하는 서버가 비동기 호출 프로세스에 포함될 수 없습니다(하나는 작업 태스크를 검색하는 서버이며, 다른 하나는 해당 태스크에 대한 SIP 애플리케이션 세션을 처리하며 해당 태스크가 전송되는 대상 서버임).
  2. 비동기 호출은 스레드-안전 방식으로 작업을 허용합니다. 이 접근 방법이 오직 하나의 스레드만 SIP 애플리케이션 세션과 관련된 메시지를 처리하도록 보장하므로, 사용자는 세션에 대한 액세스를 동기화할 필요가 없습니다.
  3. 비동기 호출이 확장 가능한 솔루션을 제공하므로, 추가적인 서버가 클러스터에 추가될 때 성능에 영향을 주지 않습니다.
  4. 서버간 호출은 필요할 때만 사용되며, 결과적으로 성능이 향상됩니다.

주제의 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_sip_asynchinvo_api
파일 이름: cwlp_sip_asynchinvo_api.html