KR102011949B1 - 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법 - Google Patents

미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법 Download PDF

Info

Publication number
KR102011949B1
KR102011949B1 KR1020147009464A KR20147009464A KR102011949B1 KR 102011949 B1 KR102011949 B1 KR 102011949B1 KR 1020147009464 A KR1020147009464 A KR 1020147009464A KR 20147009464 A KR20147009464 A KR 20147009464A KR 102011949 B1 KR102011949 B1 KR 102011949B1
Authority
KR
South Korea
Prior art keywords
message
shared memory
queue
node
machine environment
Prior art date
Application number
KR1020147009464A
Other languages
English (en)
Other versions
KR20140069126A (ko
Inventor
리차드 프랭크
토드 리틀
애런 카이말레튜
레오나드 토민나
Original Assignee
오라클 인터내셔날 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 오라클 인터내셔날 코포레이션 filed Critical 오라클 인터내셔날 코포레이션
Publication of KR20140069126A publication Critical patent/KR20140069126A/ko
Application granted granted Critical
Publication of KR102011949B1 publication Critical patent/KR102011949B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

미들웨어 머신 환경은 다중 노드 어플리케이션들을 위한 메시지 큐들을 제공할 수 있다. 트랜잭셔널 미들웨어 머신 환경은 메시지 수신기 상의 메시지 제어 데이터 구조 및 상기 메시지 수신기와 관련된 공유 메모리 내의 힙 데이터(heap data) 구조를 포함한다. 메시지 전송기는 상기 힙 데이터 구조 내로 메시지를 직접적으로 기록하고 상기 메시지 제어 데이터 구조에 상기 메시지와 관련된 메타데이터를 유지하는 동작을 한다. 더욱이, 상기 미들웨어 머신 환경은 메시지 수신기 상에 공유 메모리를 포함하고, 여기서 상기 공유 메모리는 상기 미들웨어 머신 환경을 위한 하나 이상의 메시지 큐들을 유지한다. 추가적으로, 상기 미들웨어 머신 환경은 클라이언트가 적어도 하나의 메시지 큐가 메시지들을 전송 및 수신하는 것을 지원하기 위해 설정되어야 함을 요청할 때, 상기 공유 메모리에 상기 적어도 하나의 메시지 큐를 생성할 수 있는 데몬 프로세스를 포함한다.

Description

미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법{SYSTEM AND METHOD FOR PROVIDING AND MANAGING MESSAGE QUEUES FOR MULTINODE APPLICATIONS IN A MIDDLEWARE MACHINE ENVIRONMENT}
저작권 공지
본 명세서에서 개시된 부분은 저작권 보호를 받는 내용을 포함한다. 저작권자는 미국특허상표청의 특허 파일 또는 기록에 나타난 대로 본 특허 문서 또는 특허 개시내용을 어느 누군가가 팩시밀리 재생하는 것은 반대하지 않지만, 그 밖의 모든 것은 저작권으로 보호된다.
기술분야
본 발명은 일반적으로, 미들웨어와 같은 컴퓨터 시스템들 및 소프트웨어에 관한 것이며, 특히 트랜잭셔널 미들웨어 머신 환경(transactional middleware machine environment)을 지원하는 것에 관한 것이다.
트랜잭셔널 미들웨어 시스템 또는 트랜잭션 지향 미들웨어(transaction oriented middleware)는 조직 내에서 다양한 트랜잭션들을 프로세스할 수 있는 기업 어플리케이션 서버들을 포함한다. 고성능 네트워크 및 멀티프로세서 컴퓨터와 같은 새로운 기술들의 발달에 따라, 트랜잭셔널 미들웨어의 성능을 더 향상시킬 필요가 있다. 이러한 것들은 대체로 본 발명의 실시예들이 해결하도록 의도된 영역들이다.
미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템들 및 방법들이 본 명세서에 개시된다. 트랜잭셔널 미들웨어 머신 환경은 메시지 수신기 상의 메시지 제어 데이터 구조 및 상기 메시지 수신기와 관련된 공유 메모리 내의 힙 데이터 구조(heap data structure)를 포함한다. 메시지 전송기는 상기 힙 데이터 구조 내로 메시지를 직접적으로 기록하고, 상기 메시지 제어 데이터 구조에 상기 메시지와 관련된 메타데이터를 유지하는 동작을 한다. 더욱이, 상기 미들웨어 머신 환경은 메시지 수신기 상에 공유 메모리를 포함하고, 여기서 상기 공유 메모리는 상기 미들웨어 머신 환경을 위한 하나 이상의 메시지 큐들을 유지한다. 추가적으로, 상기 미들웨어 머신 환경은, 클라이언트가 적어도 하나의 메시지 큐가 메시지들을 전송 및 수신하는 것을 지원하기 위해 설정되어야 함을 요청할 때, 상기 공유 메모리에 적어도 하나의 메시지 큐를 생성할 수 있는 데몬 프로세스(daemon process)를 포함한다.
도 1은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공하는 것의 예를 도시한다.
도 2는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 정확한 로드 밸런싱을 지원하기 위한 예시적인 흐름도를 도시한다.
도 3은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 원격 메모리 링들을 제공하는 것의 예를 도시한다.
도 4는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 복수의 메시지 전송기들에 의해 동시에 액세스될 수 있는 메시지 큐의 예를 도시한다.
도 5는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 시스템 V 메시지 큐들을 사용하는 것의 예를 도시한다.
도 6은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 RDMA(remote direct memory access) 메시지 큐들의 예를 도시한다.
도 7은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 메시지 큐를 생성 및 관리할 수 있는 데몬 프로세스의 예를 도시한다.
도 8은 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 정확한 로드 밸런싱을 지원하기 위한 예시적인 흐름도를 도시한다.
도 9는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 메시지 큐를 보호하기 위해 사용될 수 있는 보안 모델의 예를 도시한다.
도 10은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 메시지 큐를 보호하기 위한 예시적인 흐름도를 도시한다.
트랜잭셔널 미들웨어 머신 환경에서 복수의 프로세서들을 가진 고속 머신들 및 고성능 네트워크 연결의 장점을 취할 수 있는 트랜잭셔널 미들웨어 시스템을 지원하기 위한 시스템 및 방법이 본 명세서에 기술된다. 시스템은 링 버퍼(원형 큐(circular queue))에 기반한 데이터 구조를 사용하여 다중노드 어플리케이션들을 위한 메시지 큐들을 제공할 수 있다. 시스템은 판독기 상의 제1 링 구조 및 기록기 상의 제2 링 구조를 갖는 원격 링 구조를 포함하고, 여기서 상기 제1 링 구조 및 제2 링 구조 각각은 헤드 포인터 및 테일 포인터를 가진다. 상기 기록기가 원격 링에 메시지를 기록하는 동작을 할 때, 상기 기록기는 상기 제1 링 구조 및 제2 링 구조 둘 모두에 대한 헤드 포인터들 및 상기 원격 링 구조 내의 데이터를 갱신할 수 있다. 상기 판독기가 상기 원격 링 구조로부터 메시지를 판독하는 동작을 할 때, 상기 판독기는 상기 제1 링 구조 및 제2 링 구조 둘 모두에 대한 테일 포인터들을 갱신할 수 있다. 추가적으로, 상기 메시지는 힙 데이터 구조에 저장될 수 있고, 상기 메시지와 관련된 메타데이터는 상기 원격 링 구조에 저장될 수 있다.
본 발명의 실시예에 따르면, 시스템은, 신속하게 준비될 수 있고 수요에 따라 스케일링될 수 있는 대량의 병렬 인-메모리 그리드(massively parallel in-memory grid)를 포함하는 완전한 Java EE 어플리케이션 서버 컴플렉스를 제공하기 위해 WebLogic Suite와 같은 어플리케이션 서버 또는 미들웨어 환경과 함께 고성능 하드웨어, 예컨대 64-비트 프로세서 기술, 고성능 대용량 메모리 및 리던던트 인피니밴드(redundant InfiniBand) 및 이더넷 네트워킹의 조합을 포함한다. 실시예에 따르면, 시스템은 전체, 절반 또는 1/4 랙(rack) 또는 다른 구성으로 배치될 수 있고, 상기 시스템은 어플리케이션 서버 그리드, 스토리지 영역 네트워크 및 인피니밴드(IB) 네트워크를 제공한다. 미들웨어 머신 소프트웨어는 예컨대, WebLogic Server, JRockit 또는 Hotspot JVM, Oracle Linux 또는 Solaris, 및 Oracle VM과 같은 어플리케이션 서버, 미들웨어 및 다른 기능을 제공할 수 있다. 시스템은 IB 네트워크를 통해 서로와 통신하는 복수의 컴퓨팅 노드들, IB 스위치 게이트웨이 및 스토리지 노드들 또는 유닛들을 포함할 수 있다. 랙 구성으로 구현될 때, 랙의 사용되지 않은 부분들은 비어있는 채로 있거나 필러(filler)들에 의해 채워질 수 있다.
"Sun Oracle Exalogic" 또는 "Exalogic"으로 본 명세서에서 지칭되는 본 발명의 실시예에 따르면, 시스템은 Oracle Middleware SW suite 또는 Weblogic과 같은 미들웨어 또는 어플리케이션 서버 소프트웨어를 호스팅하기 위한 배치가 용이한 솔루션(easy-to-deploy solution)이다. 본 명세서에 기술된 바와 같이, 시스템은 하나 이상의 서버들, 스토리지 유닛들, 스토리지 네트워킹을 위한 IB 페브릭 및 미들웨어 어플리케이션을 호스팅하는 데 요구되는 모든 다른 컴포넌트들을 포함하는 "박스 내의 그리드"이다. 상당한 성능이 예컨대, 리얼 어플리케이션 클러스터(Real Application Cluster)들 및 엑사로직 오픈 스토리지(Exalogic Open storage)를 이용하여 대량의 병렬 그리드 구조를 활용함으로써 모든 타입의 미들웨어 어플리케이션들에 제공될 수 있다. 시스템은 선형적 I/O 확장성(scalability)을 포함하는 개선된 성능을 제공하고, 사용 및 관리하기에 간단하며, 작업상 중대한(mission-critical) 가용성 및 신뢰성을 제공한다.
본 발명의 실시예에 따르면, Tuxedo는 고성능, 분산형 비즈니스 어플리케이션들의 구성, 실행 및 관리(administration)를 할 수 있는 소프트웨어 모듈들의 세트이며, 다수의 다단(multi-tier) 어플리케이션 개발 툴들에 의해 트랜잭셔널 미들웨어로서 사용되었다. Tuxedo는 분산형 컴퓨팅 환경들에서 분산형 트랜잭션 프로세싱을 관리하는 데 사용될 수 있는 미들웨어 플랫폼이다. 이는, 기업의 레거시 어플리케이션들을 언락킹하고 상기 어플리케이션들을 서비스 지향식 구조로 확장하면서도 비제한적 확장성 및 표준-기반의 상호운용성을 제공하기 위한 검증된 플랫폼이다.
본 발명의 일 실시예에 따르면, 미들웨어 머신 환경은 다중노드 어플리케이션들을 위한 메시지 큐들을 제공할 수 있다. 상기 트랜잭셔널 미들웨어 머신 환경은 메시지 수신기 상의 메시지 제어 데이터 구조 및 상기 메시지 수신기와 관련된 공유 메모리 내의 힙 데이터 구조를 포함한다. 메시지 전송기는 상기 힙 데이터 구조 내로 메시지를 직접적으로 기록하고 상기 메시지 제어 데이터 구조에 상기 메시지와 관련된 메타데이터를 유지하는 동작을 한다. 더욱이, 상기 메시지 제어 데이터 구조는 헤드 포인터 및 테일 포인터를 갖는 링 구조일 수 있다. 추가적으로, 상기 메시지 수신기는 복수의 클라이언트들과 연결되는 서버 상에 상주하며, 상기 클라이언트들 각각은 상기 메시지 제어 데이터 구조의 프라이빗 카피(private copy)를 킵핑(keep)한다. 또한, 상기 메시지 수신기는 상기 메시지 수신기와 관련된 메시지 제어 데이터 구조로의 동시적인 액세스를 지원할 수 있다.
본 발명의 따른 실시예에 따르면, 미들웨어 머신 환경은 다중노드 어플리케이션들을 위한 메시지 큐를 관리할 수 있다. 상기 미들웨어 머신 환경은 메시지 수신기 상의 공유 메모리를 포함하며, 상기 공유 메모리는 상기 미들웨어 머신 환경을 위한 하나 이상의 메시지 큐들을 유지한다. 상기 미들웨어 머신 환경은 클라이언트가 적어도 하나의 메시지 큐가 메시지들을 전송 및 수신하는 것을 지원하기 위해 설정되어야 함을 요청할 때, 상기 공유 메모리에 적어도 하나의 메시지 큐를 생성할 수 있는 데몬 프로세스를 더 포함한다. 추가적으로, 클라이언트 상의 여러 가지 서로 다른 프로세스들은 메시지 서버와 통신하기 위해 적어도 하나의 프록시(proxy)를 사용하는 동작을 한다. 더욱이, 상기 미들웨어 머신 환경은 데몬 프로세스에 의해 생성되는 보안 토큰(security token)을 이용하여 다중노드 어플리케이션들을 위한 메시지 큐들을 보호할 수 있다.
다중노드 어플리케이션들을 위한 메시지 큐들
본 발명의 실시예에 따르면, 메시징 큐들과 같은 메시징 소프트웨어는 RDMA 프로토콜을 이용하는 IB 네트워크와 같은 고성능 네트워크의 장점을 취할 수 있다. RDMA 프로토콜은 메시지 전송기가 원격 머신 상의 프로세스를 웨이크업시킬(wake up) 필요 없이 OS 커널들을 바이패싱해서 메모리에 직접적으로 액세스하게 할 수 있다.
도 1은 본 발명의 실시예에 따른 미들웨어 머신 환경에서의 다중노드 어플리케이션들을 위한 메시지 큐들을 제공하는 것의 예를 도시한다. 도 1에 도시된 바와 같이, 미들웨어 머신 환경(100)은 머신 A(101) 및 머신 B(102)와 같은 복수의 서버 머신들을 포함할 수 있다. 로컬 머신, 예컨대 머신 A(101) 상의 메시지 전송기(103)는 원격 머신, 예컨대 머신 B(102) 상의 메시지 수신기(104)에 메시지(107)를 보낼 수 있다. 원격 머신 B(102) 상의 메시지 수신기(104)는 메시지 큐 또는 메시지 제어 데이터 구조(108) 및 힙 데이터 구조(110)를 포함하는 공유 메모리(106)를 사용할 수 있다.
본 발명의 실시예에 따르면, 메시지 큐는 메시지와 관련된 메타데이터 정보만을 포함할 수 있고, 힙 데이터 구조는 물리 메시지를 포함한다. 따라서, 가변 사이즈를 가진 메시지들이 공유 메모리에 쉽게 수용 및 저장될 수 있다. 도 1에 도시된 바와 같이, 메시지 전송기(103)는 힙 데이터 구조(110) 내로 메시지를 직접적으로 기록하고, 메시지 제어 데이터 구조(108)에 상기 메시지와 관련된 메타데이터를 유지하는 동작을 한다.
또한, 도 1에 도시된 바와 같이, 메시지 전송기(103)는 로컬 머신, 즉 머신 A(101) 상의 메시지 제어 데이터 구조(105)를 포함한다. 상기 메시지 제어 데이터 구조(105)는 메시지 전송기(103)에 대한 메시지 큐(108)의 카피일 수 있다. 로컬 머신 A(101) 상의 메시지 전송기는 또한, 상기 로컬 머신 A(101) 상의 메시지 제어 데이터 구조(105)에 상기 메시지와 관련된 메타데이터를 유지할 수 있다.
본 발명의 실시예에 따르면, 로컬 머신 A(101) 상의 메시지 전송기는 원격 머신 B(102) 상의 공유 메모리(106) 내의 힙 데이터 구조(110) 내로 메시지를 직접적으로 기록할 수 있다. 도 1에 도시된 바와 같이, 메시지 전송기(103)는 원격 머신 B(102) 상의 OS 커널을 바이패싱할 수 있고, 어드레싱 정보는 메시지 수신(104)에 의해 제공된다. 더욱이, 로컬 머신 A(101) 상의 메시지 전송기(103)는 로컬 머신 A(101) 상의 제어 구조를 통해 원격 머신 B(102) 내의 큐에 입력 시퀀스 번호와 같은 메시지의 상태 정보를 갱신할 수 있다.
더욱이, 로컬 머신 A(101) 상의 메시지 전송기(103)는 메시지의 사이즈에 관계없이 메시지 수신기(104)에 메시지를 보낼 수 있다. 따라서, 이 메시징 메커니즘은 비용 효과적, 효율적일 수 있고, 많은 양(volume)의 데이터의 적은 오버헤드를 요한다.
추가적으로, 메시지 전송기(103)는 미리 구성된 절차에 따라 메시지 수신기(104)와 관련된 원격 머신 B(102) 상의 프로세스(112)를 웨이크업시킬 수 있다. 예를 들어, 상기 메시지 전송기는 프로세스에 의해 처리될 수 있는 서비스 요청 메시지가 전달되었을 때 상기 프로세스를 웨이크업시킬 수 있다. 다른 예에서, 상기 메시지 전송기는 큐가 가득 찼을(full) 때 원격 머신 B(102) 상의 데몬 프로세스를 웨이크업시킬 수 있다.
본 발명의 실시예에 따르면, 메시지 수신기 상의 프로세스 예컨대, 프로세스(112)가 슬립(sleep)하기 전에, 상기 프로세스는 클라이언트 측 상의 메시지 제어 구조(105)에 통지하고 그리고/또는 스스로 웨이크업시키는 절차를 메시지 제어 구조(105)에 제공할 수 있다. 그 다음, 수신기 측 상의 프로세스는 메시지의 전달을 기다릴 수 있다. 예를 들어, 메시지를 기대(expect)하는 프로세스는 상기 프로세스가 메시지 전송기에 의해 웨이크업될 때까지 슬립 상태에 있을 수 있다.
또한, 도 1에 도시된 바와 같이, 메시지 수신기(104)가 메시지를 소모(consume)한 이후에, 메시지 수신기는 큐로부터 메시지를 가져올 수 있고, 이 경우 상기 메시지 수신기는 RDMA 기록 동작을 수행함으로써 전송기 측 상의 메시지 큐(108) 및 제어 구조(105)를 갱신할 수 있다. 이러한 RDMA 기록 동작은 원격 머신 B(102) 상의 클라이언트로부터의 개입이 없는 방식으로 수행될 수 있다.
본 발명의 실시예에 따르면, 미들웨어 머신 환경에서 두 개의 서버들 간의 쌍방 통신(two-way communication)들을 지원하기 위해, 미들웨어 머신 상의 각각의 서버는 수신기 및 전송기에 제공될 수 있다. 따라서, 이 두 개의 서버들 간의 통신은 RDMA 기록 동작들과 같은 RDMA 프로토콜을 이용하여 여러 가지 서로 다른 머신들에서 여러 가지 서로 다른 메시지 전송기들에 의해 수행될 수 있다.
도 2는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공하기 위한 예시적인 흐름도를 도시한다. 도 2에 도시된 바와 같이, 단계(201)에서, 시스템은 메시지 수신기 상의 제1 메시지 제어 데이터 구조를 제공할 수 있다. 단계(202)에서, 시스템은 공유 메모리 내의 힙 데이터 구조를 메시지 수신기와 관련시킬 수 있다. 그 다음, 단계(203)에서, 시스템은 메시지 전송기가 힙 데이터 구조 내로 메시지를 직접적으로 기록하고 제1 메시지 제어 데이터 구조에 상기 메시지와 관련된 메타데이터를 유지하도록 할 수 있다.
원격 메모리 링들
본 발명의 실시예에 따르면, 링 버퍼(원형 큐)에 기반한 데이터 구조는 이 시스템의 백본(backbone)일 수 있다. 간략화된 경우, 이 링 구조는 선입선출(FIFO) 큐로 작동할 수 있다.
도 3은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 원격 메모리 링들을 제공하는 것의 예를 도시한다. 도 3에 도시된 바와 같이, 메시지 전송기(301) 및 메시지 수신기(302) 둘 모두는 링 구조를 메시지 제어 데이터 구조로서 사용할 수 있고, 각각의 링 구조는 헤드 포인터 및 테일 포인터를 가질 수 있다. 메시지 전송기(301)가 메시지 판독기(302) 상의 메시지 큐, 예컨대 공유 메모리 내의 힙 데이터 구조 내로 메시지를 기록하는 동작을 할 때, 메시지 전송기(301)는 링 구조들 둘 모두에 대해 헤드 포인터들(303 및 304)을 갱신할 수 있다. 한편, 메시지 수신기(302) 또는 판독기가 공유 메모리 내의 힙 데이터 구조로부터 메시지를 판독하는 동작을 할 때, 판독기는 링 구조들 둘 모두에 대해 테일 포인터들(305 및 306)을 갱신한다.
본 발명의 실시예에 다르면, 링 구조 내의 헤드 포인터는 메시지 큐에 추가된 가장 최근의 메시지를 가리키고(point), 링 구조 내의 테일 포인터는 메시지 큐 내의 가장 오래된 메시지를 가리킨다. 활성 메시지(active message)들은 헤드 포인터와 테일 포인터 사이에 저장된다. 메시지 전송기들 또는 기록기들은 큐의 헤드 포인터와 테일 포인터 사이의 자유 공간(free space)(도 3의 링 구조의 흰 섹션)을 보고, 이들이 새로운 메시지를 기록함에 따라 헤드 포인터를 앞으로 이동시킬 수 있다. 한편, 메시지 판독기들은 새로운 메시지들을 얻기 위해 큐의 헤드 포인터와 테일 포인터 사이(도 3의 링 구조의 음영처리된 섹션)를 보고, 판독기들이 메시지를 판독함에 따라 테일 포인터를 앞으로 이동시킬 수 있다. 이는 헤드 포인터 및 테일 포인터가 단일 방향으로만 이동하게 한다.
본 발명의 실시예에 따르면, 다음의 제약들이 각각의 링 동작에 대해 유지될 수 있는 바, 이 제약들은 오직 판독기들이 테일 포인터를 갱신하는 것, 오직 기록기들이 헤드 포인터를 갱신하는 것, 링 구조에서 테일 포인터로부터 헤드 포인터까지의 섹션이 유효한 판독되지 않은 메시지들을 포함하는 것, 그리고 링 구조에서 헤드 포인터로부터 테일 포인터까지의 섹션이 항상 자유로운 상태(free)인 것이다. 따라서, 판독기는 기록기가 상기 링에 기록할 때에도 메시지를 판독할 수 있고, 동기화는 상기 기록기와 판독기 간에 요구되지 않는다.
동시적인 판독기들 및 기록기들
본 발명의 실시예에 따르면, 미들웨어 머신 환경에서 여러 가지 서로 다른 클라이언트들 상의 복수의 메시지 전송기들은 미들웨어 머신 환경에서의 서버 머신 상의 메시지 큐에 동시에 액세스할 수 있다.
도 4는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 복수의 메시지 전송기들에 의해 동시에 액세스될 수 있는 메시지 큐의 예를 도시한다. 도 4에 도시된 바와 같이, 서버(401)는 복수의 클라이언트들, 예컨대 클라이언트 A 내지 D(411 내지 414)로부터의 서비스 요청들을 동시에 처리하기 위해 메시지 큐(403)를 사용할 수 있다. 상기 메시지 큐(403)는 서버 머신 상의 공유 메모리(402)에 유지될 수 있다. 각각의 클라이언트는 메시지 큐(403)의 프라이빗 카피일 수 있는 별개의 메시지 큐(421 내지 424)를 유지할 수 있다. 더욱이, 메시지 큐(403)의 여러 가지 서로 다른 프라이빗 카피들(즉, 메시지 큐들(421 내지 424))은 각각의 메시지 큐(421 내지 424)가 적시에 갱신되게 하기 위해서 예컨대 주기적으로 메시지 큐(403)와 동기화될 수 있다.
본 발명의 실시예에 따르면, 큐 또는 큐 내의 특별한 입력이 클라이언트에 의해 현재 갱신되고 있을 때 락(lock)이 메시지 큐 상에서 활성화될 수 있다. 상기 큐가 서버 머신 상의 공유 메모리 내에 있기 때문에, 모든 다른 클라이언트는 상기 큐가 락킹됨을 알 수 있고 상기 큐 내의 특별한 입력과 관련된 메모리의 대응하는 부분 내로 기록하지 못하게 될 수 있다. 더욱이, 메시지의 전송은 전송 측 상에 RDMA 기록 동작을 수행함으로써 구현될 수 있다. 따라서, 공유 메모리 내의 큐 및 상기 큐와 관련된 힙 데이터 구조에 기록 및 액세스함에 있어서 어떠한 충돌(confliction)도 없게 하기 위해서 락을 위해 수신 측 상에 래치 또는 직렬화 메커니즘을 구현할 필요가 없다.
본 발명의 실시예에 따르면, 클라이언트들은 큐로의 액세스를 얻기 위해 레이스(race)할 수 있다. 일단 일 클라이언트가 큐 또는 상기 큐 내의 특별한 입력 상의 락을 얻으면, 다른 클라이언트들은 예컨대, 단일 노드 환경에서 OS에 의해 제공되는 세마포어 메커니즘을 사용하여 또는 다중노드 환경에서 RDMA 원자 및 래치리스(latchless) 메커니즘들을 사용하여 상기 락의 해제를 기다릴 수 있다.
시스템 V 메시지 큐들
본 발명의 실시예에 따르면, 분산형 트랜잭셔널 시스템은 클라이언트가 가용한 서버에 작업(work)을 제출하도록 하는 서버-클라이언트 모델을 이용할 수 있다. 클라이언트들은 작업이 완료될 때 결과들을 제공받을 수 있다. 작업 제출 및 상기 작업의 완료들은 메시지 큐들을 이용하여 통신될 수 있다. 시스템 V 메시지 큐들은 Oracle Tuxedo 환경과 같은 분산형 트랜잭셔널 환경에서 단일 머신 상의 작업 제출 및 완료를 처리하는 효율적인 방식을 제공한다. 더욱이, 시스템 V 메시지 큐들은 복수의 머신들 간의 작업을 공유하기 위해 확장될 수 있다.
도 5는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 시스템 V 메시지 큐들을 이용하는 것의 예를 도시한다. 도 5에 도시된 바와 같이, 섀도 큐 생성 모델(shadow queue creation model)이 미들웨어 머신 환경(500)에 시스템 V 메시지 큐들에 대해 적용될 수 있다. 메시지 큐 Q(511)가 노드 A(501) 상에 생성될 때, 그 노드 상의 브로커 즉, 브로커 A(504)는 메시지 큐 Q(511)의 확장을 통지받을 수 있다. 그 다음, 브로커 A(504)는 다른 노드들(502 내지 503) 상의 유사한 브로커들에게 토킹(talk)할 수 있고, 이 브로커들이 클러스터 내의 각각의 노드 상에 동일한 이름 - 'Q' - 을 가진 큐들을 생성하게 할 수 있다.
본 발명의 실시예에 따르면, 노드 B(502) 상의 프로세스(507)는 로컬 메시지 큐 Q(512)에 기록할 수 있다. 노드 B는 메시지 큐 Q(511)가 본래 생성된 노드가 아니기 때문에, 노드 B 상의 브로커 프로세스는 메시지 큐(512)로부터 메시지를 판독하고 TCP 연결들을 사용하여 네트워크를 통해 노드 A 상의 브로커 A(504)에 메시지를 보낼 수 있다. 그 다음, 브로커 A(504)는 노드 A 상의 메시지 큐 Q(511) 내로 메시지를 기록할 수 있다. 이러한 방식으로, 어떤 노드 상의 프로세스이든 큐가 로컬인지 원격인지 실제로 알지 못한 채로 어떤 노드로부터 생성된 큐에 기록할 수 있다. 추가적으로, 노드 A 상의 브로커 A(504)는 모든 섀도 큐들을 지속적으로 모니터링하고 본래의 큐가 생성된 노드 A 내로 상기 섀도 큐들 중 어느 것에 기록된 메시지들을 전파시킬 수 있다.
상기 프로그래밍 모델과 관련된 제한들이 존재하는 바, 상기 제한들은 예를 들어 다음과 같다. 1) 원격 노드로부터 큐로 기록된 메시지는 목적지 큐에 도달하기 위해 여러 개(예컨대, 5개)의 메모리 카피들을 요할 수 있다. 따라서, 이 모델은 CPU 버스에 많은 스트레스를 준다. 2) 다수의 큐들이 존재할 때, 전체 환경은 브로커의 스루풋에 의존하는 바, 상기 브로커는 병목(bottleneck)이 될 수 있다. 3) 이 모델은 메시지들의 전달을 스케일링할 수 있는 가용한 RDMA 네트워크의 장점을 취하지 못한다.
RDMA 메시지 큐들
본 발명의 실시예에 따르면, Tuxedo 시스템과 같은 트랜잭셔널 미들웨어 시스템은 Exalogic 미들웨어 머신과 같은 복수의 프로세서들을 갖는 고속 머신들 및 고성능 네트워크 연결의 장점을 취할 수 있다.
시스템은 Exalogic 미들웨어 머신을 갖는 가용 RDMA 가능 IB 네트워크(available RDMA capable IB network)를 이용하는 능력을 트랜잭셔널 미들웨어 시스템, 예컨대 Oracle Tuxedo에 제공할 수 있다. RDMA는 호스트 채널 어댑터(HCA) 및/또는 네트워크 인터페이스 카드(NIC)로의 메시지 전달과 관련된 CPU 작업의 대부분을 오프로드할 수 있다. 시스템은 Tuxedo가 Exalogic 머신들과 유사한 방식으로 RDMA 가능 시스템 상에 자신의 트랜잭션 프로세싱 능력(capacity)을 스케일링하는 것을 도울 수 있다. 시스템은 기존 메시징 인프라스트럭쳐 구현에 RDMA 능력을 추가할 수 있어서 사용자들은 RDMA를 사용하여 IB 네트워크를 통해 메시지 큐를 동작시킬 수 있다.
도 6은 본 발명의 실시예에 따른 미들웨어 머신 환경에서의 다중노드 어플리케이션들을 위한 RDMA 큐들의 예를 도시한다. 도 6에 도시된 바와 같이, 2-노드 메시지 큐는 메시지 큐를 나타내기 위해 원격 링 구조를 사용할 수 있다. 원격 링 구조는 두 개의 정상적인 링 구조들 즉, 판독기 측 상에 킵핑되는 일 링 구조(608) 및 기록기 측 상에 킵핑되는 다른 링 구조(605)로 구성된다. 로컬 머신 즉, 머신 A(601) 상의 메시지 전송기(603)는 예컨대, RDMA 프로토콜(620)을 이용하여 원격 머신 즉, 머신 B(602) 상의 메시지 수신기(604)에 메시지를 보낼 수 있다.
본 발명의 실시예에 따르면, 메시지 수신기는 먼저 원격 머신 내의 공유 메모리에 큐를 생성하고 네트워크 인터페이스 카드에 상기 공유 메모리 내의 큐의 어드레스를 알려줄 수 있다. 메시지 큐는 헤드 포인터 및 테일 포인터를 포함하는 링 버퍼 데이터 구조를 사용하여 구현될 수 있다. 추가적으로, 메시지 수신기는 유입 메시지들을 포함하기 위한 공유 메모리 내의 힙 데이터 구조를 구현할 수 있다. 그 다음, 메시지 수신기는 메시지 큐의 생성뿐만 아니라 공유 메모리 내의 힙 데이터 구조의 어드레스 정보를 메시지 전송기에 통지할 수 있다.
추가적으로, 기록기가 메시지 큐에 새로운 메시지를 기록할 때, 시스템은 링 구조들 둘 모두 상의 링 데이터 및 헤드 포인터를 갱신한다. 시스템은 만일 판독기가 원격 노드 상에 있으면 판독기 측 구조를 갱신하기 위해 RDMA를 사용할 수 있다. 마찬가지로, 판독기들은 상기 판독기들이 메시지들을 판독함에 따라 링들 둘 모두를 갱신된 채로 킵핑할 수 있다.
본 발명의 실시예에 따르면, 메시지들은 링 구조에 직접적으로 저장되지 않는다. 실제 메시지가 검색될 수 있는 곳에 관한 메타데이터만이 상기 링 구조에 킵핑된다. 메시지들은 판독기 노드에서 킵핑되는 힙 데이터 구조(610)에 저장된다. 실제 메시지는 RDMA 기록 동작(620)을 이용하여 기록기 프로세스로부터 판독기 노드 상의 할당된 메모리로 전달될 수 있다. 원격 힙(610) 구현은 가변 사이즈 메시지들을 지원할 수 있다. 이 원격 힙(610)에서, 실제 힙 메모리가 판독기 노드 상에 킵핑되더라도 할당 및 해제(freeing) 동작들은 기록기 노드 상에서 행해진다. 일 예에서, 힙 메모리(610)는 판독기 노드 상에 있고, 전체 힙 메타데이터는 기록기 노드 상에 저장된다. 따라서, 어떤 네트워크 통신 없이 기록기의 측으로부터 힙 할당을 행하는 것이 가능하다. 더욱이, 힙 관리는 또한 접속 경합(contention)을 최소화하고/원격 큐 복구를 간략화하기 위해, 슬롯 할당 뮤텍스(mutex)/단계로부터 분리될 수 있다.
다음의 목록 1은 큐가 메시지 우선순위들을 허용함이 없이 그리고 락들의 도움으로 생성될 때 큐 기록 및 판독 동작들을 예시하는 의사 코드(pseudo code)를 포함한다.
[목록 1]
Figure 112014034039042-pct00001

본 발명의 실시예에 따르면, 전체 큐 동작들은 여러 가지 서로 다른 클라이언트 프로세스들에 의해 사용자 모드에서 발생할 수 있다. 프로세스는 예컨대, 상기 프로세스가 get_next_slot/allocate ring slot을 실행할 때, 공유 링 구조 또는 힙 메타데이터를 갱신하는 중에 비정상적으로 종료될 수 있다. 복구 메커니즘은 프로세스의 데스(death)를 검출하고, 다른 프로세스가 동일한 큐 상에서 여전히 동작할 수 있도록 메타데이터를 일관된 상태(consistent state)로 만들기 위해 사용될 수 있다.
본 발명의 실시예에 따르면, 웨이크업(wakeup) 메커니즘이 제공될 수 있다. 상기 목록 1의 의사 코드는 큐가 단일 우선순위로 생성될 때의 큐의 경우에 상기 시스템이 수행하는 단계들의 개요를 서술한다. 시스템은 또한, 각각의 메시지가 우선순위들을 가지게 하고 이 우선순위들에 기반한 검색을 할 수 있게 한다. 때때로, 클라이언트는 일부 특별한 특성 - 'n'보다 낮은 우선순위 또는 'n'과 동일한 우선순위 또는 'n'이 아닌 우선순위 등 - 을 가진 메시지를 요청할 수 있다. 만일 이 요청을 만족시킬 수 있는 메시지가 이 시점에 큐 내에 없으면, 클라이언트 프로세스는 슬립 모드로 들어가고, 어느 노드로부터의 프로세스가 이 요청을 만족시킬 수 있는 메시지를 기록할 때 웨이크업될 수 있다. 메커니즘은 특정한 요청들을 기다리는 프로세스들을 웨이크업시키기 위해 RDMA에 기반하여 구현될 수 있다.
여러 가지 서로 다른 클라이언트 프로세스들은 동일한 큐 상에서 판독 및/또는 기록할 수 있다. 이러한 시나리오에서, 큐는 공유 메모리(또는 공유 스토리지) 상에 생성될 수 있다. 어플리케이션들에 기반한 공유 메모리의 대부분에서, 공유 데이터를 갱신하는 것은 뮤텍스를 이용하는 것을 요할 수 있다. 링 구조, 및 원자적 비교 및 스왑(CAS) 명령들에 기반한 방법이 빈번한 판독 및 기록 경로들에서 락들을 회피하기 위해 구현될 수 있다.
본 발명의 실시예에 따르면, 메시지 전달을 위한 RDMA의 사용은 메모리 버스 이용을 감소시킬 수 있다. 이는 CPU가 전체적인 메시지 전달을 하지 않게 해서, CPU는 메시지들이 전달되는 동안 다른 작업을 할 수 있다. 더욱이, 시스템은 보다 스케일러블(scalable)해지고 시스템 V 메시지 큐들을 위한 브로커와 같은 병목이 제거된다. 따라서, RDMA의 사용은 CPU 사용, 메시지 전달 스루풋 및 메시지 전달 레이턴시의 관점에서 상당한 이득을 제공한다.
본 발명의 실시예에 따르면, 시스템은 노드간 메시지 전달을 위해 RDMA를 이용하는 메시지 큐들의 장점을 취할 수 있다. 시스템은 여러 가지 서로 다른 머신들로부터 동시에 메시지 판독 및 기록을 하기 위해 원격 링 구조들을 사용할 수 있다. 시스템은 원격 힙 할당을 갖는 가변 사이즈의 메시지들을 처리할 수 있다. 복구 모델은 비정상적인 프로세스가 로컬 노드 또는 원격 노드 상에서 종료되는 경우 큐들을 복구시키기 위해 사용될 수 있다. 큐들은 공유 데이터 상에서 로컬 또는 RDMA 동작들을 하기 위해 고안된 메커니즘을 가진 공유 메모리 상에 생성될 수 있다. 시스템은 메시지를 기다리는 원격 프로세스에 대한 RDMA에 기반한 웨이크업 메커니즘을 사용할 수 있고, 동시적인 판독기들 및 기록기들이 사용자 모드 프로세스들로부터 래치리스 동기화를 이용하여 동일한 큐들 상에서 동작하게 될 수 있다.
본 발명의 실시예에 따르면, 시스템은 현대의 네트워크 인터페이스 카드들에서 가용한 RDMA 기능(facility)을 활용함으로써 여러 가지 서로 다른 노드들 사이에서 큐 동작들을 행하기 위해 인터페이스를 제공할 수 있다. 상기 인터페이스에 의해 제공되는 프로그래밍 인터페이스는 시스템 V API의 인터페이스와 유사할 수 있다.
메시지 큐 생성 및 관리
본 발명의 실시예에 따르면, 미들웨어 머신 환경에서 서버 노드 상의 데몬 프로세스는 공유 메모리에 메시지 큐를 생성하고 관리하기 위해 사용될 수 있다.
도 7은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 메시지 큐를 생성 및 관리하는 데몬 프로세스의 예를 도시한다. 도 7에 도시된 바와 같이, 미들웨어 머신 환경은 서버 노드(701) 및 여러 클라이언트 노드들(702 및 703)을 포함할 수 있다. 서버 노드는 여러 가지 서로 다른 클라이언트들로부터 메시지들을 수신하기 위한 공유 메모리(704)를 포함할 수 있고, 상기 공유 메모리는 하나 이상의 메시지 큐들(711 및 712)을 유지한다.
본 발명의 실시예에 따르면, 서버 노드(301)는, 다양한 클라이언트들이 메시지를 전송 및 수신하기 위해 메시지 큐들을 설정하도록 서버에게 요청할 때, 상기 서버 상의 공유 메모리에 하나 이상의 메시지 큐들을 생성하는 역할을 하는 데몬 프로세스(306)를 포함할 수 있다. 예를 들어, 클라이언트 B(703)가 서버(701)와의 연결을 개시할 때, 서버 상의 데몬 프로세스(706)는 메시지 제어 구조(722)를 통해 클라이언트 B(703)와 통신하기 위해 큐 B(712)를 동적으로 생성할 수 있다.
본 발명의 실시예에 따르면, 서버와 복수의 클라이언트들과의 사이의 이 통신 기법은 프록시들을 사용하여 더 확장될 수 있다. 예를 들어, 클라이언트 A(702) 상의 큐/제어 구조 A(721)는 하나 이상의 프록시들, 예컨대 프록시들 I 내지 III(723 내지 725)를 사용하여 확장될 수 있다. 이 프록시들을 이용하여, 클라이언트 A 상의 여러 가지 서로 다른 프록시들과 관련된 프로세스들은 서버와 통신하기 위해 큐/제어 구조 A를 사용할 수 있다.
따라서, 클라이언트 A(702) 상의 프로세스로부터 개시되는 메시지가 프로세스로 하여금 서버의 개입 없이 서버(701) 상의 힙 데이터 구조(705) 내로 메시지를 직접적으로 기록하도록 함으로써 서버(701)에 보내질 수 있기 때문에, 엄청난 확장성(scalability)이 RDMA 프로토콜을 이용하여 서로 다른 서버들과 클라이언트들과의 사이의 통신을 지원하기 위한 미들웨어 머신에서 달성될 수 있다.
본 발명의 실시예에 따르면, 서버(701) 상의 데몬 프로세스(706)는 또한, 로컬 메시징 목적으로 로컬 메시지 큐, 예컨대 큐 C(708)를 생성 및 보존할 수 있다. 일 예에서, 로컬 서버 프로세스들은 로컬 메시지 큐를 이용하여 서로와 통신할 수 있고, 시스템 V IPC 프로토콜은 RDMA 프로토콜 대신 사용될 수 있는 바, 그 이유는 IPC 프로토콜이 로컬로 이용될 때 RDMA 프로토콜보다 빠르기 때문이다.
도 7에 도시된 바와 같이, 로컬 서버 프로세스(707)는 큐 A(711) 및 큐 B(712)와 같은 원격 메시지 큐들에 더하여 로컬 메시지 큐 C(708)로부터 메시지들을 수신할 수 있다. 로컬 서버 프로세스(707)는 로컬 메시지 큐와 원격 메시지 큐 사이의 차이를 해결할 필요 없이 여러 가지 서로 다른 메시지 큐들로부터의 메시지들을 처리할 수 있다.
본 발명의 실시예에 따르면, 클라이언트는 상기 클라이언트 상의 큐 또는 제어 구조가 공유 메모리 또는 프라이빗 메모리에 생성될 수 있는지를 결정할 수 있다. 만일 클라이언트가 특별한 프로세스와 관련된 클라이언트 머신의 프라이빗 메모리에 큐 또는 제어 구조를 생성하는 것을 선택하면, 시스템은 클라이언트 머신 및 원격 머신들 상의 다른 프로세스들이 상기 클라이언트 상의 제어 구조에 액세스하는 것을 차단할 수 있다. 이는 일부 메시지들이 사용자 지정 재정 정보(custom financial information)와 같은 민감한 정보를 포함할 수 있기 때문에 유익할 수 있다.
본 발명의 실시예에 따르면, 중단(interruption)이 서버 프로세스 또는 심지어 서버 내의 데몬 프로세스 상에서 발생할 수 있다. 클라이언트는 서버 프로세스 또는 데몬 프로세스의 복구를 기다릴 필요 없이 서버 머신 상의 공유 메모리에서 RDMA 기록 동작들을 계속 수행할 수 있다. 이는 시스템에 대한 장애 복구가 강인해지고(robust) 간단해지게(straight-forward) 한다. 추가적으로, 클라이언트들은 큐가 가득 찼을 때 서버 머신 상의 공유 메모리 내로 기록하는 것을 멈출 수 있다.
도 8은 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 메시지 큐를 생성 및 관리하기 위한 예시적인 흐름도를 도시한다. 도 8에 도시된 바와 같이, 단계(801)에서, 서버는 메시지 수신기 상의 공유 메모리를 제공할 수 있고, 상기 공유 메모리는 미들웨어 머신 환경에서 하나 이상의 메시지 큐들을 유지한다. 그 다음, 단계(802)에서, 클라이언트는 적어도 하나의 메시지 큐가 메시지들을 전송 및 수신하는 것을 지원하기 위해 서버 상에서 설정되어야 함을 요청한다. 마지막으로, 단계(803)에서, 서버 상의 데몬 프로세스는 서버가 클라이언트 요청을 수신할 때 공유 메모리에 적어도 하나의 메시지 큐를 동적으로 생성할 수 있다.
메시지 큐를 보호하기 위한 보안 모델
본 발명의 실시예에 따르면, 보안 모델은 미들웨어 머신 환경에서 메시지 큐를 보호하기 위해 사용될 수 있다.
도 9는 본 발명의 실시예에 따른 미들웨어 머신 환경에서 메시지 큐를 보호하기 위해 사용될 수 있는 보안 모델의 예를 도시한다. 도 9에 도시된 바와 같이, 메시지 수신기(902)는 메시지 전송기(901)와 통신하도록 구성될 수 있다. 메시지 수신기(902)와 관련된 서버 노드 상의 데몬 프로세스(910)는 상기 데몬 프로세스가 메시지 전송기(901)와 통신하기 위해 서버 머신 상의 공유 메모리(904)에 메시지 큐(906)를 처음 생성할 때 키 또는 보안 토큰(914)을 생성할 수 있다.
본 발명의 실시예에 따르면, 상기 데몬 프로세스(910)는 또한, IB 네트워크에 상기 키 또는 보안 토큰(914)을 등록하고, 보안된 네트워크(920)를 통해 클라이언트 노드 상의 메시지 전송기(901)에 상기 보안 토큰(914)을 전송할 수 있다. 도 9에 도시된 바와 같이, 상기 메시지 전송기(901)는 또한, 데몬 프로세스(905)와 관련될 수 있다. 메시지 전송기(901) 상의 데몬 프로세스(905)와 메시지 수신기(902) 상의 데몬 프로세스(910)와의 사이에 별개의 통신 링크, 예컨대 보안된 네트워크(920)에서의 전용 프로세스가 존재할 수 있다.
본 발명의 실시예에 따르면, 메시지 전송기(901)가 보안 토큰(914)을 수신한 이후에, 메시지 전송기(901)는 수신기 머신의 공유 메모리(904)에 직접적으로 액세스할 수 있다. 도 9에 도시된 바와 같이, 클라이언트 노드 상의 메시지 전송기(901)는 수신기 측 상의 공유 메모리(904) 내의 힙 데이터 구조(908)에 메시지를 직접적으로 기록하기 위하여 RDMA 기록 동작(921)을 수행하기 위해 보안 토큰(914)을 사용할 수 있다.
도 10은 본 발명의 실시예에 따른 미들웨어 머신 환경에서 메시지 큐를 보호하기 위한 예시적인 흐름도를 도시한다. 도 10에 도시된 바와 같이, 단계(1001)에서, 메시지 수신기 상의 데몬 프로세스는 상기 데몬 프로세스가 클라이언트 노드와 통신하기 위해 서버 노드 상의 공유 메모리에 메시지 큐를 처음 생성할 때 상기 서버 노드 상에 보안 토큰을 생성할 수 있다. 그 다음, 단계(1002)에서, 메시지 수신기 상의 데몬 프로세스는 보안된 네트워크를 통해 상기 서버 노드로부터 클라이언트 노드로 상기 생성된 보안 토큰을 전송할 수 있다. 마지막으로, 단계(1003)에서, 클라이언트 측에서 보안 토큰을 수신한 이후에, 메시지 전송기는 공유 메모리 내의 메시지 큐 내로 메시지를 직접적으로 기록할 수 있다.
본 발명은 본 발명의 교시들에 따라 프로그램된 하나 이상의 프로세서들, 메모리 및/또는 컴퓨터 판독가능 스토리지 매체를 포함하는 하나 이상의 종래의 범용 또는 특수 디지털 컴퓨터, 컴퓨팅 디바이스, 머신 또는 마이크로프로세서를 이용하여 통상적으로 구현될 수 있다. 적절한 소프트웨어 코딩은 소프트웨어 기술 분야의 숙련자들에게 분명할 바와 같이, 본 발명의 교시들에 근거하여 숙련된 프로그래머들에 의해 쉽게 준비될 수 있다.
일부 실시예들에서, 본 발명은 본 발명의 프로세스들 중 어느 것을 수행하도록 컴퓨터를 프로그램하는 데 사용될 수 있는 명령어들이 저장된 스토리지 매체 또는 컴퓨터 판독가능 매체(들)인 컴퓨터 프로그램 제품을 포함한다. 스토리지 매체는 이들로만 한정되는 것은 아니지만, 플로피 디스크(disk)들, 광학 디스크(disc)들, DVD, CD-ROM들, 마이크로드라이브 및 자기-광학 디스크(disk)들을 포함하는 어떤 타입의 디스크, ROM들, RAM들, EPROM들, EEPROM들, DRAM들, VRAM들, 플래시 메모리 디바이스들, 자기 또는 광학 카드들, (분자 메모리 IC들을 포함하는)나노시스템들 또는, 명령어들 및/또는 데이터를 저장하기에 적절한 어떤 타입의 매체 또는 디바이스를 포함할 수 있다.
본 발명의 상기 상세한 설명은 예시 및 설명을 위해 제공되었다. 본 설명은 완전한 것이거나 또는 정확히 개시된 형태들로만 본 발명을 제한하고자 의도된 것이 아니다. 많은 수정들 및 변형들이 이 기술분야의 숙련자에게 분명할 것이다. 위 실시예들은 본 발명의 원리 및 이의 실용적 응용을 가장 잘 설명하기 위해 선택 및 기술되었으며, 그럼으로써 이 기술분야의 숙련자들은 본 발명에 대한 다양한 실시예들 및 고려되는 특별한 사용에 적합한 다양한 수정들을 이해할 수 있다. 본 발명의 범위는 다음의 특허 청구 범위 및 이의 균등물에 의해 한정되어야 함이 의도된다.

Claims (40)

  1. 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템으로서,
    하나 이상의 마이크로프로세서들을 포함하는 미들웨어 머신 환경;
    상기 미들웨어 머신 환경에서 동작하는 제1 노드 및 제2 노드;
    상기 제1 노드 상의 메시지 수신기;
    상기 제2 노드 상의 메시지 전송기; 및
    상기 제1 노드 상에 생성되고 상기 메시지 수신기와 관련된 공유 메모리를 포함하며,
    상기 공유 메모리는:
    메시지들을 저장하기 위한 힙 데이터 구조(heap data structure),
    상기 힙 데이터 구조 내에 메시지들의 어드레스들을 식별하는 메타데이터를 저장하기 위한 제1 링 구조를 포함하는 제1 메시지 큐를 포함하며,
    상기 제1 노드는 상기 제1 링 구조를 상기 제2 노드에 통신하며, 상기 제2 노드는 상기 통신된 제1 링 구조에 응답하여, 상기 제1 메시지 큐를 섀도잉(shadow)하고 상기 메시지 전송기와 관련된 제2 링 구조를 포함하는 제2 메시지 큐를 생성하도록 구성되며,
    상기 제2 노드 상의 상기 메시지 전송기는 메시지를 직접 상기 힙 데이터 구조에 기록하기 위한 상기 힙 데이터 구조의 일 부분을 할당하고, 메타데이터를 상기 힙 데이터 구조 내에서 상기 메시지의 어드레스를 식별하는 상기 제1 메시지 큐에서 유지하도록 동작하며; 그리고
    상기 메시지 전송기는 상기 메시지의 상기 기록을 위해, 그리고 임의의 다른 노드가 상기 공유 메모리를 기록하는 것을 방지하기 위해 상기 메시지의 상기 기록 동안에 상기 제1 메시지 큐를 락킹(locking)하기 위해 RDMA(remote direct memory access)를 사용하도록 구성되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 제1 링 구조 및 제2 링 구조 각각은 헤드 포인터 및 테일 포인터를 가지는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템.
  6. 제5항에 있어서,
    기록기가 상기 공유 메모리 내의 상기 힙 데이터 구조에 메시지를 기록하는 동작을 할 때, 상기 기록기는 상기 제1 링 구조 및 상기 제2 링 구조 둘 모두에 대해 상기 헤드 포인터들을 갱신하고, 그리고
    판독기가 상기 공유 메모리 내의 상기 힙 데이터 구조로부터 메시지를 판독하는 동작을 할 때, 상기 판독기는 상기 제1 링 구조 및 상기 제2 링 구조 둘 모두에 대해 상기 테일 포인터들을 갱신하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템.
  7. 제1항에 있어서,
    상기 제1 노드는 복수의 클라이언트들과 연결되는 서버 상에 있고, 각각의 상기 클라이언트는 상기 공유 메모리에 유지되는 상기 제1 메시지 큐의 프라이빗 카피(private copy)를 킵핑(keep)하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템.
  8. 제7항에 있어서,
    상기 제1 메시지 큐 내의 입력이 클라이언트에 의해 현재 갱신되고 있을 때, 락(lock)이 상기 제1 메시지 큐 상에서 활성화되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템.
  9. 제8항에 있어서,
    모든 다른 클라이언트는 상기 제1 메시지 큐가 락킹됨을 알고 그리고 상기 제1 메시지 큐 내의 상기 입력과 관련된 상기 공유 메모리의 일 대응하는 부분에 액세스하는 것이 차단될 수 있는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템.
  10. 제9항에 있어서,
    또 다른 클라이언트는 상기 메시지 큐 내의 상기 입력과 관련된 상기 공유 메모리의 또 다른 부분에 액세스할 수 있게 되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 시스템.
  11. 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법으로서,
    미들웨어 머신 환경에서 제1 노드 상에 메시지 수신기와 관련된 공유 메모리를 제공하는 단계와, 상기 공유 메모리는:
    메시지들을 저장하기 위한 힙 데이터 구조(heap data structure),
    상기 힙 데이터 구조 내에 메시지들의 어드레스들을 식별하는 메타데이터를 저장하기 위한 제1 링 구조를 포함하는 제1 메시지 큐를 포함하며;
    미들웨어 머신 환경에서 제2 노드 상에 메시지 전송기를 제공하는 단계와;
    상기 제1 노드는 상기 제1 링 구조를 상기 제2 노드에 통신하며, 상기 제2 노드는 상기 통신된 제1 링 구조에 응답하여, 상기 제1 메시지 큐를 섀도잉(shadow)하고 상기 메시지 전송기와 관련된 제2 링 구조를 포함하는 제2 메시지 큐를 생성하도록 구성되며;
    상기 메시지 전송기로 하여금 메시지를 직접 상기 힙 데이터 구조에 기록하기 위한 상기 힙 데이터 구조의 일 부분을 할당하게 하고, 상기 힙 데이터 구조 내에서 상기 메시지의 어드레스를 식별하는 상기 제1 메시지 큐에서 상기 메시지와 관련된 메타데이터를 유지하게 하는 단계를 포함하며; 그리고
    상기 메시지 전송기는 상기 메시지의 상기 기록을 위해, 그리고 임의의 다른 노드가 상기 공유 메모리를 기록하는 것을 방지하기 위해 상기 메시지의 상기 기록 동안에 상기 제1 메시지 큐를 락킹(locking)하기 위해 RDMA(remote direct memory access)를 사용하도록 구성되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 제11항에 있어서,
    상기 제1 링 구조 및 상기 제2 링 구조 각각이 헤드 포인터 및 테일 포인터를 가지도록 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법.
  16. 제15항에 있어서,
    기록기가 상기 공유 메모리 내의 상기 힙 데이터 구조에 메시지를 기록하는 동작을 할 때, 상기 기록기가 상기 제1 링 구조 및 상기 제2 링 구조 둘 모두에 대해 상기 헤드 포인터들을 갱신하도록 하고; 그리고
    판독기가 상기 공유 메모리 내의 상기 힙 데이터 구조로부터 메시지를 판독하는 동작을 할 때, 상기 판독기가 상기 제1 링 구조 및 상기 제2 링 구조 둘 모두에 대해 상기 테일 포인터들을 갱신하도록 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법.
  17. 제11항에 있어서,
    상기 제1 노드가 복수의 클라이언트들과 연결되는 서버 상에 상주하도록 하는 것을 더 포함하며, 각각의 상기 클라이언트는 상기 공유 메모리에 유지되는 상기 제1 메시지 큐의 프라이빗 카피를 킵핑하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법.
  18. 제17항에 있어서,
    상기 제1 메시지 큐 내의 입력이 클라이언트에 의해 현재 갱신되고 있을 때, 상기 제1 메시지 큐 상에서 락을 활성화시키는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법.
  19. 제18항에 있어서,
    모든 다른 클라이언트가 상기 제1 메시지 큐가 락킹됨을 알고 그리고 상기 제1 메시지 큐 내의 상기 입력과 관련된 상기 공유 메모리의 일 대응하는 부분에 액세스하는 것이 차단될 수 있는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법.
  20. 제19항에 있어서,
    또 다른 클라이언트가 상기 메시지 큐 내의 상기 입력과 관련된 상기 공유 메모리의 또 다른 부분에 액세스하도록 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 제공하기 위한 방법.
  21. 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템으로서,
    하나 이상의 마이크로프로세서들에서 실행되는 미들웨어 머신 환경;
    메시지 수신기와, 상기 미들웨어 머신 환경에서 서버 노드에서 상기 메시지 수신기와 관련된 데몬 프로세스(daemon process)를 포함하며,
    상기 메시지 수신기는 하나 이상의 메시지 큐들을 유지하는 공유 메모리를 포함하며;
    상기 데몬 프로세스는:
    클라이언트 노드에서 메시지 전송기로부터의 요청에 응답하여, 상기 메시지 전송기와 통신하기 위해 상기 공유 메모리에 메시지 큐를 생성하고,
    상기 메시지 전송기와 관련된 보안 토큰을 생성하고, 상기 보안 토큰을 상기 메시지 전송기에 전송하고,
    상기 보안 토큰을 수신하는 상기 메시지 전송기에 응답하여, 메시지를 직접 상기 공유 메모리에 기록하기 위해, 상기 메시지 전송기로부터의 상기 공유 메모리 상의 RDMA 동작을 수락(accept)하고, 그리고
    상기 메시지 큐를 통해 상기 메시지의 메타데이터 정보를 수신하도록 동작하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  22. 제21항에 있어서,
    상기 메시지 전송기 상의 서로 다른 프로세스들은 메시지 수신기와 통신하기 위해 적어도 하나의 프록시(proxy)를 사용하는 동작을 하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  23. 삭제
  24. 제21항에 있어서,
    상기 데몬 프로세스는 또한, 보안 네트워크를 통해 상기 서버 노드로부터 상기 클라이언트 노드로 상기 보안 토큰을 전송하도록 구성되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  25. 삭제
  26. 제21항에 있어서,
    상기 데몬 프로세스는 로컬 메시징(local messaging)을 위해 로컬 메시지 큐를 생성하고 보존(reserving)하도록 구성되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  27. 제26항에 있어서,
    상기 로컬 메시지 큐는 상기 공유 메모리의 외부에 있는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  28. 제26항에 있어서,
    로컬 서버 프로세스가 상기 로컬 메시지 큐 및 상기 공유 메모리의 적어도 하나의 메시지 큐 둘 모두로부터 메시지들을 수신하는 동작을 하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  29. 제21항에 있어서,
    상기 메시지 전송기는 큐가 공유 메모리 상에 생성되는지 또는 프라이빗 메모리 상에 생성되는지를 결정하도록 구성되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  30. 제21항에 있어서,
    상기 메시지 전송기는 중단(interruption)이 상기 공유 메모리를 호스팅하는 상기 서버 노드 상에서 발생할 때 복구를 기다릴 필요 없이 상기 공유 메모리에서 상기 RDMA 동작을 계속 수행하도록 구성되는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 시스템.
  31. 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법으로서,
    하나 이상의 마이크로프로세서들에서 실행되는 서버 노드 상의 메시지 수신기 상에 공유 메모리를 제공하는 단계와, 여기서 상기 공유 메모리는 상기 미들웨어 머신 환경에서 하나 이상의 메시지 큐들을 유지하고; 그리고
    상기 메시지 수신기와 관련된 데몬 프로세스를 통해, 메시지 전송기로부터의 요청에 응답하여 메시지 전송기와 통신하기 위해 상기 공유 메모리 내에 메시지 큐를 생성하는 단계;
    보안 토큰을 생성하고 상기 보안 토큰을 상기 메시지 전송기로 전송하는 단계;
    상기 보안 토큰을 수신하는 상기 메시지 전송기에 응답하여, 메시지를 상기 공유 메모리에 직접 기록하기 위해 상기 공유 메모리에서 RDMA 동작을 수락하는 단계; 그리고
    상기 메시지 큐를 통해 상기 메시지의 메타데이터 정보를 수신하는 단계를 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
  32. 제31항에 있어서,
    상기 메시지 전송기 상의 서로 다른 프로세스들이 상기 메시지 수신기와 통신하기 위해 적어도 하나의 프록시를 사용하게 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
  33. 삭제
  34. 제31항에 있어서,
    보안 네트워크를 통해 상기 서버 노드로부터 클라이언트 노드로 상기 보안 토큰을 전송하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
  35. 삭제
  36. 제31항에 있어서,
    로컬 메시징을 위해 로컬 메시지 큐를 생성 및 보존하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
  37. 제36항에 있어서,
    상기 로컬 메시지 큐가 상기 공유 메모리의 외부에 있게 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
  38. 제36항에 있어서,
    로컬 서버 프로세스가 상기 로컬 메시지 큐 및 상기 공유 메모리의 적어도 하나의 메시지 큐 둘 모두로부터 메시지들을 수신하게 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
  39. 제31항에 있어서,
    상기 메시지 전송기가 큐가 공유 메모리 상에 생성되는지 또는 프라이빗 메모리 상에 생성되는지를 결정하게 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
  40. 제31항에 있어서,
    중단이 상기 공유 메모리를 호스팅하는 서버 노드 상에서 발생할 때, 상기 메시지 전송기가 복구를 기다릴 필요 없이 상기 공유 메모리에서 상기 RDMA 동작을 계속 수행하게 하는 것을 더 포함하는 것을 특징으로 하는 미들웨어 머신 환경에서 메시지 큐들을 관리하기 위한 방법.
KR1020147009464A 2011-09-30 2012-09-27 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법 KR102011949B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161542119P 2011-09-30 2011-09-30
US61/542,119 2011-09-30
US13/572,491 US9996403B2 (en) 2011-09-30 2012-08-10 System and method for providing message queues for multinode applications in a middleware machine environment
US13/572,501 US9558048B2 (en) 2011-09-30 2012-08-10 System and method for managing message queues for multinode applications in a transactional middleware machine environment
US13/572,501 2012-08-10
US13/572,491 2012-08-10
PCT/US2012/057634 WO2013049399A1 (en) 2011-09-30 2012-09-27 System and method for providing and managing message queues for multinode applications in a middleware machine environment

Publications (2)

Publication Number Publication Date
KR20140069126A KR20140069126A (ko) 2014-06-09
KR102011949B1 true KR102011949B1 (ko) 2019-08-19

Family

ID=47993694

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147009464A KR102011949B1 (ko) 2011-09-30 2012-09-27 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법

Country Status (7)

Country Link
US (2) US9558048B2 (ko)
EP (1) EP2761454A1 (ko)
JP (2) JP6238898B2 (ko)
KR (1) KR102011949B1 (ko)
CN (1) CN103827829B (ko)
IN (1) IN2014CN01390A (ko)
WO (1) WO2013049399A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9558048B2 (en) * 2011-09-30 2017-01-31 Oracle International Corporation System and method for managing message queues for multinode applications in a transactional middleware machine environment
CN104133728B (zh) * 2013-12-16 2015-07-22 腾讯科技(深圳)有限公司 一种进程间通讯的方法、及装置
US9495325B2 (en) 2013-12-30 2016-11-15 International Business Machines Corporation Remote direct memory access (RDMA) high performance producer-consumer message processing
US10250519B2 (en) * 2014-05-21 2019-04-02 Oracle International Corporation System and method for supporting a distributed data structure in a distributed data grid
CN106575208A (zh) * 2014-07-29 2017-04-19 三菱电机株式会社 显示操作系统
GB2532227B (en) 2014-11-12 2021-10-27 Arm Ip Ltd Methods of communication between a remote resource and a data processing device
US9342384B1 (en) * 2014-12-18 2016-05-17 Intel Corporation Function callback mechanism between a central processing unit (CPU) and an auxiliary processor
US9792248B2 (en) 2015-06-02 2017-10-17 Microsoft Technology Licensing, Llc Fast read/write between networked computers via RDMA-based RPC requests
US10509764B1 (en) * 2015-06-19 2019-12-17 Amazon Technologies, Inc. Flexible remote direct memory access
US10725963B2 (en) 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
US10713210B2 (en) 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager
US10169116B2 (en) 2015-10-21 2019-01-01 International Business Machines Corporation Implementing temporary message queues using a shared medium
CN105446936B (zh) * 2015-11-16 2018-07-03 上海交通大学 基于htm和单向rdma操作的分布式哈希表方法
US10375167B2 (en) 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
CN105933408B (zh) * 2016-04-20 2019-08-13 中国银联股份有限公司 一种Redis通用中间件的实现方法及装置
US10044595B1 (en) * 2016-06-30 2018-08-07 Dell Products L.P. Systems and methods of tuning a message queue environment
CN107612950B (zh) * 2016-07-11 2021-02-05 阿里巴巴集团控股有限公司 一种提供服务的方法、装置、系统、电子设备
US10805436B2 (en) 2016-07-29 2020-10-13 Hewlett Packard Enterprise Development Lp Deliver an ingress packet to a queue at a gateway device
US10313282B1 (en) * 2016-10-20 2019-06-04 Sprint Communications Company L.P. Flexible middleware messaging system
US10198397B2 (en) 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Flow control in remote direct memory access data communications with mirroring of ring buffers
CN106789431B (zh) * 2016-12-26 2019-12-06 中国银联股份有限公司 一种超时监控方法及装置
WO2018129706A1 (en) * 2017-01-13 2018-07-19 Oracle International Corporation System and method for conditional call path monitoring in a distributed transactional middleware environment
CN109032821B (zh) * 2018-08-27 2021-12-28 百度在线网络技术(北京)有限公司 自动驾驶主题消息处理方法、装置、设备及存储介质
CN111327511B (zh) * 2018-12-14 2022-04-12 北京京东尚科信息技术有限公司 即时通讯方法、系统、终端设备与存储介质
CN109815029B (zh) * 2019-01-10 2023-03-28 西北工业大学 一种嵌入式分区操作系统分区间通信的实现方法
JP2020154805A (ja) 2019-03-20 2020-09-24 キオクシア株式会社 マルチプロセッサシステム及び共有メモリの制御方法
CN110109873B (zh) * 2019-05-08 2023-04-07 重庆大学 一种用于消息队列的文件管理方法
US11520572B2 (en) * 2019-09-13 2022-12-06 Oracle International Corporation Application of scheduled patches
CN110955535B (zh) * 2019-11-07 2022-03-22 浪潮(北京)电子信息产业有限公司 一种多业务请求进程调用fpga设备的方法及相关装置
CN111629054B (zh) * 2020-05-27 2022-06-03 北京金山云网络技术有限公司 消息处理方法、装置、系统、电子设备及可读存储介质
CN113626221B (zh) * 2021-08-10 2024-03-15 迈普通信技术股份有限公司 一种消息入队方法及装置
CN113742112B (zh) * 2021-09-15 2024-04-16 武汉联影智融医疗科技有限公司 心电图像的生成方法、系统和电子装置
CN114584566A (zh) * 2022-02-16 2022-06-03 深圳金融电子结算中心有限公司 基于消息队列的数据处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6871265B1 (en) * 2002-02-20 2005-03-22 Cisco Technology, Inc. Method and apparatus for maintaining netflow statistics using an associative memory to identify and maintain netflows
JP2005284840A (ja) * 2004-03-30 2005-10-13 Matsushita Electric Ind Co Ltd メッセージ通信回路、メッセージ送信方法、メッセージ管理方法、およびメッセージ通信システム
US20080069098A1 (en) * 2006-09-15 2008-03-20 Shah Mehul A Group communication system and method
JP2010165022A (ja) 2009-01-13 2010-07-29 Ricoh Co Ltd プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1990014629A2 (en) 1989-05-26 1990-11-29 Massachusetts Institute Of Technology Parallel multithreaded data processing system
JPH0520100A (ja) * 1991-07-11 1993-01-29 Mitsubishi Electric Corp オペレーテイングシステム
JPH0721038A (ja) 1993-06-30 1995-01-24 Hitachi Ltd プログラム間通信方法
JPH07152709A (ja) 1993-11-30 1995-06-16 Hitachi Ltd プロセッサ間通信方法
US5784615A (en) 1994-12-13 1998-07-21 Microsoft Corporation Computer system messaging architecture
JPH08212180A (ja) * 1995-02-08 1996-08-20 Oki Electric Ind Co Ltd プロセス間通信処理装置
US5961651A (en) * 1996-04-15 1999-10-05 Sun Microsystems, Inc. Event notification in a computing system having a plurality of storage devices
US5916307A (en) * 1996-06-05 1999-06-29 New Era Of Networks, Inc. Method and structure for balanced queue communication between nodes in a distributed computing application
US5951657A (en) * 1996-06-19 1999-09-14 Wisconsin Alumni Research Foundation Cacheable interface control registers for high speed data transfer
US6047391A (en) * 1997-09-29 2000-04-04 Honeywell International Inc. Method for strong partitioning of a multi-processor VME backplane bus
US6215792B1 (en) * 1998-06-30 2001-04-10 Motorola, Inc. System, device, and method for initial ranging in a communication network
US6557056B1 (en) 1998-12-30 2003-04-29 Nortel Networks Limited Method and apparatus for exchanging data between transactional and non-transactional input/output systems in a multi-processing, shared memory environment
US6667972B1 (en) * 1999-01-08 2003-12-23 Cisco Technology, Inc. Method and apparatus providing multi-service connections within a data communications device
JP3437933B2 (ja) * 1999-01-21 2003-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション ブラウザ共有方法及びシステム
US6766358B1 (en) 1999-10-25 2004-07-20 Silicon Graphics, Inc. Exchanging messages between computer systems communicatively coupled in a computer system network
US7970898B2 (en) * 2001-01-24 2011-06-28 Telecommunication Systems, Inc. System and method to publish information from servers to remote monitor devices
US6847991B1 (en) * 2000-09-06 2005-01-25 Cisco Technology, Inc. Data communication among processes of a network component
GB0028237D0 (en) * 2000-11-18 2001-01-03 Ibm Method and apparatus for communication of message data
US20020129172A1 (en) * 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US6985951B2 (en) * 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7209996B2 (en) 2001-10-22 2007-04-24 Sun Microsystems, Inc. Multi-core multi-thread processor
US7822980B2 (en) * 2002-03-15 2010-10-26 International Business Machines Corporation Authenticated identity propagation and translation within a multiple computing unit environment
US7330927B1 (en) * 2003-05-07 2008-02-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Apparatus and methodology for a pointer manager
CN100499576C (zh) * 2003-05-27 2009-06-10 国际商业机器公司 在消息传递中间件环境中定义替换信道路由机制的系统
GB0328576D0 (en) 2003-12-10 2004-01-14 Ibm Method and apparatus for browsing a list of data items
US7953903B1 (en) 2004-02-13 2011-05-31 Habanero Holdings, Inc. Real time detection of changed resources for provisioning and management of fabric-backplane enterprise servers
US20050251856A1 (en) * 2004-03-11 2005-11-10 Aep Networks Network access using multiple authentication realms
US7613813B2 (en) * 2004-09-10 2009-11-03 Cavium Networks, Inc. Method and apparatus for reducing host overhead in a socket server implementation
US7546613B2 (en) * 2004-09-14 2009-06-09 Oracle International Corporation Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
JP2008527538A (ja) 2005-01-06 2008-07-24 テーベラ・インコーポレーテッド メッセージング・システム内のキャッシング・エンジン
US7987306B2 (en) * 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
KR100725066B1 (ko) 2005-08-02 2007-06-08 한미아이티 주식회사 다수의 클라이언트와의 데이터 통신을 위한 시스템 서버 및데이터 처리 방법
US8196150B2 (en) * 2005-10-07 2012-06-05 Oracle International Corporation Event locality using queue services
US8255455B2 (en) * 2005-12-30 2012-08-28 Sap Ag Method and system for message oriented middleware virtual provider distribution
US7464121B2 (en) * 2006-01-06 2008-12-09 International Business Machines Corporation Apparatus for sending a sequence of asynchronous messages to the same member of a clustered consumer
JP2007304786A (ja) 2006-05-10 2007-11-22 Nec Corp コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム
US8122144B2 (en) 2006-06-27 2012-02-21 International Business Machines Corporation Reliable messaging using redundant message streams in a high speed, low latency data communications environment
US7996583B2 (en) * 2006-08-31 2011-08-09 Cisco Technology, Inc. Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US7949815B2 (en) 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
US7921427B2 (en) 2007-03-27 2011-04-05 Oracle America, Inc. Method and system for processing messages in an application cluster
JP2009199365A (ja) * 2008-02-21 2009-09-03 Funai Electric Co Ltd マルチタスク処理システム
US8849988B2 (en) * 2008-11-25 2014-09-30 Citrix Systems, Inc. Systems and methods to monitor an access gateway
US20100250684A1 (en) * 2009-03-30 2010-09-30 International Business Machines Corporation High availability method and apparatus for shared resources
JP2011008678A (ja) 2009-06-29 2011-01-13 Hitachi Ltd データ転送装置及びコンピュータシステム
US20110030039A1 (en) 2009-07-31 2011-02-03 Eric Bilange Device, method and apparatus for authentication on untrusted networks via trusted networks
JP5541292B2 (ja) * 2009-10-15 2014-07-09 日本電気株式会社 分散システム、通信手段選択方法および通信手段選択プログラム
US9094210B2 (en) 2009-10-26 2015-07-28 Citrix Systems, Inc. Systems and methods to secure a virtual appliance
CN101719960B (zh) 2009-12-01 2012-07-11 中国电信股份有限公司 通信装置和cdma终端
US8819701B2 (en) 2009-12-12 2014-08-26 Microsoft Corporation Cloud computing monitoring and management system
US8667575B2 (en) 2009-12-23 2014-03-04 Citrix Systems, Inc. Systems and methods for AAA-traffic management information sharing across cores in a multi-core system
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
WO2011140673A1 (en) 2010-05-11 2011-11-17 Intel Corporation Recording dirty information in software distributed shared memory systems
US9009663B2 (en) 2010-06-01 2015-04-14 Red Hat, Inc. Cartridge-based package management
US8667505B2 (en) * 2010-09-14 2014-03-04 Microsoft Corporation Message queue management
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US8924964B2 (en) * 2010-11-01 2014-12-30 Microsoft Corporation Dynamic allocation and assignment of virtual environment
US8595715B2 (en) * 2010-12-31 2013-11-26 International Business Machines Corporation Dynamic software version selection
US9100443B2 (en) * 2011-01-11 2015-08-04 International Business Machines Corporation Communication protocol for virtual input/output server (VIOS) cluster communication
US8839267B2 (en) * 2011-02-21 2014-09-16 Universidade Da Coruna-Otri Method and middleware for efficient messaging on clusters of multi-core processors
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8677031B2 (en) * 2011-03-31 2014-03-18 Intel Corporation Facilitating, at least in part, by circuitry, accessing of at least one controller command interface
US8533734B2 (en) 2011-04-04 2013-09-10 International Business Machines Corporation Application programming interface for managing time sharing option address space
US20120331153A1 (en) 2011-06-22 2012-12-27 International Business Machines Corporation Establishing A Data Communications Connection Between A Lightweight Kernel In A Compute Node Of A Parallel Computer And An Input-Output ('I/O') Node Of The Parallel Computer
US8806269B2 (en) 2011-06-28 2014-08-12 International Business Machines Corporation Unified, workload-optimized, adaptive RAS for hybrid systems
US10216553B2 (en) * 2011-06-30 2019-02-26 International Business Machines Corporation Message oriented middleware with integrated rules engine
US9558048B2 (en) * 2011-09-30 2017-01-31 Oracle International Corporation System and method for managing message queues for multinode applications in a transactional middleware machine environment
WO2013048477A1 (en) 2011-09-30 2013-04-04 Intel Corporation Direct i/o access for system co-processors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6871265B1 (en) * 2002-02-20 2005-03-22 Cisco Technology, Inc. Method and apparatus for maintaining netflow statistics using an associative memory to identify and maintain netflows
JP2005284840A (ja) * 2004-03-30 2005-10-13 Matsushita Electric Ind Co Ltd メッセージ通信回路、メッセージ送信方法、メッセージ管理方法、およびメッセージ通信システム
US20080069098A1 (en) * 2006-09-15 2008-03-20 Shah Mehul A Group communication system and method
JP2010165022A (ja) 2009-01-13 2010-07-29 Ricoh Co Ltd プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体

Also Published As

Publication number Publication date
EP2761454A1 (en) 2014-08-06
CN103827829A (zh) 2014-05-28
CN103827829B (zh) 2017-03-22
JP2014531687A (ja) 2014-11-27
JP2017208145A (ja) 2017-11-24
IN2014CN01390A (ko) 2015-05-08
JP6238898B2 (ja) 2017-11-29
US9558048B2 (en) 2017-01-31
US20130086199A1 (en) 2013-04-04
US20130086183A1 (en) 2013-04-04
US9996403B2 (en) 2018-06-12
KR20140069126A (ko) 2014-06-09
JP6549663B2 (ja) 2019-07-24
WO2013049399A1 (en) 2013-04-04

Similar Documents

Publication Publication Date Title
JP6549663B2 (ja) ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
EP3776162B1 (en) Group-based data replication in multi-tenant storage systems
CN110402568B (zh) 一种通信的方法及装置
US7949815B2 (en) Virtual heterogeneous channel for message passing
US20140359232A1 (en) System and method of a shared memory hash table with notifications
US10133489B2 (en) System and method for supporting a low contention queue in a distributed data grid
KR102059121B1 (ko) 트랜잭셔널 미들웨어 머신 환경에서 컴플렉스 메시지 헤더를 지원하기 위한 시스템 및 방법
EP2845110B1 (en) Reflective memory bridge for external computing nodes
CN111176855A (zh) 在用户空间中建立线程之间的队列
EP2761822B1 (en) System and method for supporting different message queues in a transactional middleware machine environment
CN104769553A (zh) 用于支持集群中的工作共享复用的系统和方法
US7929526B2 (en) Direct messaging in distributed memory systems
AU2010201275A1 (en) A high performance and low latency messaging system
US9811403B1 (en) Method, apparatus and system for performing matching operations in a computing system
US10261723B1 (en) POSIX compliant flash servers
Alves et al. Scalable multithreading in a low latency Myrinet cluster
Ong Network virtual memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant