KR102160850B1 - 메시지 재송신 메커니즘을 위한 기술들 - Google Patents

메시지 재송신 메커니즘을 위한 기술들 Download PDF

Info

Publication number
KR102160850B1
KR102160850B1 KR1020167027985A KR20167027985A KR102160850B1 KR 102160850 B1 KR102160850 B1 KR 102160850B1 KR 1020167027985 A KR1020167027985 A KR 1020167027985A KR 20167027985 A KR20167027985 A KR 20167027985A KR 102160850 B1 KR102160850 B1 KR 102160850B1
Authority
KR
South Korea
Prior art keywords
journal
applications
messages
computer system
segments
Prior art date
Application number
KR1020167027985A
Other languages
English (en)
Other versions
KR20160132433A (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 KR20160132433A publication Critical patent/KR20160132433A/ko
Application granted granted Critical
Publication of KR102160850B1 publication Critical patent/KR102160850B1/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/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Radio Relay Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Optical Communication System (AREA)

Abstract

메시지 재송신 메커니즘 장치들, 방법들 및 시스템들("MRM")의 실시예들은 메시지 저널들에 대한 애플리케이션 요청들을 MRM 구성요소들을 통해 세그먼트된 메시지 스트림들에 대한 신속 액세스로 변환한다. 일 구현에서, MRM은 시스템 동작들 동안에 애플리케이션들에 의해 기록되는 메시지들의 메시지 저널을 획득할 수 있고 완전한 메시지 저널로부터 획득되는 메시지를 메시지 세그먼트들로 분할할 수 있다. 일부 구현들에서, MRM은 신속 메시지 소비를 위한 상기 메시지 세그먼트들에의 액세스를 복구중인 애플리케이션들에 제공할 수 있다.

Description

메시지 재송신 메커니즘을 위한 기술들{TECHNIQUES FOR MESSAGE RETRANSMISSION MECHANISM}
고지
특허장을 위한 본 출원은 메시지 재송신 메커니즘 및 메모리 어드레스 공간 관리 기술들(이하 "본 개시내용")의 다양한 새로운 혁신들 및 발명적 양태들을 개시하고 설명하며 저작권, 마스크 워크, 및/또는 다른 지적 재산 보호를 받는 재료를 포함한다. 그러한 지적 재산의 각각의 소유자들은 본 개시내용이 공개된 특허청 파일/기록들에 나타나 있을 때에 누구에 의한 본 개시내용의 팩시밀리 복사에 대해 반대하지 않지만, 다른 방법으로 모든 권리들을 보유한다.
관련 출원들에 대한 상호 참조
본 출원은 (a) 2014년 3월 11일에 출원된 미국 가출원 번호 61/951,364; 및 (b) 2014년 3월 11일에 출원된 미국 가출원 번호 61/951,390에 대한 우선권을 주장한다. 본 출원의 발명 대상은 2015년 3월 11일에 출원된 공동 계류중인 미국 실용신안 출원 번호 14/644,674와 관련되며, 이 실용신안 출원은 2014년 3월 11일에 출원된 미국 가출원 번호 61/951,374에 대한 우선권을 주장한다. 본 출원의 발명 대상은 또한 2013년 9월 12일에 출원된 PCT 국제 출원 번호 PCT/US2013/059558과 관련된다. 상기 참조된 관련 출원들 각각은 본원에 전체적으로 참조로 포함된다.
분야
본 혁신들은 일반적으로 애플리케이션 메시지 저널링 관리을 기술들을 처리하고, 특히 메시지 재송신 메커니즘 장치들, 방법들 및 시스템들(Message Retransmission Mechanism Apparatuses, Methods and Systems)("MRM")을 포함한다.
컴퓨터 시스템의 일 양태에서, 그것의 동작들 동안에, 소프트웨어 애플리케이션들은 그들이 동작들을 수행하거나 외부 이벤트들에 반응함에 따라 메시지들을 저널에 기록할 수 있다. 그들의 자체 메시지들을 기록하는 것을 제외하고, 소프트웨어 애플리케이션들은 때때로 다른 애플리케이션들에 의해 기록되는 메시지들에 액세스한다.
메시지 재송신 메커니즘 장치들, 방법들 및 시스템들("MRM")의 실시예들은 메시지 저널들에 대한 애플리케이션 요청들을 MRM 구성요소들을 통해 세그먼트된 메시지 스트림들에 대한 신속 액세스로 변환한다. 일 구현에서, MRM은 시스템 동작들 동안에 애플리케이션들에 의해 기록되는 메시지들의 메시지 저널을 획득할 수 있고 완전한 메시지 저널로부터 획득되는 메시지를 메시지 세그먼트들로 분할할 수 있다. 일부 구현들에서, MRM은 신속 메시지 소비를 위한 상기 메시지 세그먼트들에의 액세스를 복구중인 애플리케이션들에 제공할 수 있다.
본 발명의 하나의 특정 실시예에 따르면, 컴퓨터 시스템을 위한 신속 메시지 재송신 방법은 컴퓨터 시스템의 저장 매체에서, 컴퓨터 시스템의 동작들 동안에 애플리케이션들 또는 프로세스들에 의해 기록되는 복수의 메시지들로부터 생성되는 시퀀싱된 메시지들의 마스터 저널을 유지하는 단계 - 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트는 적절히 기능하기 위해 상기 시퀀싱된 메시지들에의 액세스를 필요로 함 -; 페일오버들을 경험할 수 있는 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트에 의한 상기 시퀀싱된 메시지들에의 액세스에 대한 추정된 요구를 결정하는 단계; 상기 추정된 요구에 기초하여, 상기 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 카피들 및/또는 하나 이상의 저널 세그먼트들을 생성하는 단계 - 상기 저널 카피 또는 저널 세그먼트 각각은 임의의 주어진 순간에 단일 애플리케이션 또는 프로세스에 의해 독립적으로 액세스가능함 -; 및 상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을, 요구에 따라, 상기 시퀀싱된 메시지들에서의 페일오버들 또는 갭을 경험했던 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 할당하여, 복수의 애플리케이션들 또는 프로세스들이 상기 마스터 저널의 콘텐츠에 동시에 액세스할 수 있는 것에 의해, 상기 시퀀싱된 메시지들에서의 상기 페일오버들 또는 상기 갭으로부터의 복구에서 상기 일부 애플리케이션들 또는 프로세스들에 의한 상기 마스터 저널 내의 상기 시퀀싱된 메시지들에의 액세스를 더 신속하게 하는 단계를 포함할 수 있다.
본 발명의 다른 특정 실시예에 따르면, 신속 메시지 재송신을 구현하는 컴퓨터 시스템은 적어도 하나의 컴퓨터 프로세서 및 적어도 하나의 컴퓨터 프로세서와 통신하도록 배치되는 적어도 하나의 저장 매체를 포함할 수 있다. 적어도 하나의 저장 매체는 컴퓨터 명령들을 저장할 수 있으며, 컴퓨터 명령들은 적어도 하나의 컴퓨터 프로세서가, 컴퓨터 시스템의 상기 적어도 하나의 저장 매체에서, 컴퓨터 시스템의 동작들 동안에 애플리케이션들 또는 프로세스들에 의해 기록되는 복수의 메시지들로부터 생성되는 시퀀싱된 메시지들의 마스터 저널을 유지하게 하고 - 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트는 적절히 기능하기 위해 상기 시퀀싱된 메시지들에의 액세스를 필요로 함 -; 페일오버들을 경험할 수 있는 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트에 의한 상기 시퀀싱된 메시지들에의 액세스에 대한 추정된 요구를 결정하게 하고; 상기 추정된 요구에 기초하여, 상기 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 카피들 및/또는 하나 이상의 저널 세그먼트들을 생성하게 하고 - 상기 저널 카피 또는 저널 세그먼트 각각은 임의의 주어진 순간에 단일 애플리케이션 또는 프로세스에 의해 독립적으로 액세스가능함 -; 및 상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을, 요구에 따라, 상기 시퀀싱된 메시지들에서의 페일오버들 또는 갭을 경험했던 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 할당하여, 복수의 애플리케이션들 또는 프로세스들이 상기 마스터 저널의 콘텐츠에 동시에 액세스할 수 있는 것에 의해, 상기 시퀀싱된 메시지들에서의 상기 페일오버들 또는 상기 갭으로부터의 복구에서 상기 일부 애플리케이션들 또는 프로세스들에 의한 상기 마스터 저널 내의 상기 시퀀싱된 메시지들에의 액세스를 더 신속하게 한다.
본 발명의 또 다른 특정 실시예에 따르면, 비일시적 컴퓨터 판독가능 매체는 실행될 때, 컴퓨터 시스템이 신속 메시지 재송신을 구현하게 하는 컴퓨터 명령들을 가질 수 있다. 비일시적 컴퓨터 판독가능 매체는 컴퓨터 시스템의 저장 매체에서, 컴퓨터 시스템의 동작들 동안에 애플리케이션들 또는 프로세스들에 의해 기록되는 복수의 메시지들로부터 생성되는 시퀀싱된 메시지들의 마스터 저널을 유지하는 코드 - 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트는 적절히 기능하기 위해 상기 시퀀싱된 메시지들에의 액세스를 필요로 함 -; 페일오버들을 경험할 수 있는 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트에 의한 상기 시퀀싱된 메시지들에의 액세스에 대한 추정된 요구를 결정하는 코드; 상기 추정된 요구에 기초하여, 상기 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 카피들 및/또는 하나 이상의 저널 세그먼트들을 생성하는 코드 - 상기 저널 카피 또는 저널 세그먼트 각각은 임의의 주어진 순간에 단일 애플리케이션 또는 프로세스에 의해 독립적으로 액세스가능함 -; 및 상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을, 요구에 따라, 상기 시퀀싱된 메시지들에서의 페일오버들 또는 갭을 경험했던 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 할당하여, 복수의 애플리케이션들 또는 프로세스들이 상기 마스터 저널의 콘텐츠에 동시에 액세스할 수 있는 것에 의해, 상기 시퀀싱된 메시지들에서의 상기 페일오버들 또는 상기 갭으로부터의 복구에서 상기 일부 애플리케이션들 또는 프로세스들에 의한 상기 마스터 저널 내의 상기 시퀀싱된 메시지들에의 액세스를 더 신속하게 하는 코드를 포함할 수 있다.
본 발명의 하나의 기술적 효과는 애플리케이션들 또는 프로세스들에 의해 시퀀싱된 메시지들의 저널에 대한 액세스 및 저널의 소비를 가속시켜 실패된 애플리케이션들 또는 프로세스들의 복구를 결국 상당히 가속시키는 것이다.
본 발명의 다른 기술적 효과는 저널 액세스에 대한 추정된 요구에 기초하여 저널 카피들/세그먼트들 중에서 로드 밸런싱을 포함한 복수의 애플리케이션들 또는 프로세스들에 의한 저널 액세스의 동적 조정 또는 제어이다.
다른 이득들, 장점들, 또는 기술적 효과들은 본 기술분야의 통상의 기술자들이 본원에서의 본 개시내용을 읽고/읽거나 본 발명의 하나 이상의 실시예들을 실시함으로써 이해될 수 있다.
첨부 부록들, 도면들, 도식들, 이미지들 등은 본 개시내용에 따른 다양한 예시적, 비제한적, 발명적 양태들, 실시예들, 및 특징들("예를 들어", 또는 "예(들)")을 예시한다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 메시지 저널링 관리를 제공하는 MRM의 예들을 예시하는 블록도들을 도시한다.
도 1a는 본 발명의 일 실시예에 따른 메시지 저널링 관리에 대한 하나의 예시적 프로세스를 나타내는 흐름도를 도시한다.
도 2는 본 발명의 실시예들에 따른 복구를 위한 완전한 메시지 저널들의 MRM 구성요소 사본들을 통해 애플리케이션들을 제공하는 예들을 예시하는 도면을 도시한다.
도 3은 본 발명의 실시예들에 따른 복구를 위한 MRM 구성요소를 통해 스트림 세그먼트 메시지 저널들을 애플리케이션들에 제공하는 예들을 예시하는 데이터그래프 도해를 도시한다.
도 4는 본 발명의 실시예들에 따른 MRM 컨트롤러의 예들을 예시하는 블록도를 도시한다.
메시지 재송신 메커니즘 장치들, 방법들 및 시스템들(이하 "MRM")의 실시예들은 메시지 저널들에 대한 애플리케이션 요청들을 MRM 구성요소들을 통해 세그먼트된 메시지 스트림들에 대한 신속 액세스로 변환할 수 있다.
도 1은 애플리케이션 메시지 저널링 관리를 메시지 저널들에의 액세스를 요구하는 애플리케이션들에 제공하는 MRM의 예들을 예시하는 블록도들을 도시한다. 일부 구현들에서, 애플리케이션들은 그들이 정상 시스템 동작들 동안에 동작들을 수행하고/하거나 외부 이벤트들에 반응함에 따라 메시지들을 저널에 기록한다. 예를 들어, 애플리케이션들은 보안 트랜잭션들 및 마켓들과 관련되는 메시지들과 같지만 이들에 제한되지 않는 외부 당사자들에서 비롯하는 메시지들을 수신하고 처리할 필요가 있을 수 있다. 예를 들어, 전자 거래 시스템의 소프트웨어 애플리케이션들은 주문 입력, 수정, 취소 등과 같지만, 이들에 제한되지 않는 금융 정보 익스체인지(Financial Information eXchange)(FIX) 포맷 메시지들, 거래 메시지들, 주문 확인 보고들, 마켓 데이터 메시지들 및/또는 유사한 것을 교환하고 처리하고 있을 수 있다. 일부 실시예들에서, 애플리케이션들은 그들이 메시지들을 다른 애플리케이션들 및/또는 외부 제3자들과 교환하고 메시지들을 처리하고 그들에 따라 행동하므로 그들의 활동들을 레코딩하기 위해 저널로 기록될 수 있다. 일부 실시예들에서, 애플리케이션들은 시스템 동작 동안에 실행되는 다른 애플리케이션들의 일부 또는 전부의 활동들을 통지받을 필요가 있을 수 있고, 일부 실시예들에서 모든 애플리케이션들에 의해 기록되는 메시지들을 포함할 수 있는 메시지 저널에 액세스할 필요가 있을 수 있다. 예를 들어, 애플리케이션(101)은 저널 메시지들의 그것의 소비에서 갭을 가질 수 있고 갭을 채우기 위해 저널에 액세스할 필요가 있을 수 있다. 예를 들어, 애플리케이션은 송신 문제들의 결과로서(예를 들어, 네트워크 계층 등에서) 크래쉬 및/또는 드롭 메시지들을 가질 수 있고, 저널로부터 분실 메시지들을 복구할 필요가 있을 수 있다. 일부 실시예들에서, 그것은 또한 그 자체의 메시지들을 저널로 기록할 필요가 있을 수 있다.
일부 구현들에서, 애플리케이션(101)은 분실된 메시지들에 정기적으로 재액세스하고 그것의 저널 메시지 소비에서 임의의 갭들을 채우기 위해 저널에 액세스할 필요가 있을 수 있다. 일부 구현들에서, 저널의 메시지들에 대한 애플리케이션의 반복된 요청들은 동일한 저널에 대한 액세스를 위한 다른 애플리케이션들(102) 요청들을 방해할 수 있다. 예를 들어, 애플리케이션(101)에 의한 요청은 다른 애플리케이션들(102)의 요청들과 경쟁하고 애플리케이션들의 큐가 저널에 액세스하기 위해 그들의 순번을 대기하는 것을 야기할 수 있다(예를 들어 103). 일부 구현들에서, 대기 애플리케이션들은 분실 메시지들을 복구하려고 자체 시도하고 있을 수 있고, 그들은 저널이 이용가능해지는 것을 대기함에 따라, 그들은 결국 그들의 복구에 있어서 더 뒤처질 수 있다. 예를 들어, 다른 애플리케이션들은 애플리케이션이 대기하고 있는 동안에 저널로 기록되어, 애플리케이션이 큐에 있을 때 그것이 저널로 기록되는 메시지들에 액세스할 필요가 있을 수 있음에 따라 대기 애플리케이션에 대한 증가된 복구 시간을 야기할 수 있다(예를 들어 104). 일부 구현들에서, 이것은 후속 대기 애플리케이션들에 대한 대기 및 복구 시간을 증가시키는 연쇄 반응을 생성할 수 있고 대기 애플리케이션들 및/또는 시스템에 대한 저하된 성능을 전체로서 야기할 수 있다.
일부 구현들에서, MRM은 다수의 사본 카피들의 생성 및 완전한 메시지 저널의 세그먼트화를 통해 저널들에 대한 신속 액세스를 애플리케이션들에 제공할 수 있다(예를 들어 106). 예를 들어, MRM은 일련의 저널들이 복구하기 위해 애플리케이션들에 1 초과의 소스를 제공하면 애플리케이션들에 도움이 될 수 있다. 이러한 실시예들에서, 저널들에 액세스하는 프로세스는 더 많은 큐들이 있지만 더 짧은 큐들이 있을 수 있다는 점에서 더 로드 밸런싱될 수 있다.
일부 실시예들에서, 훨씬 더 짧은 큐들은 그래도 긴 대기 시간을 가질 수 있다. 예를 들어, 복구 애플리케이션은 따라잡기 위해 대량의 메시지들을 가질 수 있고, 그와 같이 저널에서 긴 시간이 걸릴 수 있어, 큐에서 다른 애플리케이션들에 대한 긴 지연을 야기하지만, 큐가 짧아진다. 따라서, MRM은 완전한 메시지 저널을 수개의 세그먼트들로 분할하고 세그먼트들을 수개의 애플리케이션들에 동시에 도움이 되게 함으로써 저널 액세스 지점에서 신속 턴어라운드를 더 제공할 수 있다. 예를 들어, 애플리케이션들은 연장된 시간의 양을 하나의 저널에서 소비하고 복구를 위한 저널들에의 액세스를 요구하는 다른 애플리케이션들에 지연을 야기하는 것 없이 하나의 세그먼트 저널로부터 그들이 단지 복구를 위해 요구하는 관련 메시지들을 획득하는 다른 것으로 진행될 수 있다.
도 2를 참조하여, 일부 구현들에서, 애플리케이션들(207)은 그들이 동작들을 수행하거나 외부 이벤트들에 반응함에 따라 메시지들을 저널(201)에 기록할 수 있다. 일부 구현들에서, 애플리케이션들(208 내지 209)은 시스템 동작들 동안에 다른 애플리케이션들의 메시지들을 판독하고 모든 활동들을 따라가고 있을 수 있다. 예를 들어, 애플리케이션 A는 저널(201)의 첫 번째 3개의 행들에 메시지들을 기록할 수 있고, 후속 애플리케이션 B는 또한 저널 내의 이용가능 행들(예를 들어, 다음 3개의 행들)의 다음 배치 상에 그 자체의 메시지들을 기록하고 있음에 따라 이러한 메시지들을 판독할 수 있다. 일부 구현들에서, 애플리케이션(210)은 저널링된 메시지들의 그것의 소비에서 갭을 경험했을 수 있다. 예를 들어, 애플리케이션은 네트워크 계층에서 송신 문제들의 결과로서 드롭 메시지들을 가질 수 있고 이제 분실된 메시지들을 복구하는 수단을 요구할 수 있다(예를 들어 211). 일부 구현들에서, 저널에 대한 액세스를 구할 수 있는 다른 애플리케이션들이 그들의 자체 복구 요구들을 위해 있을 수 있고 큐는 하나의 저널만이 있거나, 이용가능한 저널 카피들의 수가 큐에서 애플리케이션들의 요구들을 충족시키기에 충분하지 않으면 형성될 수 있다. 일부 구현들에서, MRM은 애플리케이션들이 신속 액세스를 분실된 메시지들에 허용하기 위해 완전한 메시지 저널의 사본 카피들(202 내지 204)을 제공할 수 있다(예를 들어 213). 예를 들어, 하나의 저널이 주어진 애플리케이션에 의해 점유되면, 다른 애플리케이션들은 제1 저널의 사본들일 수 있는 다른 이용가능 저널들 중 하나로부터 분실된 메시지들을 복구할 수 있다(예를 들어 212).
일부 구현들에서, 다수의 사본 저널들의 경우에도, 큐는 하나의 애플리케이션이 저널을 연장된 시간 기간 동안 점유하면 형성될 수 있다. 예를 들어, 애플리케이션은 새로운 것으로 시작될 수 있고/있거나 대량의 메시지들을 분실했을 수 있다. 예를 들어, 애플리케이션은 뒤늦게 시작되었을 수 있고 이미 처리되었을 수 있는 메시지들의 모두까지 잡을 필요가 있을 수 있다. 일부 구현들에서, 애플리케이션은 모든 분실된 메시지들을 복구하고 처리하는데 긴 시간이 걸려서, 단일 저널을 점유하고 저널에 액세스할 필요가 있을 수 있는 다른 애플리케이션들에 대한 큐 및 지연된 복구를 야기할 수 있다.
도 3을 참조하여, 일부 실시예들에서, 애플리케이션들(307 내지 309)은 도 2를 참조하여 상기 상세히 설명된 바와 같이, 그들이 동작들을 수행하거나 외부 이벤트들에 반응함에 따라 메시지들을 저널(301)에 기록할 수 있고, 또한 다른 애플리케이션들에 의해 저널에 기록되는 메시지들을 따라잡을 필요가 있을 수 있다. 일부 실시예들에서, 분실된 메시지들을 복구하는 애플리케이션은 저널을 연장된 시간 동안 점유하고, 동일한 저널에 대한 액세스를 위해 다른 애플리케이션들의 요청들과 경쟁할 수 있다. 일부 실시예들에서, MRM은 완전한 메시지 저널 및/또는 그것의 다수의 사본 카피들의 세그먼트화를 통해 저널들에 대한 신속 액세스를 애플리케이션들에 제공할 수 있다(예를 들어 311). 예를 들어, MRM은 완전한 메시지 저널을 세그먼트들(302 내지 304)로 분할하고 특정 세그먼트들을 특정 저널들에 할당하여 메시지 세그먼트들을 수개의 애플리케이션들에 동시에 도움이 되게 할 수 있다(예를 들어 313).
일부 실시예들에서, 분실된 메시지들을 복구하도록 추구하는 분리 애플리케이션(310)은 원래의 완전한 메시지의 다른 세그먼트를 획득하기 위해 다음 저널로 이동하기 전에, 하나의 세그먼트로부터 완전한 저널 메시지의 세그먼트를 획득할 수 있다. 그러한 실시예들에서, 애플리케이션이 각각의 저널에서 소비하는 시간은 하나의 저널만으로부터 완전한 메시지를 획득하려고 소비했던 것 미만일 수 있다. 예를 들어, 분리 애플리케이션은 하나의 저널로부터 메시지 세그먼트를 획득하면, 그것은 다른 저널로 이동하여 다른 애플리케이션들에게 상기 하나의 저널에의 더 빠른 액세스를 허용할 수 있다. 일부 실시예들에서, 분리 애플리케이션이 메시지 갭을 여전히 가지면, 그것은 관련 메시지 세그먼트들을 포함하고 이러한 저널들로부터 그러한 메시지들을 액세스하는 다른 저널들로 진행될 수 있다. 일부 실시예들에서, 각각의 애플리케이션이 주어진 저널에서 소비하는 시간이 제한되어, 애플리케이션들의 더 짧고 더 빠른 큐들이 저널들에 저장되는 메시지들에 대한 액세스를 대기하는 것을 허용할 수 있다. 예를 들어, 세그먼트 메시지 저널들의 경우, 각각의 애플리케이션이 임의의 주어진 저널 상에 소비하는 시간은 완전한 메시지를 갖는 저널 상에 소비되었던 것 미만일 수 있고, 그와 같이 분실된 메시지들을 수신하려고 시도하는 애플리케이션들을 위해 채워지는 더 빠른 메시지 갭을 초래할 수 있다(예를 들어 312).
도 1a는 본 발명의 일 실시예에 따른 메시지 저널링 관리를 위한 하나의 예시적 프로세스를 예시하는 흐름도를 도시한다. 예시적 프로세스 또는 그것의 변형들은 이벤트들이 발생하는 순서 또는 시퀀스가 중요한 임의의 컴퓨터 시스템에 구현될 수 있다. 예를 들어, 컴퓨터 시스템은 전자 거래 시스템, 경매 기반 판매 시스템, 또는 게임 시스템일 수 있다. 예시를 위해, 바람직한 실시예들은 증권 거래소에 의해 구현되는 것과 같은 전자 거래 시스템의 맥락에서 설명된다.
단계(110)에서, 컴퓨터 시스템은 그것의 저장 매체에서 시퀀싱된 메시지들의 마스터 저널을 유지할 수 있다. 예를 들어, 주식들 및 채권들과 같은 금융 상품들을 위한 전자 거래 시스템에서, 코어 소프트웨어 애플리케이션들, 예컨대 FIX 주문 입력/거래 게이트웨이들, 매칭 엔진, 마켓 데이터 애플리케이션들, 참조 데이터 애플리케이션들, 및 거래 후 통합 애플리케이션들은 하나 이상의 컴퓨터 서버들 상에 동시에 실행하고 있을 수 있고, 애플리케이션들 모두는 중앙 메시징 버스를 통해 통신하는 것에 의해 다수의 메시지들을 임의의 주어진 순간에 생성한다. 이러한 메시지들은 주문들, 거래들, 시세들, 인터 애플리케이션 통신 등을 포함할 수 있지만, 이들에 제한되지 않는다. 비시퀀싱된 메시지들은 그들이 처리/시퀀싱된 주문에 따라 그들을 시퀀싱된 스트림으로 배열하는 시퀀서를 통해 모두 라우팅된다. 그 결과, 시퀀서는 모든 메시지들의 고충실 결정론적 레코드(또한 "저널"로 공지됨)를 그들의 바른 순서로 계속 생성한다.
그 다음, 저널은 재발행되거나 또는 각각의 기능들을 수행하기 위해, 시퀀싱된 메시지들에의 액세스를 요구하는 거래 시스템의 구성요소들에 이용가능해진다. 구성요소들(예를 들어, 애플리케이션 또는 프로세스, 이하 간단히 "애플리케이션"으로 언급됨) 중 하나가 페일오버로부터 복구되어야 하면, 그것의 의도된 기능 상태로 복귀하기 위해, 메시지 저널에 액세스함으로써, 메시지들의 계속 증가하는 시퀀스를 따라잡아야 한다. 예를 들어, 단지 10 초의 충돌은 애플리케이션이 수백만 개의 메시지들을 놓치게 할 수 있다 - 애플리케이션은 그것이 다시 기능할 수 있기 전에 수백만 배의 메시지들을 따라잡아야 한다. 따라서, 메시지 저널은 시스템 복구 및 리던던시에 중요하다. 메시지 저널은 또한 익스체인지가 그것의 북 및 레코드 요건들을 충족시키는 것을 돕는다.
그러나, 상당한 수의 애플리케이션들이 실패했으면, 예를 들어 수개의 애플리케이션들을 지원하는 서버의 하드웨어 장애로 인해, 메시지 저널에의 액세스에 대한 요구는 특히 바쁜 거래 시간들 동안에 스파이크될 것이다. 아주 많은 애플리케이션들이 메시지 스트림을 따라잡기를 원하는 경우, 그들은 큐에서 대기해야 한다: 하나의 애플리케이션이 저널로부터 판독되는 "웰에" 있으면, 다른 것은 그것 뒤에서 일렬로 대기해야 한다. 그들이 따라잡는 것을 대기하고 있는 동안에, 저널링된 메시지들의 수는 계속 증가하여, 그러한 애플리케이션들(빠르게 복구하려고 시도하고 있음)이 더 뒤처지게 한다.
따라서, 실패된 애플리케이션들에 의한 메시지 저널에의 액세스에 대한 요구를 추정하는 것이 바람직하다(단계(112)에서). 컴퓨터 시스템의 현재 및/또는 과거 성능에 기초하여, 어느 하드웨어 및/또는 소프트웨어 구성요소(들)가 실패를 경험할지, 그리고 어느 또는 얼마나 많은 애플리케이션들이 실패에 의해 영향을 받을 수 있는지가 예견되거나 예측될 수 있다. 공지되거나 잠재적인 소프트웨어 장애들, 공지되거나 잠재적인 하드웨어 장애들, 소프트웨어 또는 하드웨어 장애에 영향을 받는 애플리케이션들 또는 프로세스들의 수, 애플리케이션 또는 프로세스가 저널, 저널 카피, 또는 저널 세그먼트 내의 메시지들에 액세스하는 속도, 실패된 애플리케이션 또는 프로세스에 대한 원하는 복구 시간(예를 들어, 얼마나 빨리 완전히 복구하는지 또는 완전히 복구하는데 걸리는 최대 시간의 양), 및 컴퓨터 시스템의 예상된 작업부하(예를 들어 시각 또는 요일에 따라 변화될 수 있음)를 포함하지만 이들에 제한되지 않는, 다수의 인자들이 저널 액세스에 대한 추정된 요구를 결정하기 위해 고려될 수 있다.
추정된 요구에 기초하여, 컴퓨터 시스템은 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 카피들을 생성(단계(114)에서)하고/하거나 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 세그먼트들(단계(116)에서)을 생성하도록 구성될 수 있다. 본 발명의 실시예들에 따르면, 저널 세그먼트들은 메시지 저널의 마스터 카피(또는 "골든 카피")로부터 직접 또는 단계(114)에서 생성되는 저널 카피들 중 하나로부터 생성될 수 있다. 저널 카피들 및/또는 저널 세그먼트들의 생성은 전용 소프트웨어 또는 하드웨어 모듈 예컨대 리피터로 달성될 수 있다.
다음에, 단계(118)에서, 저널 카피들 및/또는 저널 세그먼트들은 실패된 애플리케이션들에 그들의 복구를 더 신속히 처리하도록 할당될 수 있다. 할당은 다수의 방식들로 달성될 수 있다. 예를 들어, 저널 카피들 또는 세그먼트들은 실패된 애플리케이션들에 미리 할당되거나 애플리케이션들은 저널 카피들/세그먼트들에 미리 할당될 수 있다. 대안으로(및 더 바람직하게), 애플리케이션은 저널 콘텐츠의 지정된 부분에의 액세스를 간단히 요청할 수 있고 그것이 비점유된 저널 카피/세그먼트를 발견할 때까지 대기한다―고객들이 다수의 캐셔들에 의해 집합적으로 서빙되는 단일 큐를 형성하고 일렬의 첫 번째 사람이 다음에 이용가능해지는 캐셔에게 가는 일부 식료품 계산대들과 매우 같음. 바람직하게, 저널 카피들/세그먼트들의 수는 애플리케이션들 중 어느 것도 그것의 순번을 위해 긴 큐에 대기해야 하지 않도록 전체 수의 실패된 애플리케이션들을 수용하기에 충분히 크다. 일 실시예에 따르면, 저널 카피들/세그먼트들은 실패된 애플리케이션들 각각에 의한 즉각적인 액세스를 허용하거나 각각의 큐에서 단지 2 내지 3개의 애플리케이션들을 갖는 큐들에 할당되기에 충분할 수 있다.
더 특정한 예에 대해, 1 밀리초(즉, 1000 나노초)가 최대 복구 시간으로 선택되고 10개의 실패된 애플리케이션들이 저널을 따라잡음으로써 복구해야 한다고 추정되면, 평균적으로 각각의 애플리케이션이 저널에 그것의 액세스를 완료하는데 100 나노초보다 더 길지 않게 걸려야 한다. 메시지에 액세스하도록 애플리케이션에 의해 취해지는 시간의 양은 (a) X 비트들 및/또는 바이트들의 단위로 메시지들의 크기 및 (b) 비트들 또는 바이트들을 처리하는데 걸리는 나노초의 수에 기초하여 산출되거나 추정될 수 있다. 100 나노초 내에 처리될 수 있는 메시지들의 최대 수는 저널 세그먼트들의 크기에 관한 제한으로서 산출될 수 있다.
다수의 옵션들이 저널 카피들 또는 저널 세그먼트들의 수를 구성하기 위해 이용가능할 수 있다. 예를 들어, 제1 애플리케이션만이 저널에 액세스할 수 있는 10개의 애플리케이션들을 갖는 단일 큐를 갖는 대신에, 저널 콘텐츠는 동일한 저널의 2개의 카피들이 10개의 애플리케이션들―큐 당 5개의 애플리케이션들을 갖는 2개의 큐들에 할당될 수 있도록 저널 카피에 복제될 수 있다. 더 좋게는, 동일한 저널의 5개의 카피들은 10개의 애플리케이션들―큐 당 2개의 애플리케이션들을 갖는 5개의 큐들에 이용가능해져서, 5개의 애플리케이션들이 저널들에 액세스하는 것을 허용할 수 있다. 그 결과, 10개의 애플리케이션들에 대한 복구 시간은 상당히 단축될 수 있다.
대안으로, 10개의 애플리케이션들이 메시지 저널의 상이한 부분들에 액세스할 필요가 있는 정도까지, 하나 이상의 저널 카피들은 저널 세그먼트들로 더 분할될 수 있으며 각각의 세그먼트는 시퀀싱된 메시지들의 더 짧은 스트림을 갖는 메시지 저널의 서브세트를 포함한다. 예를 들어, 10개의 실패된 애플리케이션들의 경우, 3개의 저널 카피들이 생성될 수 있고 저널 카피들 중 하나는 3개의 저널 세그먼트들로 더 분할될 수 있다. 따라서, 5개의 큐들은 각각의 큐에서 2개의 애플리케이션들로 형성될 수 있으며, 애플리케이션들의 2개의 큐들은 전체 저널 카피들 중 2개에 액세스하는 반면에 3개의 큐들은 3개의 저널 세그먼트들에 액세스한다. 어느 하나의 접근법(저널 세그먼트들을 갖거나 갖지 않음)에서, 추가 로드 밸런싱은 예를 들어 저널 카피들 및/또는 저널 세그먼트들의 각각의 할당들을 조정하기 위해, 애플리케이션들의 큐들에 적용될 수 있다.
저널 카피들 및/또는 저널 세그먼트들이 생성되고 애플리케이션들에 할당된(예를 들어, 애플리케이션들에 미리 할당되거나 요구에 따라 할당된) 후에, 컴퓨터 시스템은 저널링된 시퀀스에 더 많은 메시지들을 계속 축적한다. 따라서, 메시지 저널의 "골든 카피"는 최신의 시퀀싱된 메시지들로 일정하게 갱신된다.
그러나, 이전에 생성된 저널 카피들/세그먼트들의 콘텐츠는 뒤처질 수 있고 불완전해질 수 있다.
다수의 완전한 저널 카피들의 경우에, 각각의 저널 카피는 시퀀싱된 스트림을 계속 판독하여, 그 자체의 저널에 추가할 수 있고, 그것은 스트림이 시퀀싱되고 따라서 결정적이기 때문에 - 모든 저널들은 그들의 시퀀스 번호들에 따라 동일한 순서로 모든 메시지들을 가짐 -, 다른 저널 카피들과 동기화되지 않는 걱정 없이 이것을 행할 수 있다. 임의의 메시지들이 분실되면, 이때 저널 카피는 분실 메시지들을 다시 채우기 위해 다른 저널 카피로부터 재요청할 것이다. 메시지들이 채워지면, 그것은 실시간으로 스트림으로부터 판독하는 것을 재개한다.
세그먼트 저널들의 경우에, 각각의 저널 세그먼트는 완료되면, 고정될 것이고 다음 활성 빌딩 세그먼트가 활성될 것이다. 예를 들어, 각각의 세그먼트가 10개의 메시지들을 유지하고, 35개의 메시지들이 스트림에 기록되었다면 3개의 완료 및 고정 세그먼트들, 및 그것의 10개의 메시지 용량 중 5개가 채워진 하나의 활성 빌딩 세그먼트를 가질 것이다. 그것이 나머지 5개의 메시지들을 성공적으로 판독하면 그것은 고정이고 제5 세그먼트가 시작된다. 그것이 임의의 메시지들을 놓치면, 그것은 드롭 메시지 #8이라 하고, 메시지 #8을 재요청할 것이고, 그것이 그것을 얻으면, 메시지들 #9 및 #10으로 진행된다. 경합 조건들이 있을 수 있으며 그것이 #8을 재요청하고 있는 동안에, #9는 시퀀싱되고 그것은 #9를 또한 놓치므로 #9를 재요청해야 한다. 결국 그것은 따라잡기 위해 경합하고 다시 실시간 스트림으로 재전이된다.
따라서, 전체 저널 카피 또는 저널 세그먼트가 불완전해지는 유일한 방식은 전형적으로 그것이 메시지를 놓칠 때이고, 그것은 그 메시지를 재요청해야 한다. 저널 세그먼트들의 경우에, 완전한 집합 저널 레코드는 가장 최근의 활성 빌딩 세그먼트가 메시지들을 분실했고 불완전하면 불완전해질 수 있다.
단계(120)에서, 저널 카피들/세그먼트들이 계속 증가하는 메시지 저널을 따라잡기 위해, 저널 카피들/세그먼트들 중 적어도 하나에 대한 콘텐츠는 마스터 저널(즉, 골든 카피)의 콘텐츠 또는 다른 (더 갱신된) 저널 카피/세그먼트의 콘텐츠로 갱신되거나 이들과 동기화될 수 있다.
(비세그먼트된) 저널 카피들은 실시간으로 동적으로 갱신하고 따라서 길이에 있어서 계속적으로 증가하고 있을 수 있다. 저널 세그먼트들에 대해, 메시지들의 수가 저널 세그먼트 당 1000으로 제한되면, 이때 새로운 세그먼트들은 모든 1001번째 메시지로 시작될 것이고 1000번째 메시지까지 동적으로 갱신될 것이다. 애플리케이션은 동적으로 갱신되고 있는 저널 세그머트를 재요청할 필요가 있으면, 그것은 "따라잡히고" 저널 세그먼트와 동시에 스트림으로부터 판독을 시작할 수 있기 전에 가장 최근의 메시지 시퀀스 번호까지만을 요청할 필요가 있을 것이다.
본 발명의 일부 실시예들에 따르면, 저널 카피들 및/또는 저널 세그먼트들은 다수의 티어들의 계층으로 조직될 수 있고 하나의 저널 카피/세그먼트는 다른 저널 카피/세그먼트로부터 "따라잡는" 것이 가능할 수 있다. 예를 들어, 저널 카피들/세그먼트들은 티어-1, 티어-2, 티어-3 등으로 지정될 수 있다. 티어-1 저널 카피/세그먼트는 "골든 카피"로 항상 최신이고 그들이 따라잡아야 할 때 티어-2 및/또는 티어-3 저널 카피들/세그먼트들에 의해서만 액세스될 수 있다. 티어-2 저널 카피/세그먼트는 다른 티어-2 저널 카피들/세그먼트들로부터, 그리고 필요하다면 티어-1 저널 카피/세그먼트로부터만 따라잡을 수 있고; 티어-3 저널 카피/세그먼트는 다른 티어-3 저널 카피들/세그먼트들, 그리고 필요하다면 티어-2 또는 티어-1 저널 카피/세그먼트로부터만 따라잡을 수 있다.
MRM 컨트롤러
도 4는 MRM 컨트롤러(401)의 예들을 예시하는 블록도를 도시한다. 이러한 실시예에서, MRM 컨트롤러(401)는 다양한 기술들, 및/또는 다른 관련 데이터를 통해 컴퓨터와의 상호작용들을 집성, 처리, 저장, 검색, 서빙, 식별, 명령, 생성, 매칭, 및/또는 용이하게 하는 역할을 할 수 있다.
사람들 및/또는 다른 시스템들일 수 있는 사용자들, 예를 들어 433a는 정보 처리를 용이하게 하기 위해 정보 기술 시스템들(예를 들어, 컴퓨터들)을 결합할 수 있다. 결과적으로, 컴퓨터들은 정보를 처리하기 위해 프로세서들을 이용하며; 그러한 프로세서들(403)은 중앙 처리 유닛들(central processing units)(CPU)로 언급될 수 있다. 하나의 형태의 프로세서는 마이크로프로세서로 언급된다. CPU들은 다양한 동작들을 가능하게 하기 위해 명령들의 역할을 하는 이진 인코딩 신호들을 전달하기 위해 통신 회로들을 사용한다. 이러한 명령들은 메모리(429)(예를 들어, 레지스터들, 캐시 메모리, 랜덤 액세스 메모리 등)의 다양한 프로세서 액세스가능 및 동작가능 영역들 내의 다른 명령들 및 데이터를 포함하고/하거나 참조하는 동작 및/또는 데이터 명령들일 수 있다. 그러한 통신 명령들은 원하는 동작들을 용이하게 하기 위해 프로그램들 및/또는 데이터 구성요소들로 배치들(예를 들어, 명령들의 배치들)에 저장 및/또는 송신될 수 있다. 이러한 저장된 명령 코드들, 예를 들어 프로그램들은 원하는 동작들을 수행하기 위해 CPU 회로 구성요소들 및 다른 마더보드 및/또는 시스템 구성요소들을 결합할 수 있다. 하나의 타입의 프로그램은 컴퓨터 상의 CPU에 의해 실행될 수 있는 컴퓨터 운영 체제이며; 운영 체제는 사용자들이 컴퓨터 정보 기술 및 자원들을 액세스하고 동작시키는 것을 가능하게 하고 용이하게 한다. 정보 기술 시스템들에 이용될 수 있는 일부 자원들은 데이터가 컴퓨터 내로 및 외로 전달될 수 있는 입력 및 출력 메커니즘들; 데이터가 저장될 수 있는 메모리 스토리지; 및 정보가 처리될 수 있는 프로세서들을 포함한다. 이러한 정보 기술 시스템들은 데이터베이스 프로그램을 통해 용이하게 될 수 있는 나중의 검색, 분석, 및 조작을 위한 데이터를 수집하기 위해 사용될 수 있다. 이러한 정보 기술 시스템들은 사용자들이 다양한 시스템 구성요소들을 액세스하고 동작시키는 것을 허용하는 인터페이스들을 제공한다.
일 실시예에서, MRM 컨트롤러(401)는 사용자 입력 디바이스들(411)로부터의 하나 이상의 사용자들; 주변 디바이스들(412); 임의적 암호 프로세서 디바이스(428); 및/또는 통신 네트워크(413)와 같지만, 이들에 제한되지 않는 엔티티들에 연결될 수 있고/있거나 엔티티들과 통신할 수 있다. 예를 들어, MRM 컨트롤러(401)는 사용자들, 예를 들어 433a, 개인용 컴퓨터(들), 서버(들)를 포함하지만, 이들에 제한되지 않는 동작 클라이언트 디바이스(들), 예를 들어 433b 및/또는 휴대 전화(들), 스마트폰(들)(예를 들어, iPhone®, Blackberry®, 안드로이드 OS 기반 전화들 등), 태블릿 컴퓨터(들)(예를 들어, 애플 iPad™, HP Slate™, 모토롤라 Xoom™ 등), 전자책 리더(들)(예를 들어, 아마존 Kindle™, 반드 앤 노블의 Nook™ eReader 등), 랩톱 컴퓨터(들), 노트북(들), 넷북(들), 게임 콘솔(들)(예를 들어, XBOX Live™, Nintendo® DS, 소니 PlayStation® 포터블 등), 휴대용 스캐너(들), 및/또는 유사한 것을 포함하지만, 이들에 제한되지 않는 다양한 모바일 디바이스(들)에 연결될 수 있고/있거나 이들과 통신할 수 있다.
네트워크들은 그래프 토폴로지에 클라이언트들, 서버들, 및 중개 노드들의 상호연결 및 상호작용을 포함하는 것으로 통상 생각된다. 본 명세서 도처에서 사용되는 바와 같은 용어 "서버"는 일반적으로 통신 네트워크에 걸친 원격 사용자들의 요청들을 처리하고 요청들에 응답하는 컴퓨터, 다른 디바이스, 프로그램, 또는 그것의 조합을 언급한다는 점이 주목되어야 한다. 서버들은 그들의 정보를 요청 "클라이언트들"에 서빙한다. 본원에 사용되는 바와 같은 용어 "클라이언트"는 일반적으로 요청들을 처리하고 요청들을 하며 통신 네트워크에 걸친 서버들로부터 임의의 응답들을 획득하고 처리할 수 있는 컴퓨터, 프로그램, 다른 디바이스, 사용자 및/또는 그것의 조합을 언급한다. 정보 및 요청들을 용이하게 하고, 처리하고/하거나, 소스 사용자로부터 목적지 사용자로 정보의 전달을 촉진하는 컴퓨터, 다른 디바이스, 프로그램, 또는 그것의 조합은 "노드"로 통상 언급된다. 네트워크들은 일반적으로 소스 지점들로부터 목적지들로 정보의 전달을 용이하게 하는 것으로 생각된다. 소스로부터 목적지로 정보의 전달을 촉진하는 작업이 구체적으로 주어지는 노드는 "라우터"로 통상 칭해진다. 많은 형태들의 네트워크들 예컨대 근거리 네트워크들(Local Area Networks)(LANs), 피코 네트워크들, 광역 네트워크들(Wide Area Networks)(WANs), 무선 네트워크들(Wireless Networks)(WLANs) 등이 있다. 예를 들어, 인터넷은 일반적으로 원격 클라이언트들 및 서버들이 서로 액세스하고 상호동작하는 다수의 네트워크들의 상호연결인 것으로서 허용된다.
MRM 컨트롤러(401)는 메모리(429)에 연결되는 컴퓨터 시스템(402)과 같은 구성요소들을 포함하지만, 이들에 제한되지 않은 컴퓨터 시스템들에 기초할 수 있다.
컴퓨터 시스템
컴퓨터 시스템(402)은 클록(430), 중앙 처리 유닛("CPU(들)" 및/또는 "프로세서(들)"(이러한 용어들은 반대로 언급되지 않는 한 본 개시내용 도처에서 교환가능하게 사용됨))(403), 메모리(429)(예를 들어, 판독 전용 메모리(read only memory)(ROM)(406), 랜덤 액세스 메모리(random access memory)(RAM)(405) 등), 및/또는 인터페이스 버스(407)를 포함할 수 있고, 가장 빈번하게, 반드시 그런 것은 아니지만, 명령들(예를 들어, 이진 인코딩 신호들)이 통신들, 동작들, 저장 등을 달성하기 위해 이동할 수 있는 전도 및/또는 다른 수송 회로 경로들을 갖는 하나 이상의 (마더)보드(들)(402) 상의 시스템 버스(404)을 통해 모두 상호연결될 수 있고/있거나 통신하고 있다. 컴퓨터 시스템은 전력 소스(486)에 연결될 수 있고; 예를 들어, 임의로 전력 소스는 내부에 있을 수 있다. 임의로, 암호 프로세서(426) 및/또는 송수신기들(예를 들어, IC들)(474)은 시스템 버스에 연결될 수 있다. 다른 실시예에서, 암호 프로세서 및/또는 송수신기들은 입력/출력(input/output)(I/O) 인터페이스 버스를 통해 내부 및/또는 외부 주변 디바이스들(412)로 연결될 수 있다. 결과적으로, 송수신기들은 안테나(들)(475)에 연결되는 것에 의해, 다양한 통신 및/또는 센서 프로토콜들의 무선 송신 및 수신을 달성할 수 있으며; 예를 들어, 안테나(들)는 텍사스 인스트루먼츠 와이링크 WL1283 송수신기 칩(예를 들어, 802.11n, 블루투스 3.0, FM, 위성 위치 확인 시스템(global positioning system)(GPS)(그것에 의해 MRM 컨트롤러가 그것의 위치를 결정하는 것을 허용함)를 제공함); 브로드컴 BCM4329FKUBG 송수신기 칩(예를 들어, 802.11n, 블루투스 2.1 + EDR, FM 등을 제공함), BCM28150(HSPA+) 및 BCM2076(블루투스 4.0, GPS 등); 브로드컴 BCM4750IUB8 수신기 칩(예를 들어, GPS); 인피니온 기술들 X-골드 618-PMB9800(예를 들어, 2G/3G HSDPA/HSUPA 통신들을 제공함); 인텔의 XMM 7160(LTE & DC-HSPA), 퀄컴의 CDMA(2000), 모바일 데이터/스테이션 모뎀, 스냅드래곤; 및/또는 유사한 것에 연결될 수 있다. 시스템 클록은 수정 발진기를 가질 수 있고 컴퓨터 시스템의 회로 경로들을 통해 베이스 신호를 발생시킨다. 클록은 컴퓨터 시스템에 상호연결되는 다른 구성요소들에 대한 기초 동작 주파수를 감소시키거나 증가시키는 시스템 버스 및 다양한 클록 멀티플라이어들에 결합될 수 있다. 컴퓨터 시스템 내의 클록 및 다양한 구성요소들은 시스템 도처에서 정보를 구체화하는 신호들을 구동한다. 컴퓨터 시스템 도처에서 정보를 구체화하는 명령들의 그러한 송신 및 수신은 통신들로 언급될 수 있다. 이러한 통신 명령들은 통신 네트워크들, 입력 디바이스들, 다른 컴퓨터 시스템들, 주변 디바이스들, 및/또는 유사한 것에 추가로 송신되고, 수신되고, 인스턴트 컴퓨터 시스템을 지난 복귀 및/또는 응답 통신들을 포함할 수 있다. 대안 실시예들에서, 상기 구성요소들 중 어느 것은 서로에 직접 연결되고, CPU에 연결되고/되거나, 다양한 컴퓨터 시스템들에 의해 예시되는 바와 같이 이용되는 다수의 변형들로 조직될 수 있다는 점이 이해되어야 한다.
CPU는 사용자 및/또는 시스템 생성 요청들을 실행하는 프로그램 구성요소들을 실행하는데 적절한 적어도 하나의 고속 데이터 프로세서를 포함한다. 종종, 프로세서들 자체는 부동 소수점 유닛들, 정수 처리 유닛들, 통합 시스템(버스) 컨트롤러들, 로직 동작 유닛들, 메모리 관리 제어 유닛들 등과 같지만, 이들에 제한되지 않는 다양한 특수 처리 유닛들 및 그래픽 처리 유닛들, 디지털 신호 처리 유닛들, 및/또는 유사한 것과 같은 대등한 특수 처리 서브유닛들을 포함할 것이다. 부가적으로, 프로세서들은 내부 고속 액세스 어드레스가능 메모리를 포함하고, 프로세서 자체를 지나 메모리(429)를 매핑하고 어드레싱가능할 수 있으며; 내부 메모리는 고속 레지스터들, 캐시 메모리의 다양한 레벨들(예를 들어, 레벨 1, 2, 3 등), RAM 등을 포함할 수 있지만, 이들에 제한되지 않는다. 프로세서는 프로세서가 구성하고 디코딩할 수 있는 명령 어드레스를 통해 액세스가능한 메모리 어드레스 공간의 사용을 통해 이러한 메모리에 액세스하여 그것이 메모리 상태/값을 갖는 특정 메모리 어드레스 공간에 대한 회로 경로에 액세스하는 것을 허용할 수 있다. CPU는 마이크로프로세서 예컨대 AMD의 애슬론, 듀론 및/또는 옵테론; ARM의 클래식 (예를 들어, ARM7/9/11), 내장 (Coretx-M/R), 애플리케이션 (Cortex-A), 및 보안 프로세서들; IBM 및/또는 모토롤라의 드래곤볼 및 파워PC; IBM의 및 소니의 셀 프로세서; 인텔의 아톰, 셀러론 (모바일), 코어(2/Duo/i3/i5/i7), 아이타니엄, 펜티엄, 제온, 및/또는 엑스스케일; 및/또는 유사한 프로세서(들)일 수 있다. CPU는 저장된 명령들(즉, 프로그램 코드)을 실행하기 위해 전도 및/또는 수송 도관들(예를 들어, (인쇄) 전자 및/또는 광 회로들)을 통과하는 명령을 통해 메모리와 상호작용한다. 그러한 명령 통과는 MRM 컨트롤러 내에서 및 다양한 인터페이스들을 지나 통신을 용이하게 한다. 처리 요건들이 더 많은 속도 및/또는 용량을 지시하면, 분산 프로세서들(예를 들어, 분산 MRM), 메인프레임, 멀티코어, 병렬, 및/또는 슈퍼 컴퓨터 아키텍처들은 유사하게 이용될 수 있다. 대안으로, 전개 요건들이 더 큰 이식성을 지시하면, 더 작은 모바일 디바이스들(예를 들어, 스마트폰들, 개인 휴대 정보 단말기들(Personal Digital Assistants)(PDAs) 등)이 이용될 수 있다.
특정 구현에 따라, MRM 시스템의 특징들은 마이크로컨트롤러 예컨대 캐스트의 R8051XC2 마이크로컨트롤러; 인텔의 MCS 51(즉, 8051 마이크로컨트롤러); 및/또는 유사한 것을 구현함으로써 달성될 수 있다. 또한, MRM의 특정 특징들을 구현하기 위해, 일부 특징 구현들은 내장 구성요소들, 예컨대 주문형 집적 회로(Application-Specific Integrated Circuit)("ASIC"), 디지털 신호 처리(Digital Signal Processing)("DSP"), 필드 프로그램가능 게이트 어레이(Field Programmable Gate Array)("FPGA"), 및/또는 유사한 내장 기술에 의존할 수 있다. 예를 들어, MRM 구성요소 집합(분산 또는 다른, 예를 들어 IMAS 341 등) 및/또는 특징들 중 어느 것은 마이크로프로세서를 통해 그리고/또는 내장 구성요소들을 통해; 예를 들어 ASIC, 코프로세서, DSP, FPGA, 및/또는 유사한 것을 통해 구현될 수 있다. 대안으로, MRM의 일부 구현들은 다양한 특징들 또는 신호 처리를 달성하도록 구성되고 사용되는 내장 구성요소들에 의해 구현될 수 있다.
특정 구현에 따라, 내장 구성요소들은 소프트웨어 솔루션들, 하드웨어 솔루션들, 및/또는 하드웨어/소프트웨어 솔루션들 둘 다의 일부 조합을 포함할 수 있다. 예를 들어, 본원에서 논의되는 MRM 특징들은 FPGA들을 구현하는 것을 통해 달성될 수 있으며, FPGA들은 "로직 블록들"로 칭해지는 프로그램가능 로직 구성요소들, 및 프로그램가능 인터커넥트들을 포함하는 반도체 디바이스들, 예컨대 자이링스에 의해 제조되는 고성능 FPGA 버텍스 시리즈 및/또는 저비용 스파르탄 시리즈이다. 로직 블록들 및 인터커넥트들은 MRM 특징들 중 어느 것을 구현하도록, FPGA가 제조된 후에, 고객 또는 설계자에 의해 프로그래밍될 수 있다. 프로그램가능 인터커넥트들의 계층은 원칩 프로그램가능 브레드보드와 다소 비슷하게, 로직 블록들이 MRM 시스템 설계자/관리자에 의해 요구되는 바와 같이 상호연결되는 것을 허용한다. FPGA의 로직 블록들은 기본 로직 게이트들의 연산 예컨대 AND, 및 XOR, 또는 더 복잡한 조합 연산자들 예컨대 디코더들 또는 간단한 수학 연산들을 수행하기 위해 프로그래밍될 수 있다. 대부분의 FPGA들에서, 로직 블록들은 또한 메모리 소자들을 포함하며, 메모리 소자들은 메모리의 회로 플립 플롭들 또는 더 완전한 블록들일 수 있다. 일부 상황들에서, MRM은 정규 FPGA들 상에 전개되고 그 다음에 ASIC 구현들과 더 비슷한 고정 버전으로 이동될 수 있다. 대체 또는 조정 구현들은 FPGA들 대신에 또는 FPGA들에 더하여 MRM 컨트롤러 특징들을 최종 ASIC으로 이동시킬 수 있다. 구현에 따라, 상술된 내장 구성요소들 및 마이크로프로세서들의 모두는 MRM을 위한 "CPU" 및/또는 "프로세서"로 간주될 수 있다.
전력 소스
전력 소스(486)는 작은 전자 회로 보드 디바이스들에 전력을 공급하는 임의의 표준 형태 예컨대 이하의 전력 셀들: 알카라인, 수소화 리튬, 리튬 이온, 리튬 폴리머, 니켈 카드뮴, 태양 전지들, 및/또는 유사한 것일 수 있다. 다른 타입들의 AC 또는 DC 전력 소스들이 또한 사용될 수 있다. 태양 전지들의 경우에, 일 실시예에서, 그 경우는 태양 전지가 광자 에너지를 캡처할 수 있는 애퍼처를 제공한다. 전력 셀(486)은 MRM의 상호연결 후속 구성요소들 중 적어도 하나에 연결되는 것에 의해 전기 전류를 모든 상호연결 구성요소들에 제공한다. 일 예에서, 전력 소스(486)는 시스템 버스 구성요소(404)에 연결된다. 대안 실시예에서, 외부 전력 소스(486)는 I/O(408) 인터페이스에 걸친 연결을 통해 제공된다. 예를 들어, USB 및/또는 IEEE 1394 연결은 연결에 걸쳐 데이터 및 전력 둘 다를 운반하고 따라서 적절한 전력 소스이다.
인터페이스 어댑터들
인터페이스 버스(들)(407)는 자주, 반드시 어댑터 카드들의 형태는 아니지만, 입력 출력 인터페이스들(I/O)(408), 저장 인터페이스들(409), 네트워크 인터페이스들(410), 및/또는 유사한 것과 같지만 이들에 제한되지 않는 다수의 인터페이스 어댑터들에 허용, 연결, 및/또는 통신될 수 있다. 임의로, 암호 프로세서 인터페이스들(427)은 유사하게 인터페이스 버스에 연결될 수 있다. 인터페이스 버스는 인터페이스 어댑터들의 통신들을 서로에 제공할 뿐만 아니라 컴퓨터 시스템의 다른 구성요소들에 제공한다. 인터페이스 어댑터들은 호환가능 인터페이스 버스를 위해 적응된다. 인터페이스 어댑터들은 확장 및/또는 슬롯 아키텍처를 통해 인터페이스 버스에 연결될 수 있다. 가속 그래픽 포트(Accelerated Graphics Port)(AGP), 카드 버스, 익스프레스카드, (확장) 산업 표준 아키텍처((Extended) Industry Standard Architecture)((E)ISA), 마이크로 채널 아키텍처(Micro Channel Architecture)(MCA), NuBus, 주변 구성요소 상호연결(확장)(Peripheral Component Interconnect(Extended))(PCI(X)), PCI 익스프레스, 개인용 컴퓨터 메모리 카드 국제 협회(Personal Computer Memory Card International Association)(PCMCIA), 선더볼트, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 다양한 확장 및/또는 슬롯 아키텍처들이 이용될 수 있다.
저장 인터페이스들(409)은 저장 디바이스들(414), 제거식 디스크 디바이스들, 및/또는 유사한 것과 같지만, 이들제 제한되지 않는 다수의 저장 디바이스들에 허용, 통신, 및/또는 연결될 수 있다. 저장 인터페이스들은 (울트라) (직렬) 고급 기술 결합(패킷 인터페이스)((Ultra) (Serial) Advanced Technology Attachment(Packet Interface))(ATA(PI)), (강화된) 통합 드라이브 전자((Enhanced) Integrated Drive Electronics)((E)IDE), 미국 전기 전자 학회(Institute of Electrical and Electronics Engineers)(IEEE) 1394, 이더넷, 파이버 채널, 소형 컴퓨터 시스템 인터페이스(Small Computer Systems Interface)(SCSI), 선더볼트, 범용 직렬 버스(Universal Serial Bus)(USB), 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 연결 프로토콜들을 이용할 수 있다.
네트워크 인터페이스들(410)은 통신 네트워크(413)에 허용, 통신, 및/또는 통신 네트워크에 연결될 수 있다. 통신 네트워크(413)를 통해, MRM 컨트롤러는 원격 클라이언트들(433b)(예를 들어, 웹 브라우저들을 갖는 컴퓨터들)을 통해 사용자들(433a)에 의해 액세스가능하다. 네트워크 인터페이스들은 직접 연결, 이더넷(씩(thick), 씬(thin), 트위스트 페어 10/100/1000 베이스 T, 및/또는 유사한 것), 토큰 링, 무선 연결 예컨대 IEEE 802.11a-x, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 연결 프로토콜들을 이용할 수 있다. 처리 요건들이 더 많은 속도 및/또는 용량을 지적하면, 분산 네트워크 컨트롤러(예를 들어, 분산 4), 아키텍처들은 MRM 컨트롤러에 의해 요구되는 통신 대역폭을 풀링, 로드 밸런싱, 및/또는 다른 방법으로 증가시키기 위해 유사하게 이용될 수 있다. 통신 네트워크는 이하 중 어느 하나 및/또는 조합일 수 있다: 직접 상호연결; 인터넷; 근거리 네트워크(LAN); 도시권 통신 네트워크(Metropolitan Area Network)(MAN); 인터넷 상의 노드들로서 운영 미션들(Operating Missions as Nodes on the Internet)(OMNI); 보안 맞춤 연결; 광역 네트워크(WAN); 무선 네트워크(예를 들어, 무선 애플리케이션 프로토콜(Wireless Application Protocol)(WAP), I 모드, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 프로토콜들을 이용함); 및/또는 유사한 것. 네트워크 인터페이스는 입력 출력 인터페이스의 특수 형태로 간주될 수 있다. 게다가, 다수의 네트워크 인터페이스들(410)은 다양한 통신 네트워크 타입들(413)과 결합하기 위해 사용될 수 있다. 예를 들어, 다수의 네트워크 인터페이스들은 브로드캐스트, 멀티캐스트, 및/또는 유니캐스트 네트워크들을 통한 통신을 허용하기 위해 이용될 수 있다.
입력 출력 인터페이스들(I/O들)(408)은 사용자 입력 디바이스들(411), 주변 디바이스들(412), 암호 프로세서 디바이스들(428), 및/또는 유사한 것에 허용, 전달, 및/또는 연결될 수 있다. I/O들은 오디오: 아날로그, 디지털, 노모럴, RCA, 스테레오, 및/또는 유사한 것; 데이터: 애플 데스크톱 버스(Apple Desktop Bus)(ADB), 블루투스, IEEE 1394a-b, 직렬, 범용 직렬 버스(USB); 적외선; 조이스틱; 키보드; 미디; 광; PC AT; PS/2; 병렬; 무선; 비디오 인터페이스: 애플 데스크톱 커넥터(Apple Desktop Connector)(ADC), BNC, 동축, 컴포넌트, 복합, 디지털, 디스플레이포트, 디지털 비주얼 인터페이스(Digital Visual Interface)(DVI), 고선명 멀티미디어 인터페이스(high-definition multimedia interface)(HDMI), RCA, RF 안테나들, S-비디오, VGA, 및/또는 유사한 것; 무선 송수신기들: 802.11a/b/g/n/x; 블루투스; 셀룰러(예를 들어, 코드 분할 다중 액세스(code division multiple access)(CDMA), 고속 패킷 액세스(high speed packet access)(HSPA(+)), 고속 다운링크 패킷 액세스(high-speed downlink packet access)(HSDPA), 이동 통신 시스템(global system for mobile communications)(GSM), 롱 텀 에볼루션(long term evolution)(LTE), WiMax 등); 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 연결 프로토콜들을 이용할 수 있다. 하나의 출력 디바이스는 비디오 디스플레이일 수 있으며, 비디오 디스플레이는 음극선관(Cathode Ray Tube)(CRT), 액정 디스플레이(Liquid Crystal Display)(LCD), 발광 다이오드(Light Emitting Diode)(LED), 유기 발광 다이오드(Organic Light Emitting Diode)(OLED), 플라즈마, 및/또는 비디오 인터페이스로부터 신호들을 허용하는 인터페이스(예를 들어, VGA, DVI 회로 및 케이블)를 갖는 유사한 베이스 모니터의 형태를 취할 수 있다. 비디오 인터페이스는 컴퓨터 시스템에 의해 생성되는 정보를 합성하고 비디오 메모리 프레임 내의 합성된 정보에 기초하여 비디오 신호들을 생성한다. 다른 출력 디바이스는 텔레비전 세트이며, 텔레비전 세트는 비디오 인터페이스로부터 신호들을 허용한다. 종종, 비디오 인터페이스는 비디오 디스플레이 인터페이스(예를 들어, RCA 복합 비디오 케이블을 허용하는 RCA 복합 비디오 커넥터; DVI 디스플레이 케이블을 허용하는 DVI 커넥터, HDMI 등)를 허용하는 비디오 연결 인터페이스를 통해 복합 비디오 정보를 제공한다.
사용자 입력 디바이스들(411)은 종종 일 타입의 주변 디바이스(412)이고(아래 참조) 카드 리더들, 동글들, 핑거 프린트 리더들, 글러브들, 그래픽 태블릿들, 조이스틱들, 키보드들, 마이크로폰들, 마우스(마우스들), 리모트 컨트롤들, 망막 리더들, 터치 스크린들(예를 들어, 용량성, 저항성 등), 트랙볼들, 트랙패드들, 센서들(예를 들어, 가속도계들, 주위 광, GPS, 자이로스코프들, 근접 등), 스타일러스들, 및/또는 유사한 것을 포함할 수 있다.
주변 디바이스들(412)은 I/O들 및/또는 유사한 것의 다른 수단들 예컨대 네트워크 인터페이스들, 저장 인터페이스들에 연결 및/또는 전달되며, 인터페이스 버스, 시스템 버스, CPU, 및/또는 유사한 것에 직접 연결 및/또는 전달될 수 있다. 주변 디바이스들은 MRM 컨트롤러의 외부, 내부에 있을 수 있고/있거나 그 일부일 수 있다. 주변 디바이스들은 안테나들, 오디오 디바이스들(예를 들어, 라인 인, 라인 아웃, 마이크로폰 입력, 스피커들 등), 카메라들(예를 들어, 스틸, 비디오, 웹캠 등), 동글들(예를 들어, 카피 보호, 디지털 서명에 의해 보안 트랜잭션들을 보장하는 것, 및/또는 유사한 것을 위함), 외부 프로세서들(추가된 능력들을 위함; 예를 들어, 암호 디바이스들(428)), 포스 피드백 디바이스들(예를 들어, 진동 모터들), 근접장 통신(near field communication)(NFC) 디바이스들, 네트워크 인터페이스들, 프린터들, 무선 주파수 식별자들(radio frequency identifiers)(RFIDs), 스캐너들, 저장 디바이스들, 송수신기들(예를 들어, 셀룰러, GPS 등), 비디오 디바이스들(예를 들어, 고글들, 모니터들 등), 비디오 소스들, 바이저들, 및/또는 유사한 것을 포함할 수 있다. 주변 디바이스들은 종종 입력 디바이스들(예를 들어, 마이크로폰들, 카메라들 등)의 타입들을 포함한다.
사용자 입력 디바이스들 및 주변 디바이스들이 이용될 수 있지만, MRM 컨트롤러는 내장, 전용, 및/또는 모니터-없는(즉, 헤드리스) 디바이스로 구체화될 수 있으며, 액세스는 네트워크 인터페이스 연결을 통해 제공된다는 점이 주목되어야 한다.
마이크로컨트롤러들, 프로세서들(426), 인터페이스들(427), 및/또는 디바이스들(428) 등과 같지만, 이들에 제한되지 않는 암호 유닛들은 MRM 컨트롤러에 부착되고/되거나 이 컨트롤러와 통신할 수 있다. 모토롤라 인크에 의해 제조되는 MC68HC16 마이크로컨트롤러는 암호 유닛들을 위해 그리고/또는 암호 유닛들 내에 사용될 수 있다. MC68HC16 마이크로컨트롤러는 16 MHz 구성에서 16비트 승산 누적 명령을 이용하고 512비트 RSA 개인 키 동작을 수행하기 위해 1초 미만을 필요로 한다. 암호 유닛들은 익명 트랜잭션들을 허용할 뿐만 아니라, 상호작용 에이전트들로부터 통신들의 인증을 지원한다. 암호 유닛들은 또한 CPU의 일부로 구성될 수 있다. 등가 마이크로컨트롤러들 및/또는 프로세서들이 또한 사용될 수 있다. 다른 상업적으로 이용가능한 특수 암호 프로세서들은 브로드컴의 CryptoNetX 및 다른 보안 프로세서들; 엔사이퍼의 엔쉴드(예를 들어, 솔로, 커넥트 등), 세이프넷의 루나 PCI(예를 들어, 7100) 시리즈; 세마포르 커뮤니케이션즈의 40 MHz 로드러너 184; sMIP의(예를 들어, 208956); 썬의 암호 가속도계들(예를 들어, 가속도계 6000 PCIe 보드, 가속도계 500 도터카드); 암호 명령들의 500+ MB/s를 수행할 수 있는 /(예를 들어, L2100, L2200, U2400) 라인; VLSI 테크놀로지의 33 MHz 6868; 및/또는 유사한 것을 포함한다.
메모리
일반적으로, 프로세서가 정보의 저장 및/또는 검색에 미치는 것을 허용하는 임의의 기계화 및/또는 실시예는 메모리(429)로 간주된다. 그러나, 메모리는 대체가능 기술 및 자원이며, 따라서 임의의 수의 메모리 실시예들은 서로 대신에 또는 서로 협력하여 이용될 수 있다. MRM 컨트롤러 및/또는 컴퓨터 시스템은 다양한 형태들의 메모리(429)을 이용할 수 있다는 점이 주목되어야 한다. 예를 들어, 컴퓨터 시스템이 구성될 수 있으며 온칩 CPU 메모리(예를 들어, 레지스터들), RAM, ROM, 및 임의의 다른 저장 디바이스들의 동작은 페이퍼 펀치 테이프 또는 페이퍼 펀치 카드 메커니즘에 의해 제공되지만; 그러한 일 실시예는 극히 느린 동작 속도를 야기할 것이다. 일 구성에서, 메모리(429)는 ROM(406), RAM(405), 및 저장 디바이스(414)를 포함할 것이다. 저장 디바이스(414)는 임의의 수의 컴퓨터 저장 디바이스들/시스템들을 이용할 수 있다. 저장 디바이스들은 드럼; (고정 및/또는 제거식) 자기 디스크 드라이브; 광 자기 드라이브; 광 드라이브(즉, 블루레이, CD ROM/RAM/기록가능(Recordable)(R)/재기록가능(ReWritable)(RW), DVD R/RW, HD DVD R/RW 등); 디바이스들의 어레이(예를 들어, 복수 배열 독립 디스크들(Redundant Array of Independent Disks)(RAID)); 고체 상태 메모리 디바이스들(USB 메모리, 고체 상태 드라이브들(solid state drives)(SSD) 등); 다른 프로세서 판독가능 저장 매체들; 및/또는 유사한 것의 다른 디바이스들을 포함할 수 있다. 따라서, 컴퓨터 시스템은 일반적으로 메모리를 필요로 하고 이용한다.
구성요소 집합
메모리(429)는 운영 체제 구성요소(들)(415)(운영 체제); 정보 서버 구성요소(들)(416)(정보 서버); 사용자 인터페이스 구성요소(들)(417)(사용자 인터페이스); 웹 브라우저 구성요소(들)(418)(웹 브라우저); 데이터베이스(들)(419); 메일 서버 구성요소(들)(421); 메일 클라이언트 구성요소(들)(422); 암호 서버 구성요소(들)(420)(암호 서버); MRM 구성요소(들)(435); 및/또는 유사한 것(즉, 집합적으로 구성요소 집합)과 같지만, 이들에 제한되지 않는 프로그램 집합 및/또는 데이터베이스 구성요소들 및/또는 데이터를 포함할 수 있다. 이러한 구성요소들은 저장 디바이스들로부터 그리고/또는 인터페이스 버스를 통해 액세스가능한 저장 디바이스들로부터 저장되고 액세스될 수 있다. 구성요소 집합 내의 것들과 같은 비통상적 프로그램 구성요소들은 로컬 저장 디바이스(414)에 저장될 수 있지만, 그들은 또한 메모리 예컨대: 주변 디바이스들, RAM, 통신 네트워크를 통한 원격 저장 수단들, ROM, 다양한 형태들의 메모리, 및/또는 유사한 것에 로딩 및/또는 저장될 수 있다.
운영 체제
운영 체제 구성요소(415)는 MRM 컨트롤러의 동작을 용이하게 하는 실행가능 프로그램 구성요소이다. 운영 체제는 I/O들, 네트워크 인터페이스들, 주변 디바이스들, 저장 디바이스들, 및/또는 유사한 것의 액세스를 용이하게 할 수 있다. 운영 체제는 높은 고장 허용, 스케일가능, 및 보안 시스템: 예컨대 애플 매킨토시 OS X(서버); AT&T 플랜 9; Be OS; 유닉스 및 유닉스 유사 시스템 디스트리뷰션들(예컨대 AT&T의 유닉스; 버클리 소프트웨어 디스트리뷰션(Berkley Software Distribution)(BSD) 변형들 예컨대 FreeBSD, NetBSD, OpenBSD, 및/또는 유사한 것; 리눅스 디스트리뷰션들 예컨대 레드 햇, 우분투, 및/또는 유사한 것); 및/또는 유사한 운영 체제들일 수 있다. 그러나, 더 제한된 그리고/또는 덜 안전한 운영 체제들 예컨대 애플 매킨토시 OS, IBM OS/2, 마이크로소프트 도스, 마이크로소프트 윈도우즈 2000/2003/3.1/95/98/CE/밀레니엄/NT/비스타/XP(서버), 팜 OS, 및/또는 유사한 것이 또한 이용될 수 있다. 게다가, 모바일 운영 체제들 예컨대 애플의 iOS, 구글의 안드로이드, 휴렛 패커드의 웹OS, 마이크로소프트 윈도우즈 모바일 등이 이용될 수 있다. 이러한 운영 체제들 중 어느 것은 MRM 컨트롤러의 하드웨어 내에 내장될 수 있고/있거나, 메모리/스토리지로 저장/로딩될 수 있다. 운영 체제는 그 자체, 및/또는 유사한 것을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달될 수 있고/있거나 다른 구성요소들과 통신할 수 있다. 가장 빈번하게, 운영 체제는 다른 프로그램 구성요소들, 사용자 인터페이스들, 및/또는 유사한 것과 통신한다. 예를 들어, 운영 체제는 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 및/또는 응답들을 포함, 전달, 생성, 획득, 및/또는 제공할 수 있다. 운영 체제는 CPU에 의해 실행되면, 통신 네트워크들, 데이터, I/O들, 주변 디바이스들, 프로그램 구성요소들, 메모리, 사용자 입력 디바이스들, 및/또는 유사한 것과의 상호작용을 가능하게 할 수 있다. 운영 체제는 MRM 컨트롤러가 통신 네트워크(413)를 통해 다른 엔티티들과 통신하는 것을 허용하는 통신 프로토콜들을 제공할 수 있다. 다양한 통신 프로토콜들은 멀티캐스트, TCP/IP, UDP, 유니캐스트, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 상호작용을 위한 서브캐리어 전송 메커니즘으로 MRM 컨트롤러에 의해 사용될 수 있다.
정보 서버
정보 서버 구성요소(416)는 CPU에 의해 실행되는 저장된 프로그램 구성요소이다. 정보 서버는 아파치 소프트웨어 재단의 아파치, 마이크로소프트의 인터넷 정보 서버, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 인터넷 정보 서버일 수 있다. 정보 서버는 수단들 예컨대 액티브 서버 페이지(Active Server Page)(ASP), 액티브엑스, (ANSI) (오브젝티브-) C(++), C# 및/또는 .NET, 공통 게이트웨이 인터페이스(Common Gateway Interface)(CGI) 스크립트들, 동적(dynamic)(D) 하이퍼텍스트 마크업 언어(hypertext markup language)(HTML), 플래시, 자바, 자바스크립트, 실용적인 추출 보고용 언어(Practical Extraction Report Language)(PERL), 하이퍼텍스트 프리프로세서(Hypertext Pre-Processor)(PHP), 파이프들, 파이선, 무선 애플리케이션 프로토콜(WAP), 웹객체들, 및/또는 유사한 것을 통해 프로그램 구성요소들의 실행을 허용할 수 있다. 정보 서버는 파일 전송 프로토콜(File Transfer Protocol)(FTP); 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)(HTTP); 보안 하이퍼텍스트 전송 프로토콜(Secure Hypertext Transfer Protocol)(HTTPS), 보안 소켓 계층(Secure Socket Layer)(SSL), 메시징 프로토콜들(예를 들어, 아메리카 온라인(America Online)(AOL) 인스턴트 메신저(Instant Messenger)(AIM), 애플의 아이메시지, 애플리케이션 익스체인지(Application Exchange)(APEX), ICQ, 인터넷 중계 채팅(Internet Relay Chat)(IRC), 마이크로소프트 네트워크(Microsoft Network)(MSN) 메신저 서비스, 프리젠스 및 인스턴스 메시징 프로토콜(Presence and Instant Messaging Protocol)(PRIM), 인터넷 엔지니어링 태스크 포스의(Internet Engineering Task Force's)(IETF's) 세션 개시 프로토콜(Session Initiation Protocol)(SIP), 인스턴스 메시징 및 프리젠스 레버리징 확장들을 위한 SIP(SIP for Instant Messaging and Presence Leveraging Extensions)(SIMPLE), 오픈 XML 기반 확장가능 메시징 및 프리젠스 프로토콜(XML-based Extensible Messaging and Presence Protocol)(XMPP)(즉, 재버 또는 오픈 모바일 연합의(Open Mobile Alliance's)(OMA's) 인스턴스 메시징 및 프리젠스 서비스(Instant Messaging and Presence Service)(IMPS)), 야후! 인스턴트 메신저 서비스, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 보안 통신 프로토콜들을 지원할 수 있다. 정보 서버는 웹 페이지들의 형태인 결과들을 웹 브라우저들에 제공하고, 및 다른 프로그램 구성요소들과의 상호작용을 통해 웹 페이지들의 조작된 생성을 허용한다. HTTP 요청의 도메인 네임 시스템(Domain Name System)(DNS) 해결 부분이 특정 정보 서버에 대해 해결된 후에, 정보 서버는 HTTP 요청의 나머지에 기초하여 MRM 컨트롤러 상의 지정된 위치들에서 정보에 대한 요청들을 해결한다. 예를 들어, http://123.124.125.126/myInformation.html과 같은 요청은 DNS 서버에 의해 해결되는 요청 "123.124.125.126"의 IP 일부를 그러한 IP 어드레스에서의 정보 서버에 가질 수 있고; 그러한 정보 서버는 HTTP 요청을 요청의 "/myInformation.html" 일부에 대해 차례로 더 파싱하고 그것을 정보 "myInformation.html"을 포함하는 메모리 내의 위치에서 해결할 수 있다. 부가적으로, 다른 정보 서빙 프로토콜들은 다양한 포트들, 예를 들어 FTP 통신 교차 포트 21, 및/또는 유사한 것에 걸쳐 이용될 수 있다. 정보 서버는 그 자체, 및/또는 유사한 것의 수단들을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달될 수 있고/있거나, 다른 구성요소들과 통신할 수 있다. 가장 빈번하게, 정보 서버는 MRM 데이터베이스(419), 운영 체제들, 다른 프로그램 구성요소들, 사용자 인터페이스들, 웹 브라우저들, 및/또는 유사한 것과 통신한다.
MRM 데이터베이스에의 액세스는 다수의 데이터베이스 브리지 메커니즘들을 통해 예컨대 아래에 열거되는 바와 같은 스크립팅 언어들(예를 들어, CGI)을 통해 및 아래에 열거되는 바와 같은 인터 애플리케이션 통신 채널들(예를 들어, CORBA, 웹객체들 등)을 통해 달성될 수 있다. 웹 브라우저를 통한 임의의 데이터 요청들은 MRM에 의해 요구되는 바와 같이 브리지 메커니즘을 통해 적절한 그래머들로 파싱된다. 일 실시예에서, 정보 서버는 웹 브라우저에 의해 액세스가능한 웹 폼을 제공할 것이다. 웹 폼 내의 공급 필드들로 이루어지는 엔트리들은 특정 필드들로 입력된 바와 같이 태깅되고, 그와 같이 파싱된다. 그 다음, 입력된 조건들은 필드 태그들과 함께 전달되며, 필드 태그들은 파서에게 적절한 테이블들 및/또는 필드들에 보내지는 질의들을 생성하라고 명령하는 역할을 한다. 일 실시예에서, 파서는 태깅된 텍스트 엔트리들에 기초하여 적절한 연결/선택 커맨드들을 갖는 검색 스트링을 인스턴스화함으로써 표준 SQL에서 질의들을 생성할 수 있으며, 최종 커맨드는 브리지 메커니즘을 통해 MRM에 질의로서 제공된다. 질의로부터 질의 결과들을 생성 시에, 결과들은 브리지 메커니즘을 통해 전달되고, 브리지 메커니즘에 의한 새로운 결과 웹 페이지의 포맷팅 및 생성을 위해 파싱될 수 있다. 그 다음, 그러한 새로운 결과 웹 페이지는 정보 서버에 제공되며, 정보 서버는 그것을 요청 웹 브라우저에 공급할 수 있다.
또한, 정보 서버는 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 및/또는 응답들을 포함, 통신, 생성, 획득, 및/또는 제공할 수 있다.
사용자 인터페이스
컴퓨터 인터페이스들은 일부 점들에서 자동차 동작 인터페이스들과 유사하다. 자동차 동작 인터페이스 요소들 예컨대 스티어링 휠들, 기어시프트들, 및 속도계들은 자동차 자원들의 액세스, 동작, 및 디스플레이, 및 상태를 용이하게 한다. 컴퓨터 상호작용 인터페이스 요소들 예컨대 체크 박스들, 커서들, 메뉴들, 스크롤러들, 및 윈도우즈(위젯들로 집합적으로 및 통상적으로 언급됨)는 데이터 및 컴퓨터 하드웨어 및 운영 체제 자원들의 액세스, 능력들, 동작, 및 디스플레이, 및 상태를 유사하게 용이하게 한다. 동작 인터페이스들은 사용자 인터페이스들로 통상 칭해진다. 그래픽 사용자 인터페이스들(Graphical user interfaces)(GUIs) 예컨대 애플 매킨토시 운영 체제의 아쿠아 및 iOS의 코코아 터치, IBM의 OS/2, 구글의 안드로이드 모바일 UI, 마이크로소프트의 윈도우즈 2000/2003/3.1/95/98/CE/밀레님엄/모바일/NT/XP/비스타/7/8(즉, 에어로, 메트로), 유닉스의 X-윈도우즈(예를 들어, 부가 유닉스 그래픽 인터페이스 라이브러리들 및 계층들 예컨대 K 데스크톱 환경(K Desktop Environment)(KDE), 미스TV 및 GNU 네트워크 객체 모델 환경(GNU Network Object Model Environment)(GNOME)을 포함할 수 있음), 웹 인터페이스 라이브러리들(예를 들어, 액티브엑스, 에이잭스, (D)HTML, 플래시, 자바, 자바스크립트 등 도조, 제이쿼리(UI), 무툴스, 프로토타입, script.aculo.us, SWFObject, 야후! 사용자 인터페이스와 같지만, 이들에 제한되지 않는 인터페이스 라이브러리들, 그 중 어느 것이 사용될 수 있음)은 사용자들에게 그래픽으로 정보를 액세스하고 디스플레이하는 베이스라인 및 수단을 제공한다.
사용자 인터페이스 구성요소(417)는 CPU에 의해 실행되는 저장된 프로그램 구성요소이다. 사용자 인터페이스는 이미 논의된 것과 같은 운영 체제들 및/또는 운영 환경들에 의해, 이들로, 및/또는 이들 위에 제공되는 바와 같이 그래픽 사용자 인터페이스일 수 있다. 사용자 인터페이스는 텍스트 및/또는 그래픽 수단들을 통해 프로그램 구성요소들 및/또는 시스템 수단들의 디스플레이, 실행, 상호작용, 조작, 및/또는 동작을 허용할 수 있다. 사용자 인터페이스는 사용자들이 컴퓨터 시스템에 영향을 미치고, 컴퓨터 시스템과 상호작용하고/하거나, 컴퓨터 시스템을 동작시킬 수 있는 수단을 제공한다. 사용자 인터페이스는 그 자체, 및/또는 유사한 것의 수단들을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달되고 및/또는 다른 구성요소들과 통신할 수 있다. 가장 빈번하게, 사용자 인터페이스는 운영 체제들, 다른 프로그램 구성요소들, 및/또는 유사한 것과 통신한다. 사용자 인터페이스는 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 및/또는 응답들을 포함, 통신, 생성, 획득, 및/또는 제공할 수 있다.
웹 브라우저
웹 브라우저 구성요소(418)는 CPU에 의해 실행되는 저장된 프로그램 구성요소이다. 웹 브라우저는 예컨대 애플의 코코아 (터치) 객체 클래스, 및/또는 유사한 것을 통한 하이퍼텍스트 뷰잉 애플리케이션 예컨대 구글의 (모바일) 크롬, 마이크로소프트 인터넷 익스플로러, 넷스케이프 내비게이터, 애플의 (모바일) 사파리, 내장 웹 브라우저 객체들일 수 있다. 보안 웹 브라우징은 HTTPS, SSL, 및/또는 유사한 것에 의해 128비트 (또는 그 이상의) 암호화를 공급받을 수 있다. 웹 브라우저들은 수단들 예컨대 액티브엑스, 에이잭스, (D)HTML, 플래시, 자바, 자바스크립트, 웹 브라우저 플러그인 API들(예를 들어, 크롬, 파이어폭스, 인터넷 익스플로러, 사파리 플러그인, 및/또는 유사한 API들), 및/또는 유사한 것을 통해 프로그램 구성요소들의 실행을 허용한다. 웹 브라우저들 및 유사한 정보 액세스 툴스는 PDA들, 휴대 전화들, 스마트폰들, 및/또는 다른 모바일 디바이스들로 통합될 수 있다. 웹 브라우저는 그 자체, 및/또는 유사한 것의 수단들을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달될 수 있고/있거나 다른 구성요소들과 통신할 수 있다. 가장 빈번하게, 웹 브라우저는 정보 서버들, 운영 체제들, 통합 프로그램 구성요소들(예를 들어, 플러그인들), 및/또는 유사한 것과 통신하며; 예를 들어, 그것은 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 및/또는 응답들을 포함, 통신, 생성, 획득, 및/또는 제공할 수 있다. 또한, 웹 브라우저 및 정보 서버 대신에, 결합된 애플리케이션은 둘 다의 유사한 동작들을 수행하기 위해 개발될 수 있다. 결합된 애플리케이션은 MRM 구비 노드들로부터 정보의 획득 및 사용자들, 사용자 에이전트들, 및/또는 유사한 것에 정보의 제공을 유사하게 성취할 것이다. 결합된 애플리케이션은 표준 웹 브라우저들을 이용하는 시스템들에 가치가 없을 수 있다.
메일 서버
메일 서버 구성요소(421)는 CPU(403)에 의해 실행되는 저장된 프로그램 구성요소이다. 메일 서버는 애플의 메일 서버(3), 도브콧, 센드메일, 마이크로소프트 익스체인지, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 인터넷 메일 서버일 수 있다. 메일 서버는 수단들 예컨대 ASP, 액티브엑스, (ANSI)(오브젝티브-) C(++), C# 및/또는 .NET, CGI 스크립트들, 자바, 자바스크립트, PERL, PHP, 파이프들, 파이선, 웹객체들, 및/또는 유사한 것을 통해 프로그램 구성요소들의 실행을 허용할 수 있다. 메일 서버는 인터넷 메시지 액세스 프로토콜(Internet message access protocol)(IMAP), 메시징 애플리케이션 프로그래밍 인터페이스(Messaging Application Programming Interface)(MAPI)/마이크로소프트 익스체인지, 포스트 오피스 프로토콜(post office protocol)(POP3), 간이 메일 전송 프로토콜(simple mail transfer protocol)(SMTP), 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 통신 프로토콜들을 지원할 수 있다. 메일 서버는 송신되었고, 중계되었고/되거나, 다른 방법으로 MRM을 통해 및/또는 MRM으로 가로지르고 있는 착신 및 발신 메일 메시지들을 라우팅, 전송, 및 처리할 수 있다.
MRM 메일에의 액세스는 개별 웹 서버 구성요소들 및/또는 운영 체제에 의해 제공되는 다수의 API들을 통해 달성될 수 있다.
또한, 메일 서버는 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 정보, 및/또는 응답들을 포함, 통신, 생성, 획득, 및/또는 제공할 수 있다.
메일 클라이언트
메일 클라이언트 구성요소(422)는 CPU(403)에 의해 실행되는 저장된 프로그램 구성요소이다. 메일 클라이언트는 메일 뷰잉 애플리케이션 예컨대 애플 (모바일) 메일, 마이크로소프트 인투어지, 마이크로소프트 아웃룩, 마이크로소프트 아웃룩 익스프레스, 모질라, 선더버드, 및/또는 유사한 것일 수 있다. 메일 클라이언트들은 다수의 전송 프로토콜들, 예컨대: IMAP, 마이크로소프트 익스체인지, POP3, SMTP, 및/또는 유사한 것을 지원할 수 있다. 메일 클라이언트는 그 자체, 및/또는 유사한 것의 수단들을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달되고 및/또는 다른 구성요소들과 통신할 수 있다. 가장 빈번하게, 메일 클라이언트는 메일 서버들, 운영 체제들, 다른 메일 클라이언트들, 및/또는 유사한 것과 통신하며; 예를 들어, 그것은 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 정보, 및/또는 응답들을 포함, 통신, 생성, 획득, 및/또는 제공할 수 있다. 일반적으로, 메일 클라이언트는 전자 메일 메시지들을 작성하고 송신하는 수단을 제공한다.
암호 서버
암호 서버 구성요소(420)는 CPU(403), 암호 프로세서(426), 암호 프로세서 인터페이스(427), 암호 프로세서 디바이스(428), 및/또는 유사한 것에 의해 실행되는 저장된 프로그램 구성요소이다. 암호 프로세서 인터페이스들은 암호 구성요소에 의해 암호화 및/또는 복호화 요청들의 신속한 처리(expedition)를 허용할 것이지만; 암호 구성요소는 대안으로, CPU 상에 실행될 수 있다. 암호 구성요소는 제공된 데이터의 암호화 및/또는 복호화를 허용한다. 암호 구성요소는 대칭 및 비대칭(예를 들어, 프리티 굿 프로텍션(Pretty Good Protection)(PGP)) 암호화 및/또는 복호화 둘 다를 허용한다. 암호 구성요소는 디지털 인증서들(예를 들어, X.509 인증 프레임워크), 디지털 서명들, 이중 서명들, 인벨로핑, 패스워드 액세스 보호, 공개 키 관리, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 암호 기술들을 이용할 수 있다. 암호 구성요소는 체크섬, 데이터 암호화 표준(Data Encryption Standard)(DES), 타원 곡선 암호화(Elliptical Curve Encryption)(ECC), 국제 데이터 암호화 알고리즘(International Data Encryption Algorithm)(IDEA), 메시지 다이제스트 5(Message Digest 5)(MD5, 단방향 해시 연산임), 패스워드들, 리베스트 암호(Rivest Cipher)(RC5), 라인달, RSA(Ron Rivest, Adi Shamir, 및 Leonard Adleman에 의해 1977년에 개발된 알고리즘을 사용하는 인터넷 암호화 및 인증 시스템임), 보안 해시 알고리즘(Secure Hash Algorithm)(SHA), 보안 소켓 계층(SSL), 보안 하이퍼텍스트 전송 프로토콜(HTTPS), 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 다수의(암호화 및/또는 복호화) 보안 프로토콜들을 용이하게 할 것이다. 그러한 암호화 보안 프로토콜들을 이용하면, MRM은 모든 착신 및/또는 발신 통신들을 암호화할 수 있고 더 넓은 통신 네트워크를 갖는 가상 사설 네트워크(virtual private network)(VPN) 내에서 노드의 역할을 할 수 있다. 암호 구성요소는 자원에의 액세스가 보안 프로토콜에 의해 금지되는 "보안 인가"의 프로세스를 용이하게 하며 암호 구성요소는 보안 자원에의 인가된 액세스를 성취한다. 게다가, 암호 구성요소는 예를 들어 디지털 오디오 파일에 대한 고유 서명을 획득하기 위해 MD5 해시를 이용하여 콘텐츠의 고유 식별자들을 제공할 수 있다. 암호 구성요소는 그 자체, 및/또는 유사한 것의 수단들을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달될 수 있고/있거나 다른 구성요소들과 통신할 수 있다. 암호 구성요소는 MRM 구성요소가 원한다면 보안 트랜잭션들에 참여할 수 있게 하기 위해 통신 네트워크에 걸쳐 정보의 보안 송신을 허용하는 암호화 방식들을 지원한다. 암호 구성요소는 MRM 상에 자원들의 보안 액세스를 용이하게 하고 원격 시스템들 상에 보안 자원들의 액세스를 용이하게 하며; 즉, 그것은 보안 자원들의 클라이언트 및/또는 서버의 역할을 할 수 있다. 가장 빈번하게, 암호 구성요소는 정보 서버들, 운영 체제들, 다른 프로그램 구성요소들, 및/또는 유사한 것과 통신한다. 암호 구성요소는 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 및/또는 응답들을 포함, 통신, 생성, 획득, 및/또는 제공할 수 있다.
MRM 데이터베이스
MRM 데이터베이스 구성요소(419)는 데이터베이스 및 그것의 저장된 데이터에 구체화될 수 있다. 데이터베이스는 CPU에 의해 실행되는 저장된 프로그램 구성요소이며; 저장된 프로그램 구성요소 부분은 저장된 데이터를 처리하기 위해 CPU를 구성한다. 데이터베이스는 다수의 고장 허용, 관계형, 스케일가능, 보안 데이터베이스 예컨대 DB2, MySQL, 오라클, 사이베이스, 및/또는 유사한 것 중 어느 것일 수 있다. 관계형 데이터베이스들은 플랫 파일의 확장이다. 관계형 데이터베이스들은 일련의 관련 테이블들로 구성된다. 테이블들은 키 필드를 통해 상호연결된다. 키 필드의 사용은 키 필드에 대해 인덱싱함으로써 테이블들의 조합을 허용하며; 즉, 키 필드들은 다양한 테이블들로부터 정보를 결합하는 차원 피벗 지점들의 역할을 한다. 관계들은 일반적으로 일차 키들을 매칭함으로써 테이블들 사이에서 유지되는 링크들을 식별한다. 일차 키들은 관계형 데이터베이스에서 테이블의 행들을 고유하게 식별하는 필드들을 표현한다. 더 정확하게, 그들은 "일 대 다" 관계의 "일" 측면 상에서 테이블의 행들을 고유하게 식별한다.
대안으로, MRM 데이터베이스는 다양한 표준 데이터 구조들, 예컨대 어레이, 해시, (링크된) 리스트, 스트럭트, 구조화된 텍스트 파일(예를 들어, XML), 테이블, 및/또는 유사한 것을 사용하여 구현될 수 있다. 그러한 데이터 구조들은 메모리 및/또는 (구조화된) 파일들에 저장될 수 있다. 다른 대안에서, 프런티어(Frontier), 객체스토어(ObjectStore), 포엣(Poet), 조프(Zope), 및/또는 유사한 것과 같은 객체 지향 데이터베이스가 사용될 수 있다. 객체 데이터베이스들은 공통 속성들에 의해 함께 그룹화될 수 있고/있거나 링크되는 다수의 객체 집합들을 포함할 수 있으며; 그들은 일부 공통 속성들에 의해 다른 객체 집합들과 관련될 수 있다. 객체 지향 데이터베이스들은 객체들이 단지 여러 개의 데이터가 아니라 주어진 객체 내에 캡술화되는 다른 타입들의 능력들을 가질 수 있는 것을 제외하고 관계형 데이터베이스들과 유사하게 수행된다. MRM 데이터베이스가 데이터 구조로 구현되면, MRM 데이터베이스(419)의 사용은 MRM 구성요소(435)와 같은 다른 구성요소로 통합될 수 있다. 또한, 데이터베이스는 데이터 구조들, 객체들, 및 관계형 구조들의 혼합으로 구현될 수 있다. 데이터베이스들은 표준 데이터 처리 기술들을 통해 무수한 변형들로 통합 및/또는 분산될 수 있다. 데이터베이스들의 일부들, 예를 들어 테이블들은 이출 및/또는 이입될 수 있고 따라서 비집중 및/또는 통합될 수 있다.
일 실시예에서, 데이터베이스 구성요소(419)는 수개의 테이블들(419a-e)을 포함한다. 사용자 테이블(419a)은 user_id, ssn, dob, first_name, last_name, age, state, address_firstline, address_secondline, zipcode, devices_list, contact_info, contact_type, alt_contact_info, alt_contact_type, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 필드들을 포함할 수 있다. 사용자 테이블은 MRM 상에서 다수의 엔티티 계정들을 지원 및/또는 추적할 수 있다. 클라이언트 테이블(419b)은 device_ID, device_name, device_IP, device_MAC, device_type, device_model, device_version, device_OS, device_apps_list, device_securekey, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 필드들을 포함할 수 있다. 앱 테이블(419c)은 application_ID, application_name, application_type, application_backup_list, application_sync, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 필드들을 포함할 수 있다. 메시지 테이블(419d)은 msg_id, msg_application, timestamp, msg_details_list, message_size, message_origin, msg_journal, msg_read_detail, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 분야들을 포함할 수 있다. 저널 테이블(419e)은 journal_ID, journal_timestamp, msg_source, journal_access_apps, segmented_msg_list, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 분야들을 포함할 수 있다.
일 실시예에서, MRM 데이터베이스는 다른 데이터베이스 시스템들과 상호작용할 수 있다. 예를 들어, 분산 데이터베이스 시스템을 이용하면, 검색 MRM 구성요소에 의한 질의들 및 데이터 액세스는 MRM 데이터베이스, 통합된 데이터 보안 계층 데이터베이스의 조합을 단일 데이터베이스 엔티티로 처리할 수 있다.
일 실시예에서, 사용자 프로그램들은 다양한 사용자 인터페이스 프리미티브들을 포함할 수 있으며, 이 프리미티들은 MRM을 갱신하는 역할을 할 수 있다. 또한, 다양한 계정들은 MRM이 서빙할 필요가 있을 수 있는 클라이언트들의 환경들 및 타입들에 따라 맞춤 데이터베이스 테이블들을 필요로 할 수 있다. 임의의 고유 필드들은 도처에서 키 필드로 지정될 수 있다는 점이 주목되어야 한다. 대안 실시예에서, 이러한 테이블들은 그들의 자체 데이터베이스들 및 그들의 각각의 데이터베이스 컨트롤러들(즉, 상기 테이블들 각각에 대한 개별 데이터베이스 컨트롤러들)로 비집중되었다. 표준 데이터 처리 기술들을 이용하면, 수개의 컴퓨터 시스템들 및/또는 저장 디바이스들을 통해 데이터베이스들을 더 분산시킬 수 있다. 유사하게, 비집중형 데이터베이스 컨트롤러들의 구성들은 다양한 데이터베이스 구성요소들(419a-e)을 통합 및/또는 분산함으로써 변화될 수 있다. MRM은 데이터베이스 컨트롤러들을 통해 다양한 설정들, 입력들, 및 파라미터들을 기록하도록 구성될 수 있다.
MRM 데이터베이스는 그 자체, 및/또는 유사한 것의 수단들을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달될 수 있고/있거나 다른 구성요소들과 통신할 수 있다. 가장 빈번하게, MRM 데이터베이스는 MRM 구성요소, 다른 프로그램 구성요소들, 및/또는 유사한 것과 통신한다. 데이터베이스는 다른 노드들 및 데이터에 관한 정보를 포함, 유지, 및 제공할 수 있다.
MRM
MRM 구성요소(435)는 CPU에 의해 실행되는 저장된 프로그램 구성요소이다. 일 실시예에서, MRM 구성요소는 이전 도면들에서 논의되는 MRM의 양태들의 임의의 및/또는 모든 조합들을 포함한다. 그와 같이, MRM은 다양한 통신 네트워크들에 걸쳐 정보, 서비스들, 트랜잭션들, 및/또는 유사한 것의 액세스, 획득 및 제공에 영향을 미친다.
MRM 구성요소는 Error! Reference source not found.를 MRM 구성요소들을 통해 Error! Reference source not found., 및/또는 유사한 것 및 MRM의 사용으로 변환할 수 있다. 일 실시예에서, MRM 구성요소(435)는 입력들(예를 들어, 완전한 메시지 저널들(201 및 301); 및/또는 유사한 것) 등을 취하고, 입력들을 다양한 MRM 구성요소들을 통해 출력들(예를 들어, 완전한 메시지 저널들(202 내지 204)의 사본 카피들; 완전한 메시지의 세그먼트들을 포함하는 저널들(302 내지 304); 및/또는 유사한 것)로 변환한다.
노드들 사이에서 정보의 액세스를 가능하게 하는 MRM 구성요소는 아파치 구성요소들, 어셈블리, 액티브엑스, 이진 실행 파일들(binary executables), (ANSI)(오브젝티브-) C(++), C# 및/또는 .NET, 데이터베이스 어댑터들, CGI 스크립트들, 자바, 자바스크립트, 매핑 툴스, 절차 및 객체 지향 개발 툴스, PERL, PHP, 파이선, 쉘 스크립트들, SQL 커맨드들, 웹 애플리케이션 서버 확장들, 웹 개발 환경들 및 라이브러리들(예를 들어, 마이크로소프트의 액티브엑스; 어도비 에어, 플렉스 & 플래시; 에이잭스; (D)HTML; 도조, 자바; 자바스크립트; 제이쿼리(UI); 무툴스; 프로토타입; script.aculo.us; 간이 객체 액세스 프로토콜(Simple Object Access Protocol)(SOAP); SWFObject; 야후! 사용자 인터페이스; 및/또는 유사한 것), 웹객체들, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 표준 개발 툴스 및 언어들을 이용함으로써 개발될 수 있다. 일 실시예에서, MRM 서버는 통신들을 암호화하고 복호화하기 위해 암호 서버를 이용한다. MRM 구성요소는 그 자체, 및/또는 유사한 것의 수단들을 포함하는 구성요소 집합 내의 다른 구성요소들에 전달될 수 있고/있거나, 다른 구성요소들과 통신할 수 있다. 가장 빈번하게, MRM 구성요소는 MRM 데이터베이스, 운영 체제들, 다른 프로그램 구성요소들, 및/또는 유사한 것과 통신한다. MRM은 프로그램 구성요소, 시스템, 사용자, 및/또는 데이터 통신들, 요청들, 및/또는 응답들을 포함, 통신, 생성, 획득, 및/또는 제공할 수 있다.
분산 MRM
MRM 노드 컨트롤러 구성요소들 중 어느 것에 대한 구조 및/또는 동작은 개발 및/또는 전개를 용이하게 하기 위해 임의의 수의 방식들로 결합, 통합, 및/또는 분산될 수 있다. 유사하게, 구성요소 집합은 전개 및/또는 개발을 용이하게 하기 위해 임의의 수의 방식들로 결합될 수 있다. 이것을 달성하기 위해, 구성요소들을 요구에 따라 통합 방식으로 동적으로 로딩할 수 있는 공통 코드 베이스로 또는 수단 내에 구성요소들을 통합할 수 있다.
구성요소 집합은 표준 데이터 처리 및/또는 개발 기술들을 통해 무수한 변형들로 통합 및/또는 분산될 수 있다. 프로그램 구성요소 집합 내의 프로그램 구성요소들 중 어느 하나에 대한 다수의 인스턴스들은 로드 밸런싱 및/또는 데이터 처리 기술들을 통해 성능을 개선하기 위해 단일 노드 상에, 그리고/또는 다수의 노드들에 걸쳐 인스턴스화될 수 있다. 더욱이, 단일 인스턴스들은 또한 다수의 컨트롤러들 및/또는 저장 디바이스들; 예를 들어, 데이터베이스들에 걸쳐 분산될 수 있다. 협력하여 작동하는 모든 프로그램 구성요소 인스턴스들 및 컨트롤러들은 표준 데이터 처리 통신 기술들을 통해 그렇게 행할 수 있다.
MRM 컨트롤러의 구성은 시스템 전개의 맥락에 의존할 것이다. 기본 하드웨어 자원들의 버짓, 용량, 위치, 및/또는 사용과 같지만, 이들에 제한되지 않는 인자들은 전개 요건들 및 구성에 미칠 수 있다. 구성이 (i) 더 합병된 그리고/또는 통합된 프로그램 구성요소들을 야기하는지, (ii) 더 분산된 시리즈의 프로그램 구성요소들을 야기하는지, 및/또는 (iii) 합병 구성과 통합 구성 사이의 일부 조합을 야기하는지에 상관없이 , 데이터가 통신, 획득, 및/또는 제공될 수 있다. 프로그램 구성요소 집합으로부터 공통 코드 베이스로 통합되는 구성요소들의 인스턴스들은 데이터를 통신, 획득, 및/또는 제공할 수 있다. 이것은 데이터 레퍼렌싱(예를 들어, 포인터들), 내부 메시징, 객체 인스턴스 가변 통신, 공유 메모리 공간, 가변 패싱, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 인트라 애플리케이션 데이터 처리 통신 기술들을 통해 달성될 수 있다.
구성요소 집합 컴포넌트들이 서로 별개이고, 분리되고/되거나, 외부에 있으면, 이때 데이터를 다른 구성요소들과 그리고/또는 다른 구성요소들에 통신, 획득, 및/또는 제공하는 것은 애플리케이션 프로그램 인터페이스들(Application Program Interfaces)(API) 정보 전달; (분산) 구성요소 객체 모델((distributed) Component Object Model)((D)COM), (분산) 객체 링킹 및 임베딩((Distributed) Object Linking 및 Embedding)((D)OLE), 및/또는 유사한 것), 공통 객체 요청 브로커 아키텍처(Common Object Request Broker Architecture)(CORBA), Jini 로컬 및 원격 애플리케이션 프로그램 인터페이스들, 자바스크립트 객체 표기법(JavaScript Object Notation)(JSON), 원격 메소드 호출(Remote Method Invocation)(RMI), SOAP, 프로세스 파이프들, 공유 파일들, 및/또는 유사한 것과 같지만, 이들에 제한되지 않는 인터 애플리케이션 데이터 처리 통신 기술들을 통해 달성될 수 있다. 인터 애플리케이션 통신을 위한 별개 구성요소들 사이에 또는 인트라 애플리케이션 통신을 위한 단일 구성요소의 메모리 공간들 내에 송신되는 메시지들은 그래머의 생성 및 파싱을 통해 용이하게 될 수 있다. 그래머는 개발 툴스 예컨대 렉스, 야크, XML, 및/또는 유사한 것을 사용함으로써 개발될 수 있으며, 그것은 그래머 생성 및 파싱 능력들을 허용하고, 결국 구성요소들 내에 및 구성요소들 사이에 통신 메시지들의 기초를 형성할 수 있다.
예를 들어, 그래머는 이하와 같이, HTTP 포스트 커맨드의 토큰들을 인식하도록 배열될 수 있다:
Figure 112016097375024-pct00001
여기서, Value1은 "http ://"가 그래머 신택스의 일부이고, 뒤따르는 것이 포스트 값의 일부로 간주되기 때문에 파라미터인 것으로 구별된다. 유사하게, 그러한 그래머의 경우, 변수 "Value1"은 "http://" 포스트 커맨드로 삽입된 다음에 송신될 수 있다. 그래머 신택스 자체는 파싱 메커니즘(예를 들어, 렉스, 야크 등에 의해 처리되는 바와 같이 신택스 설명 텍스트 파일)을 생성하기 위해 해석될 수 있고/있거나, 다른 방법으로 사용되는 구조화된 데이터로 제시될 수 있다. 또한, 파싱 메커니즘이 생성되고/되거나 인스턴스화되면, 파싱 메커니즘 자체는 문자(예를 들어, 탭) 설명 텍스트, HTML, 구조화된 텍스트 스트림들, XML, 및/또는 유사한 구조화된 데이터와 같지만, 이들에 제한되지 않는 구조화된 데이터를 처리 및/또는 파싱할 수 있다. 다른 실시예에서, 인터 애플리케이션 데이터 처리 프로토콜들 자체는 (예를 들어, 통신들) 데이터를 파싱하기 위해 이용될 수 있는 해석된 그리고/또는 용이하게 이용가능한 파서들(예를 들어, JSON, SOAP, 및/또는 유사한 파서들)을 가질 수 있다. 게다가, 파싱 그래머는 메시지 파싱을 넘어 사용될 수 있지만, 또한 데이터베이스들, 데이터 집합들, 데이터 스토어들, 구조화된 데이터, 및/또는 유사한 것을 파싱하기 위해 사용될 수 있다. 또한, 원하는 구성은 시스템 전개의 맥락, 환경, 및 요건들에 의존할 것이다.
예를 들어, 일부 구현들에서, MRM 컨트롤러는 정보 서버를 통해 보안 소켓 계층("SSL") 소켓 서버를 구현하는 PHP 스크립트를 실행하고 있을 수 있으며, 정보 서버는 클라이언트가 데이터, 예를 들어 JSON 포맷으로 인코딩되는 데이터를 송신할 수 있는 서버 포트 상에서 착신 통신들을 리스닝한다. 착신 통신을 식별하면, PHP 스크립트는 클라이언트 디바이스로부터 착신 메시지를 판독하고, 수신된 JSON 인코딩 덱스트 데이터를 파싱하여 정보를 JSON 인코딩 텍스트 데이터로부터 PHP 스크립트 변수들로 추출하고, 데이터(예를 들어, 클라이언트 식별 정보 등) 및/또는 추출된 정보를 구조화된 질의 언어(Structured Query Language)("SQL")를 사용하여 액세스가능한 관계형 데이터베이스에 저장할 수 있다. JSON 인코딩 입력 데이터를 클라이언트 디바이스로부터 SSL 연결을 통해 허용하고, 데이터를 파싱하여 변수들을 추출하고, 데이터를 데이터베이스에 저장하기 위해, PHP/SQL 커맨드들의 형태로 실질적으로 기록되는 예시적 리스팅은 아래에 제공된다:
Figure 112016097375024-pct00002
Figure 112016097375024-pct00003
또한, 이하의 자원들은 SOAP 파서 구현에 관한 예시적 실시예들을 제공하기 위해 사용될 수 있다:
Figure 112016097375024-pct00004
및 다른 파서 구현들:
Figure 112016097375024-pct00005
그것의 모두는 이로써 본원에 참조로 분명히 포함된다.
본 기술분야의 다양한 문제들 및 진보를 다루기 위해, 본 출원의 전체(including 커버 페이지, 발명의 명칭, 서두, 분야, 배경기술, 개요, 도면의 간단한 설명, 상세한 설명, 청구항들, 요약서, 도면들, 부록들 및/또는 다른 사항을 포함함)는 청구된 혁신들이 실시될 수 있는 다양한 예시적 실시예들을 예시에 의해 나타낸다. 본 출원의 장점들 및 특징들은 실시예들의 대표적인 샘플일 뿐이고, 총망라적이고/이거나 배타적인 것이 아니다. 그들은 청구된 원리들의 이해를 원조하고 교시하기 위해서만 제시된다. 그들은 모든 청구된 혁신들을 나타내지 않는다는 점이 이해되어야 한다. 그와 같이, 본 개시내용의 특정 양태들은 본원에서 논의되지 않았다. 그러한 대체 실시예들은 혁신들의 특정 부분에 대해 제시되지 않을 수 있거나 일부에 이용가능할 수 있는 더 설명되지 않은 대체 실시예들은 그러한 대체 실시예들의 포기로 간주되지 않아야 한다. 그러한 설명되지 않은 많은 실시예들은 혁신들의 동일한 원리들을 포함하고 다른 실시예들은 균등하다는 점이 이해될 것이다. 따라서, 다른 실시예들이 이용될 수 있고 본 개시내용의 범위 및/또는 사상으로부터 벗어나지 않고 기능적, 논리적, 동작적, 조직적, 구조적 및/또는 위상적 수정들이 이루어질 수 있다는 점이 이해되어야 한다. 그와 같이, 모든 예들 및/또는 실시예들은 본 개시내용 도처에서 비제한적인 것으로 간주된다. 또한, 본원에서 논의되지 않은 것들과 관련한 본원에서 논의된 그러한 실시예들에 관해 공간 및 반복을 감소시키는 목적들이라는 것 이외의 어떠한 유추도 하지 않아야 한다. 예를 들어, 도면들 및/또는 도처에 설명된 바와 같이 임의의 데이터 흐름 시퀀스(들), 프로그램 구성요소들(구성요소 집합), 다른 구성요소들, 및/또는 임의의 현재 특징 세트들의 임의의 조합의 논리적 및/또는 위상적 구조는 고정 동작 순서 및/또는 배열로 제한되는 것이 아니라, 오히려, 임의의 개시된 순서는 예시적이고, 모든 균등물들은 순서에 관계없이, 본 개시내용에 의해 고려된다는 점이 이해되어야 한다. 더욱이, 그러한 특징들은 직렬 실행으로 제한되는 것이 아니라, 오히려, 비동기적으로, 동시에, 병렬로, 동시에, 동기적으로, 그리고/또는 유사한 것으로 실행될 수 있는 임의의 수의 스레드들, 프로세스들, 프로세서들, 서비스들, 서버들, 및/또는 유사한 것은 또한 본 개시내용에 의해 고려된다는 점이 이해되어야 한다. 그와 같이, 이러한 특징들의 일부는 그들이 단일 실시예에 동시에 존재할 수 없다는 점에서, 서로 모순될 수 있다. 유사하게, 일부 특징들은 혁신들의 일 양태에 적용가능하고, 다른 혁신들에 적용불가능하다. 게다가, 본 개시내용은 현재 청구되지 않은 다른 혁신들을 포함한다. 출원인은 그러한 현재 청구되지 않은 혁신들에서, 그러한 혁신들을 청구하는 권리, 추가의 출원들, 연속 출원, 일부 계속 출원, 분할 출원, 및/또는 그것의 유사한 것을 포함하는 모든 권리들을 보유한다. 그와 같이, 본 개시내용의 장점들, 실시예들, 예들, 기능, 특징들, 논리적, 동작적, 조직적, 구조적, 위상적, 및/또는 다른 양태들은 청구항들에 의해 정의되는 본 개시내용에 관한 제한들 및 청구항들의 균등물들에 관한 제한들로 간주되지 않아야 한다는 점이 이해되어야 한다. MRM 개인 및/또는 기업 사용자, 데이터베이스 구성 및/또는 관계형 모델, 데이터 타입, 데이터 송신 및/또는 네트워크 프레임워크, 신택스 구조, 및/또는 유사한 것의 특정 요구들 및/또는 특성들에 따라, 많은 유연성 및 맞춤화를 허용하는 MRM의 다양한 실시예들이 구현될 수 있다는 점이 이해되어야 한다. 그러나, MRM의 다양한 실시예들 및 논의들이 애플리케이션 메시지 저널링 관리에 관한 것이었지만, 본원에 설명되는 실시예들은 매우 다양한 다른 애플리케이션들 및/또는 구현들을 위해 용이하게 구성 및/또는 맞춤화될 수 있다는 점이 이해되어야 한다.

Claims (19)

  1. 컴퓨터 시스템을 위한 신속 메시지 재송신 방법으로서,
    상기 컴퓨터 시스템의 저장 매체에서, 상기 컴퓨터 시스템의 동작들 동안에 애플리케이션들 또는 프로세스들에 의해 기록되는 복수의 메시지들로부터 생성되는 시퀀싱된 메시지들의 마스터 저널을 유지하는 단계 - 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트는 적절히 기능하기 위해 상기 시퀀싱된 메시지들에의 액세스를 필요로 함 -;
    페일오버들을 경험할 수 있는 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트에 의한 상기 시퀀싱된 메시지들에의 액세스에 대한 추정된 요구를 결정하는 단계;
    상기 추정된 요구에 기초하여, 상기 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 카피들 및/또는 하나 이상의 저널 세그먼트들을 생성하는 단계 - 상기 저널 카피 또는 저널 세그먼트 각각은 임의의 주어진 순간에 단일 애플리케이션 또는 프로세스에 의해 독립적으로 액세스가능함 -; 및
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을, 요구에 따라, 상기 시퀀싱된 메시지들에서의 페일오버들 또는 갭을 경험했던 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 할당하여, 복수의 애플리케이션들 또는 프로세스들이 상기 마스터 저널의 콘텐츠에 동시에 액세스할 수 있는 것에 의해, 상기 시퀀싱된 메시지들에서의 상기 페일오버들 또는 상기 갭으로부터의 복구에서 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 의한 상기 마스터 저널 내의 상기 시퀀싱된 메시지들에의 액세스를 더 신속하게 하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 컴퓨터 시스템의 동작들 동안에 상기 애플리케이션들 또는 프로세스들에 의해 기록되는 상기 복수의 메시지들은 시퀀서에 의해 상기 시퀀싱된 메시지들로 변환되는, 방법.
  3. 제2항에 있어서, 상기 시퀀서는 상기 복수의 시퀀싱된 메시지들을 상기 애플리케이션들 또는 프로세스들에 재발행하는, 방법.
  4. 제1항에 있어서, 상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들은 전용 소프트웨어 또는 하드웨어 모듈에 의해 생성되는, 방법.
  5. 제1항에 있어서,
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들의 콘텐츠를 상기 마스터 저널의 갱신된 콘텐츠로 갱신하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들 중 첫 번째 것의 콘텐츠를 상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들 중 두 번째 것의 콘텐츠에 기초하여 갱신하거나 복구하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을 적어도 제1 티어 및 제2 티어로 분할하는 단계; 및
    제2 티어 저널 카피/세그먼트에 의한 콘텐츠의 갱신 또는 복구를 다른 제2 티어 저널 카피/세그먼트 또는 제1 티어 저널 카피/세그먼트 중 어느 하나의 콘텐츠에 기초하도록 제한하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 상기 컴퓨터 시스템은 전자 거래 시스템; 경매 기반 판매 시스템; 및 게임 시스템으로 구성되는 그룹으로부터 선택되는, 방법.
  9. 제1항에 있어서, 상기 추정된 요구는,
    공지되거나 잠재적인 소프트웨어 장애들;
    공지되거나 잠재적인 하드웨어 장애들;
    소프트웨어 또는 하드웨어 장애에 영향을 받는 애플리케이션들 또는 프로세스들의 수;
    애플리케이션 또는 프로세스가 상기 마스터 저널, 상기 하나 이상의 저널 카피들 또는 상기 하나 이상의 저널 세그먼트들 내의 메시지에 액세스하는 속도;
    실패된 애플리케이션 또는 프로세스에 대한 원하는 복구 시간; 및
    상기 컴퓨터 시스템의 예상된 작업부하로 구성되는 그룹으로부터 선택되는 하나 이상의 인자들에 기초하여 결정되는, 방법.
  10. 신속 메시지 재송신을 구현하는 컴퓨터 시스템으로서,
    적어도 하나의 컴퓨터 프로세서; 및
    상기 적어도 하나의 컴퓨터 프로세서와 통신하도록 배치되고 컴퓨터 명령들을 저장하는 적어도 하나의 저장 매체를 포함하며, 상기 컴퓨터 명령들은 상기 적어도 하나의 컴퓨터 프로세서로 하여금,
    상기 컴퓨터 시스템의 상기 적어도 하나의 저장 매체에서, 상기 컴퓨터 시스템의 동작들 동안에 애플리케이션들 또는 프로세스들에 의해 기록되는 복수의 메시지들로부터 생성되는 시퀀싱된 메시지들의 마스터 저널을 유지하게 하고 - 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트는 적절히 기능하기 위해 상기 시퀀싱된 메시지들에의 액세스를 필요로 함 -;
    페일오버들을 경험할 수 있는 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트에 의한 상기 시퀀싱된 메시지들에의 액세스에 대한 추정된 요구를 결정하게 하고;
    상기 추정된 요구에 기초하여, 상기 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 카피들 및/또는 하나 이상의 저널 세그먼트들을 생성하게 하고 - 상기 저널 카피 또는 저널 세그먼트 각각은 임의의 주어진 순간에 단일 애플리케이션 또는 프로세스에 의해 독립적으로 액세스가능함 -; 및
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을, 요구에 따라, 상기 시퀀싱된 메시지들에서의 페일오버들 또는 갭을 경험했던 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 할당하여, 복수의 애플리케이션들 또는 프로세스들이 상기 마스터 저널의 콘텐츠에 동시에 액세스할 수 있는 것에 의해, 상기 시퀀싱된 메시지들에서의 상기 페일오버들 또는 상기 갭으로부터의 복구에서 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 의한 상기 마스터 저널 내의 상기 시퀀싱된 메시지들에의 액세스를 더 신속하게 하는, 컴퓨터 시스템.
  11. 제10항에 있어서, 상기 컴퓨터 시스템의 동작들 동안에 상기 애플리케이션들 또는 프로세스들에 의해 기록되는 상기 복수의 메시지들은 시퀀서에 의해 상기 시퀀싱된 메시지들로 변환되는, 컴퓨터 시스템.
  12. 제11항에 있어서, 상기 시퀀서는 상기 복수의 시퀀싱된 메시지들을 상기 애플리케이션들 또는 프로세스들에 재발행하는, 컴퓨터 시스템.
  13. 제10항에 있어서, 상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들은 전용 소프트웨어 또는 하드웨어 모듈에 의해 생성되는, 컴퓨터 시스템.
  14. 제10항에 있어서,
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들의 콘텐츠를 상기 마스터 저널의 갱신된 콘텐츠로 갱신하도록 더 구성되는, 컴퓨터 시스템.
  15. 제10항에 있어서,
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들 중 첫 번째 것의 콘텐츠를 상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들 중 두 번째 것의 콘텐츠에 기초하여 갱신하거나 복구하도록 더 구성되는, 컴퓨터 시스템.
  16. 제10항에 있어서,
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을 적어도 제1 티어 및 제2 티어로 분할하고;
    제2 티어 저널 카피/세그먼트에 의한 콘텐츠의 갱신 또는 복구를 다른 제2 티어 저널 카피/세그먼트 또는 제1 티어 저널 카피/세그먼트 중 어느 하나의 콘텐츠에 기초하게 제한하도록 더 구성되는, 컴퓨터 시스템.
  17. 제10항에 있어서, 상기 컴퓨터 시스템은 전자 거래 시스템; 경매 기반 판매 시스템; 및 게임 시스템으로 구성되는 그룹으로부터 선택되는, 컴퓨터 시스템.
  18. 제10항에 있어서, 상기 추정된 요구는,
    공지되거나 잠재적인 소프트웨어 장애들;
    공지되거나 잠재적인 하드웨어 장애들;
    소프트웨어 또는 하드웨어 장애에 영향을 받는 애플리케이션들 또는 프로세스들의 수;
    애플리케이션 또는 프로세스가 상기 마스터 저널, 상기 하나 이상의 저널 카피들 또는 상기 하나 이상의 저널 세그먼트들 내의 메시지에 액세스하는 속도;
    실패된 애플리케이션 또는 프로세스에 대한 원하는 복구 시간; 및
    상기 컴퓨터 시스템의 예상된 작업부하로 구성되는 그룹으로부터 선택되는 하나 이상의 인자들에 기초하여 결정되는, 컴퓨터 시스템.
  19. 실행될 때, 컴퓨터 시스템으로 하여금 신속 메시지 재송신을 구현하게 하는 컴퓨터 명령들을 갖는 비일시적 컴퓨터 판독가능 매체로서, 상기 비일시적 컴퓨터 판독가능 매체는,
    상기 컴퓨터 시스템의 저장 매체에서, 상기 컴퓨터 시스템의 동작들 동안에 애플리케이션들 또는 프로세스들에 의해 기록되는 복수의 메시지들로부터 생성되는 시퀀싱된 메시지들의 마스터 저널을 유지하는 코드 - 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트는 적절히 기능하기 위해 상기 시퀀싱된 메시지들에의 액세스를 필요로 함 -;
    페일오버들을 경험할 수 있는 상기 애플리케이션들 또는 프로세스들의 적어도 하나의 서브세트에 의한 상기 시퀀싱된 메시지들에의 액세스에 대한 추정된 요구를 결정하는 코드;
    상기 추정된 요구에 기초하여, 상기 마스터 저널의 콘텐츠를 복사함으로써 하나 이상의 저널 카피들 및/또는 하나 이상의 저널 세그먼트들을 생성하는 코드 - 상기 저널 카피 또는 저널 세그먼트 각각은 임의의 주어진 순간에 단일 애플리케이션 또는 프로세스에 의해 독립적으로 액세스가능함 -; 및
    상기 하나 이상의 저널 카피들 및/또는 상기 하나 이상의 저널 세그먼트들을, 요구에 따라, 상기 시퀀싱된 메시지들에서의 페일오버들 또는 갭을 경험했던 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 할당하여, 복수의 애플리케이션들 또는 프로세스들이 상기 마스터 저널의 콘텐츠에 동시에 액세스할 수 있는 것에 의해, 상기 시퀀싱된 메시지들에서의 상기 페일오버들 또는 상기 갭으로부터의 복구에서 상기 애플리케이션들 또는 프로세스들의 상기 적어도 하나의 서브세트의 일부에 의한 상기 마스터 저널 내의 상기 시퀀싱된 메시지들에의 액세스를 더 신속하게 하는 코드를 포함하는, 비일시적 컴퓨터 판독가능 매체.
KR1020167027985A 2014-03-11 2015-03-11 메시지 재송신 메커니즘을 위한 기술들 KR102160850B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461951390P 2014-03-11 2014-03-11
US201461951364P 2014-03-11 2014-03-11
US61/951,364 2014-03-11
US61/951,390 2014-03-11
PCT/US2015/019912 WO2015138581A1 (en) 2014-03-11 2015-03-11 Techniques for message retransmission mechanism

Publications (2)

Publication Number Publication Date
KR20160132433A KR20160132433A (ko) 2016-11-18
KR102160850B1 true KR102160850B1 (ko) 2020-09-28

Family

ID=54072360

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027985A KR102160850B1 (ko) 2014-03-11 2015-03-11 메시지 재송신 메커니즘을 위한 기술들

Country Status (9)

Country Link
EP (1) EP3117336B1 (ko)
JP (1) JP6523319B2 (ko)
KR (1) KR102160850B1 (ko)
AU (1) AU2015229429B2 (ko)
BR (1) BR112016020974B1 (ko)
CA (1) CA2942355A1 (ko)
ES (1) ES2930670T3 (ko)
SG (1) SG11201607520WA (ko)
WO (1) WO2015138581A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760920A (zh) * 2020-08-20 2021-12-07 北京沃东天骏信息技术有限公司 一种数据同步方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271815A1 (en) 2005-05-31 2006-11-30 Kazuhiko Mizuno System and method for disaster recovery of data
US20070299970A1 (en) 2006-06-19 2007-12-27 Liquid Computing Corporation Secure handle for intra- and inter-processor communications
US20120096308A1 (en) 2003-06-23 2012-04-19 Hitachi, Ltd. Remote copy system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676580B2 (en) * 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
JP2007286860A (ja) * 2006-04-17 2007-11-01 Hitachi Ltd データ転送方法及び情報処理装置
US8706822B2 (en) * 2010-06-23 2014-04-22 Microsoft Corporation Delivering messages from message sources to subscribing recipients
FR2984642B1 (fr) * 2011-12-20 2014-01-31 Thales Sa Procede et systeme pour une retransmission optimisee d'un message dans un contexte de communication satellite

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120096308A1 (en) 2003-06-23 2012-04-19 Hitachi, Ltd. Remote copy system
US20060271815A1 (en) 2005-05-31 2006-11-30 Kazuhiko Mizuno System and method for disaster recovery of data
US20070299970A1 (en) 2006-06-19 2007-12-27 Liquid Computing Corporation Secure handle for intra- and inter-processor communications

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Aguilera 외 4명. 'Improving Recoverability in Multi-tier Storage Systems'. 37th Annual IEEE/IFIP International Conference on Dependable Systems and Networks, 2007.06.25-27.

Also Published As

Publication number Publication date
WO2015138581A1 (en) 2015-09-17
JP2017513105A (ja) 2017-05-25
EP3117336A4 (en) 2018-02-28
EP3117336A1 (en) 2017-01-18
JP6523319B2 (ja) 2019-05-29
AU2015229429A1 (en) 2016-09-29
KR20160132433A (ko) 2016-11-18
CA2942355A1 (en) 2015-09-17
AU2015229429B2 (en) 2019-04-04
ES2930670T3 (es) 2022-12-21
EP3117336B1 (en) 2022-09-28
BR112016020974A2 (ko) 2017-08-15
BR112016020974B1 (pt) 2023-02-07
SG11201607520WA (en) 2016-10-28

Similar Documents

Publication Publication Date Title
EP2998863B1 (en) Converting a serial transaction schedule to a parallel transaction schedule
US9256657B1 (en) Tracking data communicated between services
CN109522363B (zh) 基于区块链的云平台同步方法、系统、设备及存储介质
US11385956B2 (en) Metric-based anomaly detection system with evolving mechanism in large-scale cloud
US20190372924A1 (en) Message logging using two-stage message logging mechanisms
US8843646B2 (en) Multi-desktop interaction using nested remote desktop sessions
US9911065B2 (en) System and method for processing image data
US9547565B2 (en) Techniques for message retransmission mechanism
CN102917012B (zh) 执行存储与通信去重复的方法及设备
US20170324686A1 (en) System and method for secure and efficient communication within an organization
JPWO2014141976A1 (ja) ソーシャル・メデイアにおけるユーザの分類方法、コンピュータ・プログラム及びコンピュータ
WO2022187005A1 (en) Replication of parent record having linked child records that were previously replicated asynchronously across data storage regions
CN111338834A (zh) 数据存储方法和装置
KR102160850B1 (ko) 메시지 재송신 메커니즘을 위한 기술들
US20140324482A1 (en) Vehicle Status Monitoring Apparatuses, Methods and Systems
CN111046010A (zh) 日志储存方法、装置、系统、电子设备和计算机可读介质
JP6364727B2 (ja) 情報処理システム、分散処理方法、及び、プログラム
WO2022187008A1 (en) Asynchronous replication of linked parent and child records across data storage regions
US20220342787A1 (en) Operation management apparatus, system, method, and non-transitory computer readable medium storing program
KR20200137045A (ko) 데이터 동기화 및 페일오버 관리를 위한 시스템들 및 방법들
JP7305898B2 (ja) 操作応答方法、操作応答装置、電子機器及び記憶媒体
JP5669179B2 (ja) 情報処理システム
US10061803B2 (en) Processing method and processing system
US10169598B1 (en) Systems and methods for sending and receiving encrypted submessages
CN103067272A (zh) 一种消息路由保证方法及系统

Legal Events

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