KR102108595B1 - 멀티플 서버 노드를 갖는 시설 보안시스템 - Google Patents

멀티플 서버 노드를 갖는 시설 보안시스템 Download PDF

Info

Publication number
KR102108595B1
KR102108595B1 KR1020157008926A KR20157008926A KR102108595B1 KR 102108595 B1 KR102108595 B1 KR 102108595B1 KR 1020157008926 A KR1020157008926 A KR 1020157008926A KR 20157008926 A KR20157008926 A KR 20157008926A KR 102108595 B1 KR102108595 B1 KR 102108595B1
Authority
KR
South Korea
Prior art keywords
node
server
cluster
nodes
data
Prior art date
Application number
KR1020157008926A
Other languages
English (en)
Other versions
KR20150058280A (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 KR20150058280A publication Critical patent/KR20150058280A/ko
Application granted granted Critical
Publication of KR102108595B1 publication Critical patent/KR102108595B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6272Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database by registering files or documents with a third party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2823Reporting information sensed by appliance or service execution status of appliance services in a home automation network
    • H04L12/2825Reporting to a device located outside the home and the home network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • GPHYSICS
    • G08SIGNALLING
    • G08BSIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
    • G08B13/00Burglar, theft or intruder alarms
    • G08B13/18Actuation by interference with heat, light, or radiation of shorter wavelength; Actuation by intruding sources of heat, light, or radiation of shorter wavelength
    • G08B13/189Actuation by interference with heat, light, or radiation of shorter wavelength; Actuation by intruding sources of heat, light, or radiation of shorter wavelength using passive radiation detection systems
    • G08B13/194Actuation by interference with heat, light, or radiation of shorter wavelength; Actuation by intruding sources of heat, light, or radiation of shorter wavelength using passive radiation detection systems using image scanning and comparing systems
    • G08B13/196Actuation by interference with heat, light, or radiation of shorter wavelength; Actuation by intruding sources of heat, light, or radiation of shorter wavelength using passive radiation detection systems using image scanning and comparing systems using television cameras
    • G08B13/19697Arrangements wherein non-video detectors generate an alarm themselves

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Power Sources (AREA)

Abstract

분산된 네트워크로서 만들어질 수 있는 다수 서버를 갖는 시설 보안시스템. 네트워크 내 노드들 사이에서 데이터를 보내기 위해, 제1 노드가 제2 노드를 식별하는 노드 식별자에 접근할 수 있으며, 제1 및 제2 노드가 서버 클러스터의 적어도 일부를 형성하고, 다음에 제1 노드는 제2 노드로 데이터를 전송한다. 노드 식별자가 모두를 식별하는 서버 클러스터 내 모든 서버 노드에 의해 접근 가능한 클러스터 멤버쉽 정보 적어도 일부를 형성한다. 시스템 사용자들 사이의 관점을 공유하기 위한 능력 그리고 그와 같은 사용자들이 의도되지 않은 디스플레이를 조정하도록 하는 능력과 같은 기능이 분산된 네트워크, 연합 네트워크 도는 다른 종류의 네트워크에서 실행될 수 있다.

Description

멀티플 서버 노드를 갖는 시설 보안시스템{PHYSICAL SECURITY SYSTEM HAVING MULTIPLE SERVER NODES}
본 발명은 2012년 9월 7일 출원된 미국특허출원 제13/607,447호에 대한 계속 출원이며, 그 전체가 본원 명세서에서 원용된다.
본 발명은 멀티플 서버 노드를 갖는 시설 보안시스템에 대한 것이다.
시설 보안시스템은 빌딩, 시설, 또는 비밀 정보시설과 같은 시설로 권한 없는자가 접근하는 것을 막기 위한 조치를 실행하는 시스템이다. 시설 보안시스템의 예로는 카메라가 시설 그리고 시설에 인접한 것들을 모니터하기 위해 사용되는 시스템과 같은 감시 시스템; 빌딩으로의 접근을 제어하기 위해 REID 카드를 사용하는 시스템과 같은 접근 제어 시스템; 가정 도난 경보 시스템과 같은 무단 침입 탐지 시스템; 그리고 이들 시스템의 조합을 포함한다;
시설 보안시스템은 자주 컴퓨터를 포함한다. 이 같은 타입의 시설 보안시스템이 성장함에 따라, 시스템을 동작시키기 위해 필요한 컴퓨팅 파워가 증가한다. 예를 들면, 감시 시스템 내 카메라 수가 증가함에 따라, 추가의 비디오가 저장되고 그리고 많은 수의 카메라 동시 사용과 관리를 허용하기 위해 필요한 컴퓨팅 파워의 양이 증가한다. 따라서 시설 보안시스템이 성장함에 따라 맞게 되는 문제를 극복하기 위해 연구와 개발이 계속되고 있다.
제1 특징에 따라, 다수의 서버 노드를 포함하는 시설 보안시스템 내 데이터를 공유하기 위한 방법이 제공된다. 이 방법은 서버 노드들 중 한 노드(제1 노드)를 사용하여, 서버 노드의 또 다른 노드(제2 노드)를 식별하는 노드 식별자에 접근하고, 상기 제1 및 제2 노드가 서버 클러스터의 적어도 일부를 형성하며, 상기 노드 식별자는 상기 서버 클러스터 내 모든 서버 노드에 의해 접근 가능하며 이들 모두를 식별하는 클러스터 멤버쉽 정보 적어도 일부를 포함하고; 그리고 제1 노드로부터 제2 노드로 데이터를 전송함을 포함한다. (이하 설명에서, "~ 한다"는 "~할 수 있다"를 포함한다.)
상기 서버 클러스터가 3개 이상의 서버 노드를 포함할 수 있다.
상기 서버 노드가 카메라, 네트워크 비디오 레코더, 그리고 액세스 컨트롤 서버를 포함한다.
상기 방법은 제2 노드를 사용하여, 제1 노드를 식별하는 노드 식별자에 접근하며; 제2 노드로부터 제1 노드로 추가 데이터를 전송함을 더욱 포함한다.
클러스터 멤버쉽 정보가 서버 클러스터 내 서버 노드 각각을 고유하게 식별하는 노드 식별자; 그리고 서버 노드가 속하는 서버 클러스터를 고유하게 식별하는 클러스터 식별자를 포함한다.
서버 클러스터 내 서버 노드 각각이 클러스터 멤버쉽 정보의 자신의 버전을 지속적으로 저장한다.
상기 방법은 서버 클러스터 내 서버 노드 하나("재 부팅된 서버 노드")를 다시 부팅하고; 그리고 상기 재 부팅된 서버 노드가 온라인으로 되돌아 가기만 하면, 상기 재 부팅된 서버 노드를 사용하여 다음의 방법을 수행하도록 함을 더욱 포함한다: (i) 서버 클러스터를 식별하는 클러스터 식별자에 접근하고; 그리고 (ii) 서버 클러스터를 자동으로 다시 합류시킴.
상기 방법은 다음을 포함하는 방법을 수행함에 의해 새로운 서버 노드를 서버 클러스터로 추가함을 더욱 포함한다: 새로운 서버 노드에 저장된 클러스터 멤버쉽 정보 버전을 이미 서버 클러스터의 일부인 서버 노드중 한 노드("멤버쉽 컨트롤 노드")에 저장된 클러스터 멤버쉽 정보 버전과 교환하고; 그리고 클러스터에 합류하는 새로운 서버 노드 이전에, 새로운 서버 노드에 저장된 클러스터 멤버쉽 정보 버전을 클러스터 내 모든 서버 노드에 저장된 클러스터 멤버쉽 정보의 버전과 동기화시킴.
데이터를 전송함이 제1 노드를 사용하여 노드 식별자로부터 제2 노드를 위한 통신 종단점(endpoint)을 조사하고; 그리고 상기 통신 종단점으로 제1 노드로부터의 데이터를 전송함을 포함한다.
상기 통신 종단점 그리고 노드 식별자가 해당 통신 종단점으로 서버 클러스터 내 모든 서버 노드를 위한 노드 식별자와 관련된 네트워크 내 엔트리를 포함하며, 그리고 서버 클러스터 내 서버 노드 각각이 네트워크 맵의 자신의 버전을 지속적으로 저장한다.
상기 네트워크 맵이 서버 클러스터 내 서버 노드 각각이 중앙 집중형 서버를 사용하지 않고 서버 클러스터 내 다른 서버 노드로 데이터를 전송하도록 한다.
데이터가 제1 노드에서 저장되고, 상기 방법이 제1 노드를 사용하여 데이터를 수정함을 포함하며, 제1 노드로부터 제2 노드로 데이터를 전송하는 것이 제1 노드가 데이트를 수정한 뒤에 제1 및 제2 노드에서 데이터를 동기화시킴을 포함한다.
데이터가 인과성 버전 메커니즘(causality versioning mechanism)을 사용하여 발생된 버전 정보를 포함하고, 그리고 데이터의 다른 버전이 제1 및 제2 노드에 저장되며, 그리고 데이터를 동기화시킴이 제1 및 제2 노드에 저장된 버전 정보를 비교하고 제1 및 제2 노드 모두에서 버전 정보가 더욱 최근인 데이터를 채택함을 포함한다.
데이터가 제1 노드의 노드 식별자, 제1 노드의 심장박동 상태 정보, 제1 노드의 애플리케이션 상태 정보, 그리고 버전 정보를 포함하며, 그리고 데이터를 전송하는 것이 서버 클러스터 내 서버 노드 쌍들 사이에서 데이터 교환을 수행하는 가십(gossip) 프로코콜을 사용하여 서버 클러스터 내 모든 서버 노드로 데이터를 퍼뜨림을 포함한다.
데이터가 서버 클러스터 내 모든 서버 노드로 주기적으로 퍼뜨려질 수 있다.
상기 데이터는 제1 노드가 클러스터에 합류하는 때 제2 노드로 전송될 수 있다.
서버 클러스터 내 서버 노드에 의해 수정될 수 있는 엔티티가 있는 도메인은 서버 클러스터 내 노드 각각에서 국지적으로 저장되며, 데이터가 인과성 버전 메커니즘(causality versioning mechanism)을 사용하여 버전 정보를 발생시키어, 이 같은 버전 정보가 어느 서버 노드가 가장 최근에 한 엔트리를 수정하였는가를 나타내도록 함을 더욱 포함한다.
애플리케이션 상태 정보가 상기 도메인 내 모든 엔트리를 해시(hashing)함에 의해 발생된 최상 레벨 해시(top-level hashes)를 포함할 수 있다.
상기 방법이 제2 노드를 사용하여, 상기 최상 레벨 해시를 제2 노드에서 저장된 상응하는 도메인의 버전을 해시함에 의해 발생된 최상 해시와 비교하고; 그리고 상기 최상 레벨 해시가 상이하다면, 상기 버전 정보를 사용하여 제1 및 제2 노드 모두에서의 도메인들을 동기화함을 더욱 포함한다.
제1 노드에 의해 수정될 수 있을 뿐인 상태 엔트리가 제1 노드에서 저장되며, 버전 정보는 제1 노드가 상태 엔트리를 수정하는 때마다 증가하는 버전 번호를 포함한다.
애플리케이션 상태 정보가 상태 엔트리 쌍을 포함하고, 이 상태 엔트리 쌍은 상태 엔트리를 식별하는 상태 엔티티 식별자 그리고 버전 번호를 포함한다.
상기 방법이 제2 노드를 사용하여, 제1 노드로부터 수신된 버전 번호를 제2 노드에서 저장된 상응하는 상태 엔트리 버전 번호와 비교하고; 그리고 만약 버전 번호가 다르면, 제2 노드에 저장된 상태 엔트르를 제1 노드에 저장된 상태 엔트리로 업데이트함을 더욱 포함한다.
상기 상태 엔트리를 업데이트 함이 제1 노드로부터 제2 노드로 상태 엔트리와 동시에 수정되었던 제1 노드에 저장된 추가의 상태 엔트리를 전송함을 포함한다.
제1 노드 그리고 제2 노드가 클러스터 내 한 그룹의 서버 노드 중 적어도 일부를 포함하며, 이 같은 클러스터로 제1 노드가 상기 그룹 내 모든 서버 노드로 완전히 순서된 상태로(in totally ordered manner) 데이터를 전송할 수 있고, 그리고 상기 데이터를 전송함이 제1 노드가 상기그룹 내 모든 서버 노드로 데이터를 전송함을 포함한다.
데이터가 시설 보안시스템의 실행시간 중 발생된 비지속성(non-persistent)데이터를 포함할 수 있다.
데이터가 제1 노드를 통해 서버 클러스터 내 다른 서버 노드로부터 제2 노드로 스트림된 스트리밍 비디오를 포함한다.
본 발명의 또 다른 특징에 따라, 제1 노드 그리고 제2 노드를 포함하는 다수의 서버 노드를 포함하는 시설 보안시스템에서 데이터를 공유하기 위한 시스템이 제공되며, 제1 노드가 다음을 포함하는 방법을 수행하도록 하는 지시 및 명령을 암호화한 컴퓨터 판독가능한 매체로 통신할 수 있도록 연결된 처리기를 포함한다: 제2 노드를 식별하는 노드 식별자에 접근하고, 제1 및 제2 노드가 서버 클러스터의 적어도 일부를 포함하며, 상기 노드 식별자는 상기 서버 클러스터 내 모든 서버 노드에 의해 접근 가능하며 이들 모두를 식별하는 클러스터 멤버쉽 정보 적어도 일부를 포함하고; 그리고 제2 노드로 데이터를 전송함.
본 발명의 또 다른 특징에 따라, 처리기가 다수의 서버 노드를 포함하는 시설 보안시스템 내 데이터를 공유하기 위한 방법을 수행하도록 지시 및 명령을 코드화한 비-일시적 컴퓨터 판독가능 매체가 제공되며, 상기 방법이 서버 노드들 중 한 노드(제1 노드)를 사용하여, 서버 노드의 또 다른 노드(제2 노드)를 식별하는 노드 식별자에 접근하고, 상기 제1 및 제2 노드가 서버 클러스터의 적어도 일부를 포함하며, 상기 노드 식별자는 상기 서버 클러스터 내 모든 서버 노드에 의해 접근 가능하며 이들 모두를 식별하는 클러스터 멤버쉽 정보 적어도 일부를 포함하고; 그리고 제1 노드로부터 제2 노드로 데이터를 전송함을 포함한다.
본 발명의 또 다른 특징에 따라, 다수의 서버 노드를 포함하는 시설 보안시스템 내 무인 디스플레이와 상호작용하기 위한 방법이 제공되며, 상기 방법이 무인 디스플레이와 통하는 서버 노드 중 한 노드("제2 노드")로부터 클라이언트 디스플레이와 통하는 또 다른 서버 노드("제1 노드)로 무인 디스플레이에서 디스플레이된 뷰를 나타내는 뷰 상태 데이터를 전송하고; 그리고 클라이언트 디스플레이에서 상기 무인 디스플레이에서 디스플레이된 뷰의 적어도 일부를 디스플레이함을 포함한다.
한 특징에서, 상기 서버 노드 중 어느 노드도 중앙 집중형 게이트웨이 서버가 아니며; 선택적 특징에서, 상기 서버 노드 중 한 노드 이상이 중앙 집중형 게이트웨이 서버이다.
상기 방법이 제1 노드로부터 제2 노드로, 무인 디스플레이의 뷰를 변경시키기 위해 메시지를 보내고; 그리고 제1 노드로부터 제2 노드로 보내진 메시지에 따라 무인 디스플레이를 업데이트함을 더욱 포함한다.
제1 및 제2 노드 그리고 다수의 서버 노드 중 다른 노드가 서버 클러스터를 구성하고, 제1 및 제2 노드가 이 같은 클러스터 내 서버 노드 그룹의 적어도 일부를 차지하고, 제2 노드가 상기 그룹 내 모든 다른 서버 노드로 완전히 순서된 상태로 뷰 상태 데이터를 전송할 수 있고, 그리고 상기 뷰 상태 데이터를 전송함이 제2 노드가 상기 그룹 내 모든 다른 서버 노드로 데이터를 전송함을 포함한다.
제1 및 제2 노드 그리고 다수의 서버 노드 중 다른 노드가 서버 클러스터를 구성하고, 제1 및 제2 노드가 이 같은 클러스터 내 서버 노드 그룹의 적어도 일부를 차지하고, 제1 노드가 상기 그룹 내 모든 다른 서버 노드로 완전히 순서된 상태로 무인 디스플레이 상태를 변경기시키기 위한 메시지를 전송할 수 있고, 그리고 제1 노드가 상기 무인 디스플레이 상태를 변경기시키기 위한 메시지를 상기그룹 내 모든 다른 서버 노드로 데이터를 전송함을 포함한다.
상기 방법이 제2 노드로부터 제1 노드로 무인 디스플레이 뷰가 제어될 수 있는가에 대한 통지를 전송함을 더욱 포함한다.
통지를 전송함이 클러스터 내 서버 노드의 쌍들 사이 데이터 교환을 수행하는 가십 프로토콜을 사용하여 서버 클러스터 내 모든 서버 노드로 상기 통지를 퍼뜨림을 포함한다.
무인 디스플레이의 상태를 컨트롤링 디스플레이로 전송하기 전에, 상기 방법이 제2 노드를 사용하여 제1 노드를 식별하는 노드 식별자에 접근함을 더욱 포함하며, 제1 및 제2 노드가 서버 클러스터의 적어도 일부를 포함하고, 상기 노드 식별자가 서버 클러스터 내 모든 서버 노드에 의해 접근가능하며 모두를 식별할 수 있는 클러스터 멤버쉽 정보 적어도 일부를 포함한다.
상기 클러스터 멤버쉽 정보가 서버 클러스터 내 서버 노드 각각을 고유하게 식별하는 노드 식별자; 그리고 서버 노드가 속하는 서버 클러스터를 고유하게 식별하는 클러스터 식별자를 포함한다.
서버 클러스터 내 서버 노드 각각이 클러스터 멤버쉽 정보에 대한 그 자신의 버전을 지속적으로 저장한다.
또 다른 특징에 따라, 클라이언트 디스플레이; 무인 디스플레이; 그리고 다수의 서버 노드를 포함하는 시설 보안시스템이 제공되며, 한 서버 노드(제1 노드)가 클라이언트와 통하고 그리고 다른 서버 노드(제2 노드)는 무인 디스플레이와 통하며, 제2 노드가 무인 디스플레이에 디스플레이된 뷰를 나타내는 뷰 상태 데이터를 제1 노드로 전송하도록 구성되며 제1 노드는 클라이언트 디스플레이에서 무인 디스플레이에 디스플레이된 뷰의 적어도 일부를 디스플레이하도록 구성된다. 한 특징에서, 서버 노드의 어느 것도 중앙 집중형 게이트웨이 서버가 아니며; 선택적 특징에서, 서버 노드 중 하나 이상이 중앙 집중형 게이트웨이 서버이다.
또 다른 특징에 따라, 클라이언트 디스플레이를 갖는 클라이언트; 무인 디스플레이; 그리고 다수의 서버 노드를 포함하는 시설 보안시스템이 제공되며, 한 서버 노드(제1 노드)가 클라이언트와 통하고 그리고 다른 서버 노드(제2 노드)는 무인 디스플레이와 통하며, 제2 노드가 제2 디스플레이 그리고 클라이언트에 디스플레이된 뷰를 나타내는 뷰 상태 데이터를 제1 노드로 전송하도록 구성되며 제1 노드는 클라이언트 디스플레이에서 제2 디스플레이에 디스플레이된 뷰의 적어도 일부를 디스플레이하도록 구성된다. 한 특징에서, 서버 노드의 어느 것도 중앙 집중형 게이트웨이 서버가 아니며; 선택적 특징에서, 서버 노드 중 하나 이상이 중앙 집중형 게이트웨이 서버이다.
무인 디스플레이는 제2 노드에 직접 연결되거나, 가령, 무인 클라이언트 또는 워크스테이션을 통하여 제2 노드로 간접적으로 연결된다.
또 다른 특징에 따라, 처리기가 다수의 서버 노드를 포함하는 시설 보안시스템 내 무인 디스플레이와 상호작용하기 위한 방법을 수행하도록 지시 및 명령을 코드화하는 비-일시적 컴퓨터 판독가능 매체가 제공되며, 상기 방법이 무인 디스플레이와 통하는 서버 노드 중 한 노드("제2 노드")로부터 클라이언트 디스플레이와 통하는 또 다른 서버 노드("제1 노드)로 무인 디스플레이에서 디스플레이된 뷰를 나타내는 뷰 상태 데이터를 전송하고; 그리고 클라이언트 디스플레이에서 상기 무인 디스플레이에서 디스플레이된 뷰의 적어도 일부를 디스플레이함을 포함한다.
또 다른 특징에 따라, 다수의 서버 노드를 포함하는 시설 보안시스템을 사용하여 뷰("공유된 뷰")를 공유하기 위한 방법이 제공되며, 상기 방법이: 제1 클라이언트로부터 서버 노드 중 한 노드("제1 노드")로, 제1 클라이언트에 의해 디스플레이된 공유 뷰를 대표하는 뷰 상태 데이터를 전송하고; 제1 노드로부터 서버 노드 중 한 노드(제2 노드)를 통하여 제2 클라이언트로 상기 뷰 상태 데이터를 전송하며; 상기 공유 뷰를 보여주기 위해 뷰 상태 데이터를 사용하여 제2 클라이언트의 디스플레이를 업데이트하고; 제2 클라이언트에서 공유 뷰의 변화에 응답하여, 제2 클라이언트로부터 제2 노드로 업데이트 뷰 상태 데이터를 전송하며, 이때 상기 업데이트 뷰 상태 데이터가 제2 클라이언트에 의해 디스플레이된 공유 뷰를 대표하고; 제1 노드를 통하여 제2 노드로부터 제1 클라이언트로 업데이트 뷰를 전송하며; 그리고 제1 클라이언트의 디스플레이를 업데이트하여 이 같이 업데이트된 뷰 상태 데이터를 사용하여 공유 뷰를 도시하도록 함을 포함한다. 한 특징에서, 서버 노드 어느 것도 중앙 집중형 게이트 서버가 아니며, 선택적 특징에서, 하나 이상의 노드가 중앙 집중형 서버이다.
제1 및 제2 노드 그리고 다수의 서버 노드 중 다른 노드가 서버 클러스터를 구성하고, 제1 및 제2 노드가 이 같은 클러스터 내 서버 노드 그룹의 적어도 일부를 차지하고, 제1 노드가 상기 그룹 내 모든 다른 서버 노드로 완전히 순서된 상태로 뷰 상태 데이터를 전송할 수 있고, 그리고 상기 뷰 상태 데이터를 전송함이 제1 노드가 상기그룹 내 모든 다른 서버 노드로 데이터를 전송함을 포함한다.
제1 및 제2 노드 그리고 다수의 서버 노드 중 다른 노드가 서버 클러스터를 구성하고, 제1 및 제2 노드가 이 같은 클러스터 내 서버 노드 그룹의 적어도 일부를 차지하고, 제2 노드가 상기 그룹 내 모든 다른 서버 노드로 완전히 순서된 상태로 무인 디스플레이 상태를 변경시키기 위한 메시지를 전송할 수 있고, 그리고 제2 노드가 상기 무인 디스플레이 상태를 변경시키기 위한 메시지를 상기그룹 내 모든 다른 서버 노드로 데이터를 전송함을 포함한다.
제2 클라이언트의 디스플레이에서 공유 뷰를 보여주기 전에, 상기 방법이 제1 및 제2 노드를 통하여 제1 노드로부터 제2 노드로 제1 클라이언트에 의해 디스플레이되는 공유 뷰가 제2 클라이언트와 공유되기 위해 이용될 수 있는가에 대한 통지를 전송함을 포함한다.
제1 및 제2 노드 그리고 다수의 서버 노드 중 다른 노드가 서버 클러스터를 구성하고, 제1 및 제2 노드가 이 같은 클러스터 내 서버 노드 그룹의 적어도 일부를 차지하고, 제1 노드가 상기 그룹 내 모든 다른 서버 노드로 완전히 순서된 상태로 통지를 전송할 수 있고, 그리고 상기 통지를 전송함이 제1 노드가 상기그룹 내 모든 다른 서버 노드로 그와 같은 통지를 전송함을 포함한다.
제1 노드가 제2 노드를 통하여 상태 데이터를 제2 클라이언트로 전송하기 전에, 상기 방법이 제1 노드를 사용하여, 제2 노드를 식별하는 노드 식별자에 접근함을 더욱 포함하며, 제1 및 제2 노드가 서버 클러스터의 적어도 일부를 포함하고, 상기 노드 식별자가 서버 클러스터 내 모든 서버 노드에 의해 접근가능하며 모두를 식별할 수 있는 클러스터 멤버쉽 정보 적어도 일부를 포함한다.
상기 클러스터 멤버쉽 정보가 서버 클러스터 내 서버 노드 각각을 고유하게 식별하는 노드 식별자; 그리고 서버 노드가 속하는 서버 클러스터를 고유하게 식별하는 클러스터 식별자를 포함한다.
서버 클러스터 내 서버 노드 각각이 클러스터 멤버쉽 정보에 대한 그 자신의 버전을 지속적으로 저장한다.
또 다른 특징에 따라, 디스플레이를 갖는 제1 클라이언트; 디스플레이를 갖는 제2 클라이언트; 그리고 서버 노드(제1 노드)가 제1 디스플레이와 통하고 그리고 다른 서버 노드(제2 노드)는 제2 디스플레이와 통하는 다수의 서버 노드를 포함하며, 제1 및 제2 클라이언트 그리고 제1 및 제2 노드가: i) 제1 클라이언트로부터 제1 노드로, 제1 클라이언트의 디스플레이에서 디스플레이된 공유 뷰를 대표하는 뷰 상태 데이터를 전송하며; 제2 노드를 통하여 제1 노드로부터 제2 클라이언트로 뷰 상태 데이터를 전송하고; 뷰 상태 데이터를 사용하여 제2 클라이언트의 디스플레이를 갱신하여 공유 뷰를 보여주도록 하며; 제2 클라이언트에서 공유 뷰를 변경함에 응답하여, 제2 클라이언트로부터 제2 노드로 업데이트 뷰 상태 데이터를 전송하고, 이때 상기 업데이트 뷰 상태 데이터가 제2 클라이언트 디스플레이에서 디스플레이된 공유 뷰를 대표하며; 제2 노드로부터 제1 클라이언트로 제1 노드를 통하여 갱신된 뷰 상태 데이터를 전송하고; 그리고 제1 클라이언트의 디스플레이를 갱신하고 갱신된 뷰 상태 데이터를 사용하여 상기 공유 뷰를 보여주도록 하는 시설 보안시스템이 제공된다. 한 특징에서, 서버 노드 어느 것도 중앙 집중형 게이트웨이 서버가 아니며, 선택적인 특징에서, 서버 노드 중 한 노드 이상이 중앙 집중형 게이트웨이 서버이다.
처리기가 다수의 서버 노드를 포함하는 시설 보안시스템을 사용하여 뷰를 공유하기 위한("공유 뷰") 방법을 수행하도록 지시 및 명령을 코드화한 비-일시적 컴퓨터 판독가능 매체가 제공되며, 상기 방법이 제1 클라이언트로부터 서버 노드 중 한 노드("제1 노드")로 제1 클라이언트에 의해 디스플레이된 공유 뷰를 대표하는 뷰 상태 데이터를 전송하고; 제1 노드로부터 서버 노드 중 한 노드(제2 노드)를 통하여 제2 클라이언트로 상기 뷰 상태 데이터를 전송하며; 상기 공유 뷰를 보여주기 위해 뷰 상태 데이터를 사용하여 제2 클라이언트의 디스플레이를 업데이트하고; 제2 클라이언트에서 공유 뷰의 변화에 응답하여, 제2 클라이언트로부터 제2 노드로 업데이트 뷰 상태 데이터를 전송하며, 이때 상기 업데이트 뷰 상태 데이터가 제2 클라이언트에 의해 디스플레이된 공유 뷰를 대표하고; 제1 노드를 통하여 제2 노드로부터 제1 클라이언트로 업데이트 뷰를 전송하며; 그리고 제1 클라이언트의 디스플레이를 업데이트하여 이 같이 업데이트된 뷰 상태 데이터를 사용하여 공유 뷰를 보여주도록 함을 포함한다.
이 같은 발명의 해결 수단이 본원 발명의 모든 특징의 전체 범위를 꼭 설명하는 것은 아니다. 다른 특징, 그리고 장점이 특정 실시 예에 대한 다음 설명을 참조하면 명확질 것이다.
첨부 도면에서는, 하나 또는 둘 이상의 예시적 실시 예를 도시한다.
도 1은 한 실시 예에서 따라 시설 보안시스템의 블록도.
도 2는 도 1의 시스템에 의해 사용된 프로토콜 슈트 블록도.
도 3은 도 1 시스템이 각기 다른 사용자 사이 세팅을 어떻게 공유하는가를 도시하는 UML 순서도.
도 4는 도 1의 시스템이 각기 다른 시스템 사용자 사이의 상태를 어떻게 공유하는 가를 도시하는 UML 순서도.
도 5는 도 1의 시스템이 각기 다른 시스템 사용자 사이의 뷰(view)를 어떻게 공유하는가를 도시하는 UML 순서도.
도 6은 도 1의 시스템이 각기 다른 시스템 사용자 사이의 스트림(stream)을 어떻게 공유하는가를 도시하는 UML 순서도.
도 7은 도 1의 시스템 사용자에 의해 볼 수 있는 뷰를 도시한 도면.
도 9는 또 다른 실시 예에 따라, 시설 보안 시스템에서 데이터를 공유하기 위한 방법을 도시한 도면.
도 9는 또 다른 실시 예에 따라, 클러스터를 다시 자동으로 합류하기 위한 방법을 도시한 도면.
도 10은 도 1의 시스템이 시스템 사용자와 무인 뷰를 어떻게 공유하는가를 도시하는 UML 순서도.
도 11은 또 다른 실시 예에 따라, 다수의 서버 노드를 포함하는 시설 보안시스템 내 무인 디스플레이와 상호작용하기 위한 방법을 도시한 도면.
도 12는 또 다른 실시 예에 따라, 다수의 서버 노드를 포함하는 시설 보안시스템을 사용하는 뷰를 공유하기 위한 방법을 도시하는 도면.
"상부", "하부", "상측", "하측", "수직으로", 그리고 "측면으로"와 같은 방향성 용어들은 본원 명세서에서 상대적인 참조 목적으로만 사용되며, 사용중 어떤 물건이 어떻게 위치하는가를 한정하는 것은 아니며, 이들은 어셈블리에서 또는 환경에서 장착되는 것이다. 또한, 본원 명세서에서, "연결" 그리고 "연결된", "연결", 그리고 "연결되는"과 같은 "연결"의 변형 표현은 특별히 명시되지 않는 한 직접 및 간접 연결을 의미하는 것이다. 예를 들면, 제1 장치가 제2 장치에 연결된다면, 그와 같은 연결은 직접 연결을 통하는 것이거나 다른 장치 및 연결을 통해 간접 연결을 통하는 것이다. 이와 유사하게, 제1 장치는 제2 장치와 통하도록 연결되며, 통신은 직접 연결을 통하거나 다른 장치 및 연결을 통하여 간접 연결을 통하여 가능하다.
감시 시스템이 다수의 카메라를 포함하도록 규모가 커지면, 저장 용량 및 처리 전력 제한 때문에 단일 서버를 사용하여 감시 시스템을 동작시키는 것은 가능하지 않다. 따라서, 증가 된 수의 카메라를 수용하기 위해, 추가 서버가 시스템으로 추가된다. 이는 결국 다수의 문제를 일으킨다.
예를 들면, 감시 시스템의 사용자는 사용자가 카메라 또는 서버에 직접 연결되지 않았다 하여도 다른 사용자가 보는 것(그같은 사용자의 "뷰")을 보고 그리고 시스템 내 그 같은 카메라를 사용하여 캡쳐되고 시스템 내 서버에 저장된 비디오를 스트림할 것을 원한다. 이와 유사하게, 사용자는 사용자가 직접 연결되지 않는 서버에서 발생한다 하여도, 시스템 내 어는 곳에서 발생하든지 사용자 상태(예를 들면: 시스템의 또 다른 사용자가 현재 시스템 내에 로그 되었는가) 그리고 시스템 이벤트(예를 들면: 경보가 트리거 되었는가)에 접근할 수 있기를 원한다. 보다 많은 서버를 추가함에 의해 스케일된 종래의 감시 시스템에서, 이 같은 기능을 제공하기 위한 대표적인 방법은 시스템으로 중앙 집중형 게이트웨이를 추가하는 것이다. 중앙 집중형 게이트웨이 서버는 시스템 이벤트, 사용자 상태, 뷰, 그리고 시스템 내 한 서버로부터의 비디오를 자신을 통하여 또 다른 서버로 경로배정하며, 이에 의해 사용자가 이들 이벤트, 상태, 뷰, 그리고 비디오를 사용자가 직접 연결된 특정 서버에 관계없이 접근하거나 볼 수 있도록 허용한다. 그러나, 중앙 집중형 게이트웨이 서버를 사용하는 것은 감독 시스템으로 하여금 싱글 고장 포인트를 제공하는 데, 만약 중앙 집중형 게이트웨이 서버가 고장나면, 이벤트, 상태, 뷰, 그리고 비디오가 더 이상 공유될 수 없기 때문이다. 중앙 집중형 게이트웨이 서버를 사용하는 것은 또한 감독 시스템의 비용을 상승시키는 데, 서버가 시스템으로 추가되고 중앙 집중형 게이트웨이 서버의 기능을 제공하는 것으로 할당되기 때문이다.
사용자는 또한 공동 세팅(예를 들면: 사용자 이름, 패스워드, 접근 권한 등)이 시스템 내 다중 서버에서 동기화될 것을 원할 수 있다. 더 많은 서버를 추가함에 의해 스케일 아웃된 종래 감시 시스템에서, 이 같은 기능은 한 서버에서 다른 한 서버로 세팅을 수작업으로 익스포트함에 의해, 또는 다른 서버들이 필요에 따라 통하게 되어 이들 세팅을 수집하도록 이들 세팅 모두를 저장하는 중앙 집중형 관리 서버를 사용함에 의해 제공된다. 세팅을 수작업으로 익스포팅하는 것은 상대적으로 동기화 지연이 크고, 사용 및 설치가 곤란하기 때문에, 그리고 큰 동기화 지연이 중복 체계(system redundancy)에 해를 끼치기 때문에 문제가 된다. 중앙 집중형 관리 서버를 사용하는 것은 상기 설명하는 바와 같이 중앙 집중형 게이트웨이 서버를 사용하는 것과 같은 문제로 인하여 문제가 된다.
본원 명세서에서 설명된 실시 예는 뷰(views), 비디오, 시스템 이벤트, 사용자 상태, 그리고 상기 설명된 게이트웨이 또는 관리 서버와 같은 중앙 집중형 서버에 의존하지 않고 시스템 내 둘 또는 그 이상의 서버 노드 들 사이의 사용자 세팅과 같이 데이터를 자동으로 공유할 수 있는, 감시 시스템과 같은 분산된 시설 보안시스템에 대한 것이다. 이들 실시 예는 피어-투-피어 감시 시스템에 대한 것이며, 사용자가 클라이언트를 통하여 네트워크 비디오 레코더, 카메라, 그리고 서버와 같은 세버 노드에 연결된다. 서버 노드는 클러스터로 함께 그룹으로 되며, 클러스터 내 각 서버 노드는 클러스터 내 다른 서버 노드와 데이터를 공유할 수 있다. 이 같은 데이터를 공유하기 위해, 서버 노드 각각은 데이터가 뷰(views), 비디오, 시스템 이벤트, 사용자 상태, 또는 사용자 세팅을 나타내는가에 따라 다른 방법으로 서버 노드들 사이에서 데이터를 공유하는 프로토콜 슈트에 기초하여 데이터를 교환하는 서비스를 실행한다. 도 1 내지 10은 이들 실시 예를 도시한다.
선택적인 실시 예에서, 각기 다른 서버 노드 사이 뷰를 공유하도록 사용된 기술 일부는 연합 네트워크(즉, 중앙 집중형 서버를 포함하는 네트워크) 그리고 도 1 내지 9에서 도시된 피어-투-피어 네트워크로 적용가능하다. 도 10 그리고 11은 이들 실시 예를 도시한다.
도 1과 관련하여, 한 실시 예에 따라, 감시 시스템(100)의 형태로 분산된 시설 보안시스템이 도시된다. 시스템(100)은 3개의 클라이언트(102a-c)(제1 클라이언트(102a)에서 제3 클라이언트(102c) 까지 그리고 집합적으로 "클라이언트(102)"), 6 개 서버(104a-f)(제1 서버(104a) 내지 제6 서버(104f) 그리고 집합적으로 "서버(104)"), 3개의 서버 노드 카메라(106a-c)(제1 노드 카메라(106a)에서 제3 노드 카메라(106c) 까지 그리고 집합적으로 "노드 카메라(106)"), 그리고 5개의 비-노드 카메라(114)를 포함한다.
노드 카메라(106) 그리고 서버(104) 각각은 처리기(110) 그리고 메모리(112)를 포함하며 이들은 서로 통할 수 있도록 연결되고, 메모리(112)는 지시와 명령이 인코딩되어서 처리기가 설명된 방법의 실시를 수행할 수 있도록 한다. 서버(104) 그리고 노드 카메라(106)는 3개의 클러스터(108a-c)(집합적으로 클러스터(108))로 그룹이 만들어진다: 제1 내지 제3 서버(104a-c)는 서로 통할 수 있도록 연결되어 제1 클러스터(108a)를 형성하도록 하고; 제4 내지 제6 서버(104d-f)는 서로 통할 수 있도록 연결되어 제2 클러스터(108b)를 형성하도록 하며; 그리고 제3 노드 카메라(106)가 서로 통할 수 있게 연결되어 제3 클러스터(108c)를 형성하도록 한다. 제1 내지 제3 서버(104a-c)는 제1 클러스터(108a)의 "멤버"로 불리며; 제4 내지 제6 서버(104d-f)는 제2 클러스터(108b)의 "멤버"로 불리고; 그리고 제1 내지 제3 노드 카메라(106a-106c)는 제3 클러스터(108c)의 "멤버"로 불린다.
서버(104) 그리고 노드 카메라(106) 각각은 "서버 노드"이며, 각각이 클러스터(108)의 다른 멤버 존재를 알고 있으며 데이터를 자신의 클러스터(108)의 다른 멤버로 전송할 수 있고; 이와 반대로, 비-노드 카메라(114)는 "서버 노드"가 아닌데, 이들은 이들이 직접 연결된 서버(104a, b, c, d, f)만을 알고 있다. 도시된 실시 예에서, 서버 노드는 클러스터 멤버쉽 정보에 접근함에 의해 클러스터의 모든 다른 멤버를 알며, 상기 정보는 클러스터(108) 내 모든 서버 노드를 목록으로 한다. 상기 클러스터 멤버쉽 정보는 서버 노드 각각에서 지속적으로 저장되며, 이는 서버 노드 각각이 서버 시스템(100)의 동작 중에 리부팅되어야 한다면 자신의 클러스터(108)에 자동으로 다시 합류할 수 있도록 한다. 본원 명세서에서 "노드"를 지칭하는 것은 명세서에서 달리 명시하지 않는 한 "서버 노드"를 지칭하는 것이다.
도시된 실시 예에서, 클러스터(108) 어느 것도 인터클러스터 통신에 참여하지 않으며, 선택적 실시 예에서(도시되지 않음) 다양한 클러스터(104)의 멤버들은 서로 데이터를 공유한다. 도시된 실시 예에서 서버(104)들은 상업적으로 구매되는 서버이며 카메라(106, 114)는 카나다 밴쿠버에 소재하는 AvigilonTM Corporation에서 생산된다. 그러나, 선택적 실시 예에서, 다른 적절한 종류의 서버(108) 그리고 카메라(106, 114)가 사용될 수 있기도 하다.
제1 클라이언트(102a)는 제1 및 제4 서버(104a,d)에 통하도록 연결됨에 의해 제1 및 제2 클러스터(108a,b)에 연결되며, 상기 서버들은 상기 클러스터(108a,b)의 멤버들이고; 제2 클라이언트(102b)는 제2 및 제4 서버(104b,d) 및 제1 노드 카메라(106a)에 통하도록 연결됨에 의해 모든 3개의 클러스터(108)에 연결되고, 이들은 모두 상기 클러스터(108)의 멤버들이며; 그리고 제3 클라이언트(102c)는 제5 서버(104e) 그리고 제2 노드 카메라(106b)에 통하도록 연결됨에 의해 제2 및 제3 클러스터(108b,c)에 연결되며, 이들은 모두 클러스터(108b,c)의 멤버들이다. 하기에서 더욱 상세히 설명되는 바와 같이, 클러스터(108a-c) 중 한 클러스터에서, 노드 각각은 프로토콜 슈트(200)(도 2에 도시된)에 따라 노드가 서로 통신하도록 허용하는 서비스를 실행하며, 상기 프로토콜 슈트는 모든 노드가 데이터를 공유하도록 하며, 이때 데이터는 뷰, 비디오, 시스템 이벤트, 사용자 상태, 사용자 세팅, 또는 다른 종류의 데이터이며, 분산 컴퓨팅을 사용하여, 즉 중앙 집중형 서버를 사용하지 않고 모든 다른 노드로 데이터를 공유하도록 한다. 노드 각각은 동일한 클러스터(108)의 부분을 형성하는 모든 노드를 식별하는 클러스터 멤버쉽 정보로의 접근하며; 클러스터 멤버쉽 정보를 접근함에 의해, 데이터가 모든 클러스터(108)의 노드 사이에서 공유되며 동기화될 수 있다.
도 2는 시스템(100)의 노드에 의해 사용된 프로토콜 슈트(200)의 블록도이다. 프로토콜 슈트(200)는 3개 층으로 나눠지며 테이블 1에서 요약되는 다음 프로토콜을 포함한다:
테이블 1: 프로토콜 슈트 200의 요약

프로토콜 명칭

프로토콜 층

3개의 프로토콜과 애플리케이션으로부터 데이터를 수신

3개의 프로토콜로 데이터를 전송
UDP 202 트랜스포트(Transport) 디스커버리 프로토콜(Discovery Protocol) 206, 노드 프로토콜(Node Protocol) 210, 싱크로니Synchr 프로토콜(ony Protocol) 214 N/A
TCP/HTTP 204 트랜스포트 노드 프로토콜 210, 가십 프로토콜(Gossip Protocol) 208, 멤버쉽 프로토콜(Membership Protocol) 212, 컨시스턴시 프로토콜(Consistency Protocol) 216, 상태 프로토콜(Status Protocol) 218 N/A
디스커버리 프로토콜 206 클러스터 서포트(Cluster Support) 노드 프로토몰 210 UDP 202
가십 프로토콜 208 클러스터 서포트 멤버쉽 프로토콜 212, 컨시스턴시 프로토콜 216, 상태 프로토콜 218 TCP/HTTP 204, 노드 프로토몰 210, 멤버쉽 프로토콜 212
노드 프로토콜 210 클러스터 서포트 클러스터 스크림 애플케이션(Cluster Streams Application) 220, 싱크로니(Synchrony) 214, 컨시스턴시 프로토콜 216, 멤버쉽 프로토콜 212, 상태 프로토콜 218, 가십 프로토콜 208 UDP 202, TCP/HTTP 204, 디스커버리 프로토콜 206
멤버쉽 프로토콜 212 클러스터 서포트 싱크로니 프로토콜(Synchrony Protocol) 214, 가십 프로토콜 208, 상태 프로토콜 218,컨시스턴시 프로토콜 216 가십 프로토콜 208, 노드 프로토몰 210, TCP/HTTP 204
싱크로니 프로토콜 214






Data Sync(데이터 싱크) 공유 뷰 및 협동 애플리케이션(Shared Views and Collaboration Application) 222, 공유 이벤트 및 알람 애플리케이션(Sared Events and Alarms Application) 224 UDP 202, 노드 프로토몰 210, 멤버쉽 프로토콜 212
컨시스턴시 프로토콜 216 Data Sync(데이터 싱크) 공유 세팅 애플리케이션(Shared Settings Application) 226, 공유 사용자 객체 애플리케이션(Sared User Objects Application) 228 노드 프로토몰 210, 멤버쉽 프로토콜 212,
가십 프로토콜
208, TCP/HTTP
204
상태 프로토콜 218 Data Sync(데이터 싱크) 시스템 정보(System Information) (장치, 서버 등) 애플리케이션 230 가십 프로토콜 208, 멤버쉽 프로토콜 212, 노드 프로토몰 210, TCP/HTTP 204
다음에 프로토콜 슈트(200) 내 프로토콜 각각의 기능 및 동작에 대한 설명이 제공된다.
트랜스포트 층( Transport Layer)
트랜스포트 층은 오픈 시스템 인터커넥션(OSI) 모델의 층(4)에 해당하며, 클러스터 서포트, 데이터 동기화, 그리고 애플리케이션 층으로의 노드들 사이 신뢰할 수 있는 데이터 전달 서비스를 제공하는 데 책임이 있다. 시스템(100) 내 이같은 트랜스포트 층은 UDP(202) 및 TCPIHTTP(204) 프로토콜을 포함한다.
클러스터 서포트 층( Cluster Support Layer)
클러스터 서포트 층은 노드를 발견하고, 노드 존재를 입증하며, 노드 활성을 검사하고, 노드가 클러스터(108) 중 하나의 멤버인가를 결정하며, 그리고 노드 들 사이 데이터 경로를 어떻게 배정할 것인가를 결정하도록 사용된 프로토콜을 포함한다.
디스커버리 프로토콜 206
디스커버리 프로토콜(206)은 Advancement of Structured Information Standards (OASIS)의 조직에 의해 공표된 WS-디스커버리 프로토콜의 버전 1.1에 기초하며, 그 전부가 본 명세서에서 원용된다. 도시된 실시 예에서, 공표된 스탠다드에서 사용된 XML 포맷팅은 GoogleTM Protobuf 인코딩으로 대체된다.
디스커버리 프로토콜(206)은 시스템(100) 내 모든 노드가 프로브 메시지를 다른 노드로 멀티케스팅하고 이들이 응답하기를 기다림에 의해 시스템(100) 내 다른 노드를 식별하도록 한다. 노드는 다른 노드들이 프로브 메시지를 처음으로 멀티캐스트할 것을 요구함이 없이 다른 노드들에게 그 존재를 알리기 위해 시스템(100)에 합류하는 때 헬로우(Hello) 메시지를 선택적으로 방송한다.
가십 프로토콜 208
가십 프로토콜(208)은 클러스터(108) 내 노드 쌍들 사이에서 데이터 교환을 랜덤하게 수행함에 의해 노드 중 한 노드로부터 클러스터(108)의 모든 노드로 데이터를 퍼뜨리는 전염병 프로토콜이다. 가십 프로토콜(208)은 각 노드에 대한 심장박동 카운트(heartbeat count) 형태로 "심장박동(heartbeat) 상태" 데이터를 교환함에 의해 활성을 교환하며, 이는 노드가 언제 클러스터(108) 내 노드 중 한 노드가 예기치 않게 떠났는 가(예를 들면:서버 충돌로 인해)를 결정할 수 있도록 한다. 가십 프로토콜(208)은 컨시스턴시 프로토콜(216)에 의해 사용된 최상 해시 그리고 상태 프로토콜(218)에 의해 사용된 상태 엔티티 식별자 그리고 이들의 버전 번호와 같은 "애플리케이션 상태"와 통신하여, 하기에서 더욱 상세히 설명되는 바와 같이, 언제 노드 들 사이 데이터를 동기화할 것인지를 결정하도록 한다. 가십 프로토콜(208)을 사용하는 데이터 속도는 결국 주기적인 노드-노드(노드 간의) 교환을 통하여 클러스터(108) 내 모든 노드로 퍼지도록 한다.
가십 프로토콜(208)을 사용하는 클러스터(108)의 두 노드 사이 데이터 교환은 동일한 클러스터(108) 내 제1 노드("노드 A")로부터 제2 노드("노드 B")로 두 리모트 절차 콜(remote precedure calls)(RPCs)을 수행함을 포함하며, 다음과 같다:
1. 노드 A가 GreetingReq 메시지를 노드 B로 전송하며, 이는 노드 A가 알고 있는 클러스터(108) 내 모든 노드에 대한 다이제스트 리스트를 포함한다. 노드 각각에 대하여, 다이제스트는 노드에 대한 심장박동 상태 또는 애플리케이션 상태가 변경되는 때마다 증가 되는 버전 정보 그리고 고유한 노드 식별자를 포함한다. 상기 버전 정보는 예를 들면 1 차원 버전 번호 도는 멀티-차원 버전 벡터일 수 있다. 버전 벡터를 사용하여 상기 다이제스트가 노드가 지나온 상태 변경의 히스토리를 요약할 수 있도록 한다.
2. 노드 B는 노드 A로 GreetingRsp 메시지를 전송하며 다음을 포함한다:
(a) 노드에 대한 다이제스트 리스트로서, 어느 노드 B가 노드 A로부터 더욱 많은 정보를 수신할 것을 원하는지, 어느 노드 B가 GreetingRsp 메시지 내 (그것으로 보내진) 버전 정보로부터 결정하는지에 대한 노드에 대한 다이제스트 리스트;
(b) 노드에 대한 다이제스트 리스트로서, 어느 노드 A가 클러스터(108)의 일부로부터 알지 못하는 것에 대한 다이제스트 리스트;
(c) 종전 정보를 갖는 노드에서 최신 정보를 갖도록 하는 심장박동 및 애플리케이션 중 하나 또는 이들 모두의 리스트;
(d) 노드 A가 클러스터(108)의 부분을 형성한다고 믿지만 노드 B는 클러스터(108)로부터 제거되었다고 알고 있는 노드의 리스트;
3. 다음에 노드 A는 ClosureReq 메시지를 노드 B로 전송하며, 노드 A가 전송하는 것은 다음과 같다:
(a) 어느 노드 A가 노드 B로부터 더욱더 많은 정보를 수신하기를 희망하는 지에 대한 노드에 대한 다이제스트 리스트(예를 들면, 노드 B가 노드 A로 GreetingRsp 메시지를 보낼 때까지 어느 노드 A가 알지 못하는가에 대하여 노드 A는 노드에 대한 정보를 요청할 수 있다);
(b) 종전 정보를 갖는 노드에서 노드 B에게 최신 정보를 가져다주는 상태 리스트;
(c) 노드 B가 클러스터(108)의 부분을 형성한다고 믿지만 노드 A는 클러스터(108)로부터 제거되었다고 알고 있는 노드의 리스트;
4. 노드 B는 ClosureRsp 메시지를 노드 A로 전송하며, 이때 노드 B는 다음을 전송한다:
(a) ClosureReq 내 노드 A 요청에 응답하여, 종전 정보를 갖는 노드에서 노드 A에게 최신 정보를 가져다주는 상태 리스트;
(b) GreetingRsp 이래로 클러스터(108)로부터 제거된 노드 리스트.
노드 A 및 B가 RPCs를 교환한 뒤에, 이들은 동일한 액티브 노드 리스트를 가질 것이며, 이는 클러스터(108) 내 모든 노드에 대한 심장박동 상태 및 애플리케이션 상태의 가장 최근 버전을 포함한다. 이들 상태 모두는 RPC 이전에 대하여 알며 클러스터(108)로부터 제거되지 않는다.
노드 프로토콜 210
노드 프로토콜(210)은 각 노드에 대하여 시스템(100)의 네트워크 토폴러지에 대한 한 뷰(view)를 발생시키는데 책임이 있으며, 이는 노드 각각으로 네트워크 맵을 제공하고 노드가 시스템(100) 내 다른 노드와 통신하도록 허용한다. 일정 실시 예에서, 네트워크 맵은 경로 배정 테이블이다. 네트워크 맵은 통신 엔드포인트를 나타내며, 이는 주소(IP/FQDN), 포트 번호, 그리고 노드가 노드들을 연결하는 IP 네트워크를 통하여 도달될 수 있는 프로토콜이다.
노드 프로토콜(210)은 3 가지 방법으로 이를 실행한다:
1. "포크 교환(Poke exchange)"을 통하여, 하기에서 상세히 설명하는 바와 같이;
2. 디스커버리 프로토콜(206)을 통하여, 이는 노드 프로토콜(210)로 언제 노드가 시스템(100)에 합류하고 시스템을 떠나는가를 통지한다. 노드가 시스템(100)을 합류하는 때 그 같은 노드와 "포크 교환"이 수행된다; 그리고
3. 수작업으로, 사용자 입력에 응답한다.
포크 교환은 노드들에 대한 네트워크를 발생시킬 목적으로 다음의 RPC를 주기적으로 수행함을 포함한다:
1. 포크 요청, 이때 노드 A가 노드 B로 노드 A 자신의 뷰 그리고 노드 A에 의해 보여진 바의, 노드 A에게 알려진 다른 노드 리스트를 전송하며, 다음에 노드 B가 이 같은 정보에 비추어 자신의 네트워크 맵을 갱신한다; 그리고
2. 포크 응답, 이때 노드 B가 노드 A로 노드 B 자신의 뷰 그리고 노드 B에 의해 보여진 바의, 노드 B에게 알려진 다른 노드 리스트를 전송하며, 다음에 노드 A가 이 같은 정보에 비추어 자신의 네트워크 맵을 갱신한다.
RPC는 TCP/HTTP 프로토콜(204)를 통하여 수행된다.
대역폭 사용을 줄이기 위해, 노드 정보는 마지막으로 교환된 이래로 노드 정보가 변경된 때에만 노드 A와 B 사이에서 교환된다.
포크 교한(Poke exchange)은 디스커버리 프로토콜(206)이 노드 프로토콜(210)로 노드가 시스템(100)을 합류했음을 통지한 후에 수행되는 데, 이는 디스커버리 프로토콜(206)이 노드의 통신 엔드포인트를 광고하기 때문이며, 그러나 노드가 이들 통신 엔드포인트를 사용하여 도달 가능한 것인지를 보장하지는 않는다. 예를 들면, 상기 엔드포인트는 방화벽 때문에 사용할 수 없을 수 있다. 디스커버리 프로토콜(206)을 사용하여 식별된 노드에서 포크 교환을 수행함으로써 상기 통신 엔드포인트가 사실상 사용가능한 것인지를 확인한다.
노드 프로토콜(210)은 또한 광고된 UDP 통신 엔드포인트가 도달가능한 것인지를 확인할 수 있으며; 그러나, 도시된 실시 예에서 노드 프로토콜(210)은 상기 UDP 프로토콜(202)을 통하여 포크 교환을 수행하지 않는다.
클러스터(108) 내 정해진 노드에 대하여, 네트워크 맵은 노드 식별자를 동일한 클러스터(108) 내 노드 각각에 대한 통신 엔드포인트와 관련시킨다. 따라서, 노드 프로토콜(210)과 통신하는 프로토콜 스택(200) 내 다른 프로토콜은 바로 그 같은 노드의 노드 식별자를 사용함에 의해 클러스터(108) 내 다른 노드로 메시지를 전달할 수 있다.
멤버쉽 프포토콜 212
멤버쉽 프로토콜(212)은 클러스터(108)의 각 노드가 클러스터(108)의 모든 노드에 대하여 클러스트 멤버쉽 정보를 유지하도록 하는데 책임이 있으며, 노드가 RPC를 통하여 클러스터에 합류하고 클러스터를 떠날 수 있도록 한다. 클러스터 멤버쉽 정보는 상태 프로토콜(218)을 사용하여 클러스터(108)의 노드들 사이에서 공유된다. 클러스터(108) 내 노드 각각은 클러스터 멤버쉽 정보에 대한 자신의 버전을 유지하며 상태 프로토콜(218)로부터 클러스터(108) 내 다른 노드에 의해 보유되는 클러스터 멤버쉽 정보를 배운다. 하기에서 더욱 상세히 설명되는 바와 같이, 두 상이한 노드에 의해 보유되는 클러스트 멤버쉽 정보의 버전은 한 노드에 저장된 그리고 최근에 갱신된 클러스터 멤버쉽 정보의 버전이 클러스터(108)의 다른 멤버와 아직 동기화되지 않았기 때문에 매치하지 않을 수 있다.
각 노드에 대하여, 클러스터 멤버쉽 정보는 다음을 포함한다:
1. 클러스터(108)의 모든 노드의 멤버쉽 리스트로서, 노드 각각이 다음에 의해 대표된다:
(a) 시스템(100) 내 모든 노드 중 고유한 노드 식별자;
(b) 다음 중 어느 하나인 노드 상태:
(i) 디스커버: 노드는 클러스터(10)의 멤버이지만 부팅된 이래로 클러스터(108)의 다른 멤버와 동기화되지 않았다;
(ii) 합류 중: 노드가 클러스터(108)에 합류하는 과정에 있다;
(iii) 동기화 중: 노드가 싱크로니, 컨시스턴시, 그리고 상태 프로토콜(214, 216, 218)을 사용하여 이제 막 합류한 클러스터(108)와 함께 데이터를 동기화하는 과정에 있다;
(iv) 유효: 노드는 클러스터 멤버쉽 정보를 동기화함을 완성하였으며 클러스터(108)의 유효 노드이다; 그리고
(v) 타임아웃: 노드는 응답하지 않으며 더 이상 클러스터(108)의 활성 멤버가 아니다(노드는 사용자에 의해 제거될 때까지 클러스터(108)의 멤버로 남아 있는다);
(c) 세션 토큰(session token);
(d) 노드가 클러스터(108)에 합류한 때 클러스터 멤버쉽 정보의 버전 번호; 그리고
(e) 마지막으로 변경된 때 클러스터 멤버쉽 정보의 버전 번호.
2. 클러스터(108)로부터 제거된 모든 노드를 목록하는 그레이브스톤 리스트로서, 제거된 노드 각각이 다음과 같이 대표된다:
(a) 노드의 노드 식별자; 그리고
(b) 노드가 제거되었을 때 노드의 클러스터 멤버쉽 정보의 버전.
도시된 실시 예에서, 노드 항상 적어도 자신을 포함하는 클러스터(108)의 한 멤버이며; 한 노드의 클러스터(108)가 "싱클톤(singletone)" 클러스터로 불린다. 또한, 도시된 실시 예에서, 멤버쉽 정보는 상기 설명한 바와 같이 멤버쉽 리스트 및 그레이브스톤 리스트를 포함하며, (도시되지 않은) 선택적 실시 예에서 멤버쉽 정보는 달리 구성될 수 있다; 예를 들면, 그와 같은 선택적 실시 예에서, 멤버쉽 정보는 그레이브스톤이 부족하며, 또 다른 그 같은 실시 예에서 노드의 상태는 상기 설명한 것과 달리 설명될 수 있다.
노드 A가 새로운 서버 노드로서 역할하고 노드 B를 포함하는 클러스터(108)에 합류하기를 원할 때, 노드 B와 통신하고 다음이 발생한다:
1. 노드 A는 클러스터 비밀을 노드 B로 전송하며, 클러스터 비밀은, 도시된 실시 예에서, 다른 노드가 자신의 클러스터(108)에 합류하도록 하기 전에 노드 B가 필요로 하는 키(key)이다. 클라이언트(102) 중 하나는 클러스터 비밀을 노드 A로 제공한다. 노드 B가 클러스터(108)로 노드 A가 액세스하는 것을 제어하기 때문에, 노드 B는 멤버쉽 컨트롤 노드로서 역할한다.
2. 노드 A와 노드 B는 자신들의 멤버쉽 정보를 교환한다. 노드 A 및 B 상의 멤버쉽 정보의 버전은 노드 A의 노드 식별자 및 노드 A가 합류 중인 클러스터(108)의 모든 노드의 노드 식별자를 포함하도록 갱신된다.
3. 노드 A의 상태는 노드 A가 클러스터에 합류할 때 "합류 중(joining)"로 변경된다.
4. 일단 합류되면, 노드 A의 상태는 데이터가 노드 A와 이제 막 합류한 클러스터(108) 사이에서 교환되기 때문에 "동기화 중"으로 변경된다. 노드 B는 또한 상태 프로토콜(Status protocol)(218)을 사용하여 클러스터(108)의 모든 다른 노드에 저장된 멤버쉽 정보의 버전을 갱신하기도 한다. 노드 A 그리고 상기 노드 A가 합류하는 클러스터(108)의 모든 멤버에 저장된 멤버쉽 정보의 버전을 갱신하는 프로세스가 이들 노드 모두에 저장된 멤버쉽 정보의 버전을 동기화한다고 지칭된다.
5. 동기화가 완성된 뒤에, 노드 A의 상태는 유효로 변경된다.
데이터 동기화 층
데이터 동기화 층은 데이터가 상이한 오더링 개런티(different ordering guarantees) 그리고 성능 트래이드오프로 클러스터 내 노드들 사이에서 전송될 수 있도록 하는 프로토콜을 포함한다. 데이터 동기화 층 내 프로토콜은 트랜스포트 그리고 클러스터 서포트 층 내 프로토콜을 직접 사용한다.
싱크로니 프로토콜 214
싱크로니 프로토콜(214)은 시스템(100)에서 노드 A로부터 노드 B로 메시지 형태로 데이터를 전송하도록 사용되어, 노드 A가 메시지를 전송하는 순서와 같은, 노드 A가 제어할 수 있는 순서로 메시지가 도달하도록 한다. 싱크로니 프로토콜(214)을 사용하여 데이터를 전송하는 서비스는 할당된 높은 우선순위 I/O 서비스 스레드(thread)로 실행된다.
도시된 실시 예에서, 싱크로니 프로토콜(214)은 Agarwal DA, Moser LE, Melliar-Smith PM, Budhia RK, "The Totem Multiple-Ring Ordering and Topology Maintenance Protocol", ACM Transactions on Computer Systems, 1998, pp. 93 132에서 설명된 바와 같은, Totem 프로토콜로서 알려진 가상의 싱크로니 실행에 기초하며, 이들을 본원 명세서에서 원용한다. 싱크로니 프로토콜(214)에서, 노드는 본원 명세서에서 하기 설명하는 바와 같이 "싱크로니 링"으로서 그룹으로 함께 모아 지며, 모든 싱크로니 링에서 한 노드는 완전히 순서된(totally ordered) 메시지를 동일한 링에서의 다른 노드로 전송할 수 있다. 상기 싱크로니 프로토콜(214)은 Totem 프로토콜을 다음과 같이 수정한다:
1. 싱크로니 프로토콜(214)은 서비스 식별자 및 링 식별자를 사용하여 싱크로니 링을 식별하도록 한다. 이 같은 서비스 식별자는 주어진 싱크로니 링의 모든 순간을 식별하며, 반면에 링 식별자는 주어진 , 싱크로니 링의 특정 순간을 식별한다. 예를 들면, 노드가 싱크로니 링을 합류하거나 떠나는 때마다 그 같은 링의 링 식별자는 변경될 것이지만, 그러나 서비스 식별자는 변경되지 않을 것이다. 서비스 식별자는 완전히 순서된 메시지를 동일한 서비스 식별자를 공유하는 노드 그룹(즉, 동일한 싱크로니 링에 속하는 노드의 그룹)으로 멀티 캐스트 하도록 한다.
2. Totem 프로토콜에서, 노드가 메시지를 전송하지 않는 경우, 노드에 의해 보여진 싱크로니 링은 노드가 메시지 보내기를 시작하는 때 수렴하는 최종 링 구성을 반영하지 않는다. 이 같은 싱크로니 프로토콜(214)은 노드가 프로브 메시지를 서로에게 전송하게 하며 싱크로니 링이 비-프로브 메시지를 전송하기 전에 수렴하게 한다.
3. Totem 프로토콜만이 주문된 메시지를 싱크로니 링의 일부를 형성하는 모든 노드로 보내지도록 허용한다. 이와 반대로, 싱크로니 프로토콜(214)은 시스템(100) 내 모든 도달 가능한 노드로 방송하기 위해 인터페이스를 제공함에 의해, 싱크로니 프로토콜(214)로부터 네트워크 층을 요약하는 디스패치 모듈을 사용하며; 목적지 노드 식별자의 리스트를 사용하여 시스템(100) 내 다수 노드 각각으로 유니 캐스트하고; 그리고 노드 식별자를 사용하여 시스템(100) 내 싱글 노드로 유니캐스트(unicast) 된다. 디스패치 모듈은 또한 서비스 식별자에 의해 메시지 필터링 및 라우팅을 사용하여 동일한 IP 포트에서 서비스 멀티플렉싱을 지원한다. 한 노드로부터 나가는 메시지는 멀티캐스트가 아니라면 동일한 서비스 식별자를 갖는 노드 서브셋으로 전송된다.
4. 싱크로니 프로토콜(214)은 단편화 메시지 그리고 사용자 페이로드 청킹 및 합치기(chunking and coalescing)를 사용하여 약 1,500 바이트의 최대 전송 유닛 사이즈로부터 발생하는 문제를 해결하도록 한다.
5. 싱크로니 프로토콜(214)은 노드가 합류 메시지를 사용하는 방법을 수정하며, 이때 합류 메시지는 싱크로니 링에 합류하기 위해 Totem 프로토콜에서 노드가 사용하는 메시지이다:
(a) 합류 메시지는 싱크로니 링내 동작 노드 세트에서 가장 낮은 노드 식별자를 갖기만 한다면 노드에 의해 전송된다.
(b) 동작 세트 내 가장 낮은 노드 식별자를 갖지않는 노드는 합류 메시지를 동작 세트 내 가장 낮은 노드 식별자를 갖는 노드로 유니캐스트한다.
(c) 합류 메시지는 서비스 식별자를 포함하며, 그리고 상응하는 싱크로니 링의 일부가 아닌 노드는 응답하지 않는다.
Totem 프로토콜과 관련하여, 이들 수정은 싱크로니 링을 합류하기 위해 노드에 의해 사용된 집합(aggregate) 대역폭을 줄이도록 돕는다.
6. 상기 싱크로니 프로토콜(214)은 네트워크 잘못된 구성으로 인해 싱크로니 링에 합류할 수 없는 노드를 검출하며 블랙리스트에 올려놓는다. 예를 들면, 다른 노드로 메시지를 전송할 수 있는, 그러나 다른 노드로부터 메시지를 수신할 수는 없는 노드는 본 발명 실시 예에서 모든 다른 메시지가 권유되기 때문에 다른 노드들로 출현하여 프로브 메시지를 전송하도록 할 뿐이며, 따라서 블랙리스트 할 것이다.
7. 싱크로니 프로토콜(214)은 페이로드 암호화 그리고 메시지의 진위 검증을 수행한다.
8. 싱크로니 프로토콜(214)은 노드 각각이 Totem 프로토콜에서 사용된 토큰을 보유할 수 있는 시간을 제한한다; 도시된 실시 예에서, 노드 각각은 15 ms 동안 토큰을 보유할 수 있다.
9. 싱크로니 프로토콜(214)은 TCP 친화 혼잡 회피 알고리즘이다.
하기에서 더욱 상세히 설명되는 바와 같이, 시스템(100)은 공유 뷰 및 협동 애플리케이션(222)을 위한 싱크로니 프로토콜 그리고 공유 이벤트 그리고 알람 애플리케이션(224)을 사용하며; 이들 애플리케이션(222) 내 클러스터(108) 멤버들 사이 공유된 데이터는 비-지속적이며 신속하게 그리고 알려진 순서로 유리하게 공유된다.
컨시스턴시 프로토콜 216
컨시스턴시 프로토콜(216)은 클러스터(108)의 모든 노드에서 데이터를 자동으로 그리고 주기적으로 공유하도록 사용되어, 컨시스턴시 프로토콜(216)을 사용하여 공유된 데이터는 결국 클러스터(108) 내 모든 노드에서 동기화되도록 한다. 컨시스턴시 프로토콜(216)을 사용하여 공유된 데이터 타입이 공유 세팅 애플리케이션(226) 그리고 공유 사용자 객체 애플리케이션(228)을 설명하는 섹션에서 더욱 상세히 설명된다. 컨시스턴시 프로토콜(216)에 의해 공유된 데이터는 노드 각각에서 데이터베이스 내에 저장되며, 데이터베이스 내 엔트리 각각은 키-값 쌍을 포함하고, 그와 같은 키-값 쌍 내에서 키가 그 값을 고유하게 식별하며 이들 키들은 서로 독립적이다. 컨시스턴시 프로토콜(216)은 노드들 사이에서 데이터를 동기화하며 상이한 노드가 각기 다른 데이터베이스에서 수행하는 병렬 수정(parallel modifications)을 해결한다. 하기에서 더욱 상세히 설명하는 바와 같이, 컨시스턴시 프로토콜(216)은 먼저 데이터베이스가 동기화되지 않았음을 통지받고; 두 번째로 어느 특정 데이터베이스 엔트리가 동기화되지 않는가를 발견하며; 그리고 세 번째로, 엔트리의 어느 버전이 가장 최근이고, 동기화되었으며, 그리고 유지되는 가를 발견함에 의해 이를 달성한다.
언제 데이터베이스에 대한 변경이 있는 가를 결정하는 병렬 수정을 해결하기 위해, 클러스터(108)에 합류하는 노드 각각은 언제 그 같은 노드가 데이터에 대한 변경을 하는가를 기록하고 그리고 동일한 데이터에 대한 변경이 클러스터(108) 내 다른 노드에 의해 만들어지기 전에 또는 만들어진 후에 변경이 있게 되는가를 결정하도록 사용된 인과관계 버전닝 메카니즘이 할당된다. 본 발명 실시 예에서, 노드 각각은 인과관계 버전닝 메카니즘으로서 간격 트리 클록(ITC)를 사용한다. 그러나, 선택적 실시 예에서, 벡터 클록 및 버전 벡터와 같은 다른 버전닝 메카니즘이 사용될 수 있다. 시스템(100)은 또한 유니버설 타임 클록(UTC)을 실행하며, 이는 네트워크 타임 프로토콜을 사용하여 각기 다른 노드들 사이에서 동기화되어, 둘 또는 그 이상의 노드에 대한 ITC가 동일한 때 변경이 일어나는 순서를 결정하도록 한다. ITC는 P. Almeida, C. Baquero, 그리고 V. Fonte, "간격 트리 클록:동적 시스템에 대한 논리 클록", Princi. Distri. Sys., Lecture Notes in Comp. Sci., vol. 5401, pp. 259-274, 2008, 에서 상세히 설명되며, 이들 전부가 본원 명세서에서 원용된다.
컨시스턴시 프로토콜(216)이 노드 들 사이에서 동기화하는 디렉토리는 브랜치들로 나뉘어 지며, 이들 각각은 이벤추얼(궁극적인) 컨시스턴시 도메인(Eventual Consistency Domain)(ECD)로 불린다. 컨시턴시 프로토콜(216)은 다른 ECD와는 독립적으로 ECD 각각을 동기화한다. ECD 내 데이터베이스 엔트리 각각은 이벤추얼 컨시스턴시 엔트리(ECE)로 불린다. ECE 각각은 키; ECE가 수정되는 때마다 모두 갱신되는 ITC로부터 그리고 UTC로부터의 타임스탬프; 예를 들면, 머머해시(Murmurhash) 기능을 사용하여 발생되는 ECE의 해시 값; 데이터 자체; 그리고 ECE가 삭제되면 그리고 삭제되는 때 추가되는 그레이브스톤(gravestone)을 포함한다.
해시 값은 두 각기 다른 노드에서 상응하는 ECD 및 ECE를 비교하도록 사용되어 이들이 동일한가를 결정하도록 한다. 두 상응하는 ECD가 비교되는 때, 이들 ECD에 대한 "최상 레벨(top-level)" 해시가 비교된다. 주어진 노드에서 ECD에 대한 최상 레벨 해시는 ECD 내 모든 ECE를 해시함에 의해 발생된다. 상기 최상 레벨 해시가 매치하면, 다음에 ECD가 동일하며, 그렇지 않다면, 컨시스턴시 프로토콜(216)이 ECD가 상이함을 결정한다. ECD 내 어느 특정 ECE가 상이함을 결정함을 위하여, 해시가 두 노드 모두에서 계속 감소하는 ECD의 레인지에 대하여 해시가 택하여진다. 해시들이 일정 간격으로 택하여지며, 이 같은 간격이 궁극적으로 충분히 줄어들어서 두 노드 사이에서 상이한 ECE가 고립되고 식별된다. 예를 들면, 양-방향 스킵-리스트는 ECD 간격의 해시 값을 결정하고 비교하도록 사용될 수 있다.
컨시스턴시 프로토콜(216)을 사용하여 통(신)하는 두 노드 다음의 RPC를 사용할 수 있다:
1. SetEntries: SetEntries(세트엔트리)가 새로운 또는 갱신된 ECE를 한 노드로 전송하며, 이들을 적절한 ECD내로 삽입한다.
2. GetEntries: GetEntries(겟엔트리)는 한 키 또는 키 레인지를 한 노드로 전송하며, 노드는 그와 같은 하나 또는 둘 이상의 키에 해당하는 ECE를 되보낸다.
3. SynEntries: SynEntries는 한 키 또는 키 레인지를 한 노드로 전송하며, 두 노드는 상기 설명된 바와 같이, 두 노드 사이에서 어느 ECE가 상이한가를 결정하기 위해 ECE의 레인지를 계속 줄이는 해시를 비교한다.
만약 ECE가 상이하면, 노드들은 이들의 ECE를 합병하여 동일한 ECE가 ITC 타임스탬프를 비교함에 의해 노드에 저장되도록 한다; ITC 타임스탬프가 매치한다면, 노드는 ECE와 관련된 UTC 타임스탬프를 비교한다. 이들 타임스탬프는 버전 정보로서 작용하며, 이들 ECE 버전 정보에 의해 표시된 바와 같이, 두 노드가 가장 최근 수정된 ECE를 채택하도록 허용한다.
노드가 ECE를 변경하는 때, 그 같은 노드는 대개 SynEntries를 호출하여 클러스터(108) 내 다른 노드에게 ECE가 변경되었음을 알리도록 한다. 클러스터(108) 내 노드 일부가 이용가능하지 않다면(예를 들면: 이들이 오프라인이라면), 그러면 SynEntries 대신 가십 프로토콜(208)이 사용되어 이들이 온라인으로 되돌아 가면 최상 레벨 해시를 이용가능하지 않은 노드로 통하게 한다. 클러스터(108) 내 가십 프로토콜(208)을 설명하는 세션에서 암시된 바와 같이, 노드 각각은 최상 레벨 해시를 유지하며, 이는 가십 프로토콜(208)을 사용하여 노드 식별자, 버전 정보 그리고 심장박동과 상태와 함께 다른 노드로 퍼뜨려진다. 또 다른 노드가 이 같은 해시를 수신하는 때, 이는 수신된 최상 레벨 해시를 그 자신의 최상 레벨 해시와 비교한다. 만약 최상 레벨 해시가 동일하면, 두 노드에서 ECE가 매치하며; 그렇지 않으면, ECE는 상이하다.
ECE가 상이하면, 이것이 SynEntries 또는 가십 프로토콜(208)을 사용하여 결정되는 것과는 관계없이, SynEntries를 실행하는 또는 최상 레벨 해시를 수신하는 노드가 ECE를 동기화한다.
상태 프로토콜 218
상기 설명된 바와 같이, 가십 프로토콜(208)은 클러스터(108)에서 클러스터(108) 노드에 대하여 상태 엔티티 식별자 및 이들의 버전 번호("상태 엔티티 쌍")를 공유한다. 예를 들면, 실시 예 상태 엔티티 식별자는 노드가 얼마나 많은 이용가능한 저장을 가질 수 있는가; 어느 장치(비-노드 카메라(114)와 같은)가 그와 같은 노드에 연결되는가; 어느 클라이언트(102)가 그 같은 노드에 연결되는가; 그리고 클러스터 멤버쉽 정보와 같은 상태 엔트리 형태로 각기 다른 타입의 상태 엔트리를 나타낸다. 노드 하나가 가십 프토토콜(208)을 통해 이 같은 데이터를 수신하는 때, 이 노드는 상태 엔트리 쌍의 버전 번호를 이것이 국지적으로 저장하는 상응하는 상태 엔트리의 버전 번호와 비교한다. 만약 버전 번호가 상이하다면, 상태 프로토콜(218)은 노드를 갖는 RPC("Sync RPC")를 시작하며, 이로부터 상태 엔트리 쌍이 시작하여 상응하는 상태 엔트리를 갱신하도록 한다.
상태 프로토콜(218)을 사용하여 동기화된 상태 엔트리는 경로 그리고 노드 식별자를 모두에 의해 고유하게 식별된다. 컨시스턴시 프로토콜(216)을 사용하여 동기화된 데이터와 달리, 상태 엔트리가 설명하는 노드는 상태 엔트리 또는 상태 엔티티 쌍을 수정하도록 허용된 유일한 노드이다. 따라서, 컨시스턴시 프로토콜(216)을 사용하여 동기화되는 ECD 및 ECE와는 달리, 노드 A에서 저장된 노드 A를 위한 상태 엔트리는 항상 그와 같은 상태 엔트리의 가장 최근 버전이다.
만약 노드 A가 다수의 상태 엔트리를 동시에 수정하면, 상태 프로토콜(218)은 노드 B가 Sync RPC를 호출하는 때 노드 B로 모든 수정된 상태 엔트리를 함께 동기화한다. 따라서, 이와 같이 동시에 변경된 엔트리는 이들이 분석을 위해 노드 B로
함께 전송되기 때문에 서로 종속할 수 있다. 이와 반대로, 컨시스턴시 프로토콜(216)을 사용하여 동기화된 ECE 각각은 다른 ECE로부터 독립적으로 동기화되며, 노드 B가 어떤 특정한 순서로도 엔트리를 수신함에 의존할 수 없기 때문에 서로 종속할 수 없도록 한다.
애플리케이션
시스템(100) 내 노드 각각은 상기 설명된 프로토콜 슈트(200)를 실행하는 서비스를 이행한다. 설명된 실시 예에서 프로토콜(202-208) 각각을 위해 하나씩의 서비스가 사용되며, 또 다른 실시예(도시되지 않음)에서 이보다 많거나 적은 서비스가 프로토콜 슈트(200)를 실행하도록 사용된다. 노드 각각이 프로토콜 슈트(200) 자체적으로 실행하며; 결과적으로, 시스템(100)은 분산되고 임의의 단일 노드의 고장에 의해 덜 영향을 받는다. 이는 중앙 집중형 서버를 사용하는 종래의 시설 보안시스템과는 다른 것이다. 예를 들면, 노드 하나가 시스템(100)에서 고장이면("고장 노드"), 나머지 노드 각각에서 상태 프로토콜(218)을 실행하는 서비스("상태 서비스")는 고장 노드의 심장박동 상태를 모니터함에 의해 고장 노드가 오프라인임을 결정할 것이며, 이 같은 고장을 다른 노드 각각에서 노드 및 멤버쉽 프로토콜(210, 212)을 실행하는 서비스("노드 서비스" 그리고 "멤버쉽 서비스", 각각)로 통하게 할 것이다. 싱크로니 및 컨시스턴시 프로토콜(214, 216)을 실행하는 노드 각각에서의 서비스("싱크로니 서비스" 그리고 "컨시스턴시 서비스" 각각)는 고장 노드가 온라인으로 되돌아가서 자신의 클러스터(108)에 합류할 때까지 고장 노드와 데이터를 공유하는 것을 중지할 것이다.
다음은 시스템(100)이 실행할 수 있는 다양한 애플리케이션(220-230)을 설명한다. 애플리케이션(220-230)들은 도 8에서 도시된 데이터(800)를 공유하기 위한 예시적 방법의 다양한 실시로서 실시될 수 있다. 방법(800)은 블록(802)에서 시작되며 블록(804)으로 진행되고 여기서 시스템(100) 내 제1 노드가 노드 식별자에 접근하며 시스템(100) 내 또 다른 노드를 식별한다. 제1 및 제2 노드는 동일한 서버 클러스터(108)의 멤버들이다. 제1 노드가 접근하는 노드 식별자는 클러스터(108)의 모든 멤버를 식별하는 클러스터 멤버쉽 정보의 일부이다. 상기 클러스터 멤버쉽 정보는 클러스터(108)의 모든 멤버에 의해 접근가능하다. 도시된 실시 예에서, 클러스터(108)의 멤버 각각은 클러스터 멤버쉽 정보의 자신의 버전을 지속적으로 그리고 국지적으로 저장하며, 그러나, 선택적 실시 예(도시되지 않음)에서, 클러스터 멤버쉽 정보는 노드로부터 원격하게 떨어지거나 중앙 위치에 저장될 수 있다. 제2 노드를 위한 노드 식별자에 접근한 뒤에, 제1 노드가 블록(806)에서 제2 노드로 데이터를 전송하며, 그 뒤에 방법(800)이 블록(808)에서 종료된다. 예를 들면, 상기 설명된 노드 서비스를 사용하는 때, 제1 노드에서 실행되는 싱크로니 및 컨시스턴시 서비스는 제2 노드의 노드 식별자를 사용함에 의해, 그리고 제2 노드의 통신 엔드포인트를 노드 식별자에 관련시키기 위해 노드 서비스 책임으로 책임을 부과함으로써 제2 노드로 데이터를 전송할 수 있다. 블록(806)에서 제1 노드로부터 제2 노드로 데이터를 전송함은 데이터가 가십 프로토콜(208)에 따라 교환되는 때와 같은, 양 방향 데이터 교환의 일부를 포함할 수 있다.
공유 세팅 애플리케이션 226 그리고 공유 사용자 객체 애플리케이션 228
시스템(100)의 동작 동안, 지속적으로 저장된 정보가 클러스터(108)의 노드들 사이에서 전송된다. 공유 세팅 및 공유 사용자 객체 애플리케이션(226, 228)이 노드들 사이에서 공유하는 이 같은 실시간 정보의 예가 규칙과 같은 공유 세팅이며 알람 트리거와 같은 시스템 이벤트 그리고 사용자 명칭, 패스워드, 그리고 테마와 같은 사용자 객체에 응답하여 실행하도록 한다. 이 같은 종류의 데이터("컨시스턴시 데이터")는 컨시스턴시 프로토콜(216)을 사용하여 노드 들 사이에서 공유되며; 일반적으로 컨시스턴시 데이터는 실시간으로 또는 완전한 순서(전순서)로 공유되지 않아야하는 데이터이며, 노드 각각에 의해 지속적으로 저장되는 데이터이다. 그러나, 선택적 실시 예에서(도시되지 않은), 컨시스턴시 데이터는 비-지속적으로 저장될 수 있다.
도 3은 사용자 세팅의 형태로 컨시스턴시 데이터가 제1 및 제2 사용자(302a, b)(집합적으로 "사용자 302") 사이에서 공유되는 UML 시퀀스 도면(300)이다. 사용자(302), 제1 및 제2 클라이언트(102a,b), 그리고 제1 및 제2 서버(104a,b)가 이 실시 예에서 제1 및 제2 노드이며, 도면(300)에서 객체이다. 서버(104a,b)는 동일한 클러스터(108a)의 일부를 형성한다. 클라이언트(102a,b)가 통하는 서버(104a,b)가 서로 직접 연결되지 않으며, 컨시스턴시 프로토콜(216)은 두 서버(104a,b) 사이에서, 따라서 두 사용자(302) 사이에서 데이터를 전달하도록 사용된다. 비록 도시된 실시 예가 세팅을 공유하는 것을 설명하지만, 선택적 실시 예(도시되지 않은)에서 사용자(302)가 유사하게 사용자 객체를 공유할 수 있다.
도면(300)은 두 프레임(332a,b)을 갖는다. 제1 프레임(332a)에서, 제1 사용자(302a)는 제1 클라이언트(102a)가 세팅 패널(메시지 304)을 개방하도록 지시하고, 그리고 클라이언트(102a)는 뒤이어서 SettingsOpenView() 절차(메시지 306)를 수행하며, 이 같은 절차가 세팅을 제1 서버(104a)로 전달한다. 동시에, 제2 사용자(302b)는 제2 클라이언트(102b)를 유사하게 지시한다(메시지 308 및 310). 제2 프레임(332b)에서, 사용자(302)는 이들의 세팅을 동시에 편집한다. 제1 사용자(302a)는 제1 클라이언트(102a)가 UIEditSetting() (메시지 312)를 실행하도록 함으로써 자신의 세팅을 편집하고, 뒤이어서 제1 클라이언트(102a)는 제1 서버(104a)가 SettingsUpdateView() (메시지 314)를 실행하도록 함으로써 제1 서버(104a)에 저장된 세팅을 갱신한다. 다음에 제1 서버(104a)가 ConsistencySetEntries()를 실행하며, 이는 SetEntries 절차를 수행하고 그리고 제1 사용자(302a)에 의해 입력된 세팅을 제2 서버(104b)로 전달한다. 다음에 제2 서버(104b)가 SettingsNotifyViewUpdate()(메시지 318)를 호출함에 의해 제2 클라이언트(102b)로 상기 전달된 세팅을 전송하며, 뒤이어서 제2 클라이언트(102b)가 제2 사용자(302b)(메시지 320)를 갱신한다. 이와 동시에, 제2 사용자(302b)는 유사하게 세팅을 수정하며 이들 세팅을 컨시스턴시 프로토콜(216)(메시지 322, 324, 326, 328 그리고 330)을 사용하여 제1 서버(104a)로 전송한다. 서버(104a,b) 각각은 지속적으로 사용자 세팅을 저장하며 따라서 서버(104a,b) 중 어느 것이 리부팅되어야 한다면 이들이 서버(104a,b)들 사이에서 다시 동기화될 필요가 없도록 한다.
공유 이벤트 및 알람 애플리케이션 224
시스템(100)의 동작 동안에, 실행시간 중에 발생된 실시간 정보가 클러스터(108)의 노드들 사이에서 전달된다. 공유 이벤트와 알람 애플리케이션(224)이 노드들 사이에서 공유하는 이 같은 실시간 정보의 예는 알람 상태이며(즉, 시스템(100) 내 어는 곳에서 알람이 트리거 되었는지 여부); 이동과 같은 시스템 이벤트가 검출되었는지 여부이고, 장치(노드 카메라(106) 중 하나와 같은)가 시스템(100)의 나머지로 디지털 데이터를 전송하는지 여부이며, 장치(이동 검출기와 같은)가 시스템(100)에 연결되었는지 여부이고, 장치가 현재 기록하고 있는지 여부이며, 알람이 발생되었는지 또는 사용자(302)에 의해 확인되었는지 여부이고, 사용자(302) 중 하나가 시스템(100)에 대한 감사를 수행하는지 여부이며, 서버(104) 중 하나에 에러가 있은지 여부이고, 시스템에 연결된 장치에 에러가 있는지 여부이며, 판매시점 텍스트 트랜잭션이 발생되었는지 여부이고; 그리고 세팅/데이터가 변경되었는지와 같은 클라이언트 통지로의 서버 노드, 현재 기록 상태, 타임 라인이 갱신되었는지 여부, 그리고 데이터베이스 질문 결과이다. 본 발명 실시 예에서, 싱크로니 프로토콜(214)을 사용하는 노드들 사이에서 전달된 데이터는 "싱크로니 데이터"로 불리며, 실행-시간에 발생 되고, 그리고 노드들에 의해 지속적으로 저장되지 않는다.
도 4는 알람 통지가 싱크로니 프로토콜(214)을 사용하여 서버(104)들 사이에서 공유되는 UML 시퀀스 도면(400)이다. 도면(400) 내 객체들은 비-노드 카메라 중 하나(114), 제1 클러스터(108a) 내 3개의 서버(104), 그리고 제1 클러스터(108a) so 서버 중 하나(104c)에 연결된 제2 클라이언트(102b)이다.
도면(400) 중 처음 3개의 프레임(402)에서, 서버(104) 각각은 "ServerState"라고 불리는 싱크로니 링에 합류하며, 서버(104) 중 하나의 상태가 다른 서버(104)에 통할 수 있도록 하며; 도시된 실시 예에서, 통할 수 있는 상태는 "AlarmStateTriggered"이며, 이는 서버(108) 중 하나에서 알람이 비-노드 카메라(114)가 검출된 이벤트에 의해 트리거되었음을 의미한다. 프레임(404)에서, 제2 서버(104b)는 Alarms(알람) 애플리케이션을 위한 "마스터"로 선출된다; 이는 비-노드 카메라(114)로부터 입력이 AlarmStateTriggered 상태로 트랜지션하기 위한 기준을 만족시키는지를 제2 서버(104b)가 결정하고, 그리고 싱크로니 링 내 다른 서버(104a,c)로 이들을 마찬가지로 AlarmStateTriggered 상태로 트랜지션하기 위한 메시지를 전송함을 의미한다.
제2 사용자(302b)는 서버(104)가 ServerState 싱크로니 링(메시지 406)에 합류한 후 제3 서버(104c)내로 로그한다. 사용자(302b)가 로그인한 뒤에, 제3 서버(104c)가 하기 상세히 설명되는 "ClientNotification(메시지 408)":라 불리는 또 다른 싱크로니 링에 합류하며, 이 같은 링은 사용자(302b)로 시스템 상태를 통하도록 사용되고, ServerState 싱크로니 링은 서버(104)들 사이에서만 통하도록 사용된다. 비-노드 카메라(114)는 도어 또는 윈도우가 오픈되었다는 표시와 같은 디지털 입력을 제1 서버(104a)로 전송하며(메시지 410), 뒤이어서 제1 서버(104a)가 이 같은 디지털 입력이 시스템(100)에서 알람을 트리거할 것인지 여부를 결정하기 위해 사용된 한 세트의 규칙을 만족하는가를 확인하도록 체크한다(메시지 412). 도시된 실시 예에서,제1 서버(104a)는 알람이 트리거되어야 하는가를 결정하며, 그리고 따라서 AlarmTrigger()를 호출하고, 이는 상태를 변경시키기 위해 제2 서버(104b)에게 알린다. 다음에 제2 서버(104)는 상태를 AlarmStateTriggered로 트랜지션하며(메시지 416) 메시지를 다른 두 서버(104a,c)에게 지시하여 상태를 AlarmStateTriggered로 변경시키도록 하는 ServerState 싱크로니(Synchrony) 링으로 전송한다(프레임 418). 다른 서버(104a,c)를 지시한 후에, 제2 서버(104b)는 AlarmTriggerNotification()를 실행하며(메시지 420), 이는 제2 서버(104b)가 또한 ClientNotification 싱크로니 링에 합류하게 하며(프레임 422) 그리고 메시지를 ClientState 싱크로니 링으로 보내서 ClientState 싱크로니 링에서 다른 서버인 제3 서버(104c)가 "NotifyAlarmTriggered"상태로 트랜지션하도록 한다(프레임 424). 제3 서버(104c)가 이 같은 상태로 변경되면, 이는 직접 제2 클라이언트에게 알람이 트리거되었음을 알리며, 이는 이 같은 메시지를 제2 사용자(302b)에게 릴레이하고 사용자(302b)가 알람을 인식할 것을 기다린다(메시지 426). 일단 제2 사용자(302b)가 알람을 인식하면, 제2 서버(104b)가 따라서 상태를 AlarmStateAcknowledged"로 변경시키며(메시지 428), 다음에 메시지를 ServerState 싱크로니 링으로 전송하여 다른 두 서버(104a,c)가 이에 따라 상태를 역시 변경시키도록 한다(프레임 430). 제2 서버(104b)는 뒤이어 상태를 다시 "NotifyAlarmAcknowledged"로 변경시키며(메시지 432), 메시지를 ClientNotification 싱크로니 링을 통하여 제3 서버(104c)로 전송하여 이에 따라 상태를 변경하도록 한다(프레임 434). 제3 서버(104c)는 다음에 클라이언트(102c)에게 시스템(100)이 알람을 인식하였음을 통지하며(메시지 436), 이는 이 같은 메시지를 제2 사용자(302b)에게 릴레이 한다(메시지 438).
선택적 실시 예에서(도시되지 않음), 제2 서버(104b)는 고장이며 더 이상 싱크로니 링을 위한 마스터로서 작용하지 않으며, 시스템(100)은 자동으로 서버(104) 다른 하나가 링을 위한 마스터로서 작용하게 한다. 이 같은 싱크로니 링의 마스터는 싱크로니 링이 노드들 사이에서 알람 통지를 공유하기 위해 사용되는 때, 링에 있는 모든 다른 노드가 상태를 변경하게 하도록 허용되는 유일한 서버(104)이다.
도 7은 도 4의 도면(400)에 따라 알람 상태를 인식하는 때 사용자(302)에게 제공된 예시적 뷰(700)을 도시한다. 뷰(700)는 비디오 패널(702a-c)(집합적으로 "패널 702")을 포함하며 비-노드 카메라(114)로부터 실시간 스트리밍 비디오를 보여주고; 비-노드 카메라(114)가 기록한 것의 결과로 알람이 트리거되었음을 나타내는 알림(alerts)(704)를 포함하며; 그리고 알람이 트리거되었음을 인식하기 위해 제2 사용자(302b)가 클릭하는 인식 버튼(706)을 포함한다.
공유 뷰 및 협동 애플리케이션 222
시스템(100)의 사용자(302)는 또한 뷰(700)를 공유하는 동안 시스템(100)을 통하여 서로 메시지를 전송하고 서로 대화함에 의해, 다른 사람의 뷰(700) 각각을 공유하고 협동하기를 원할 수 있다. 이 같이 공유 뷰 그리고 협동 애플리케이션(222)은 따라서 사용자(302)가 뷰 상태와 같은 데이터 그리고 사용자 메시지 및 공유 요청과 같은 서버-클라이언트 통지를 공유하도록 허용한다.
도 5는 UML 시퀀스 도면(500)을 도시하며, 뷰(700)가 싱크로니 프로토콜(214)을 사용하여 사용자(302) 사이에서 공유된다. 도면(500)은 6개 객체를 포함한다: 제1 및 제2 사용자(302a,b), 제1 및 제2 사용자가 각각 연결된 제1 및 제2 클라이언트(102a,b), 그리고 제1 및 제2 클라이언트(102a,b)가 각각 연결된 제1 및 제2 서버(104a,b).
제1 사용자(302a)는 제1 클라이언트(102a)를 통하여 제1 서버(104a) 내로 로그인하며, 그 뒤에 제1 서버(104a)가 ClientNotification 싱크로니 링을 합류한다(프레임 504). 이와 유사하게, 제2 사용자(302b)는 제2 클라이언트(102b)를 통하여 제2 서버(104b) 내로 로그인하며(메시지 506), 그 뒤에 제2 서버(104b)가 역시 ClientNotification 싱크로니 링에 합류한다(프레임 508).
다음에 제1 사용자(302a)가 제1 클라이언트(102a)에 그가 그의 뷰(700)를 공유하기를 희망함을 지시한다. 제1 사용자(302a)는 공유 버튼을 누름에 의해 이를 수행하며(메시지 510), 이는 제1 클라이언트(102a)가 제1 서버(104a)에서 공유될 뷰(700)를 오픈하게 한다(메시지 512). 제1 서버(104a)는 공유된 뷰 세션을 발생시키고(메시지 514), 그리고 세션 식별자를 제1 클라이언트(102a)로 전송한다(메시지 516).
한 프레임(518)에서 클라이언트(102) 각각은 이들이 공유 뷰(700)를 공유하게 하는 싱크로니 링을 합류한다. 제1 서버(104a)는 프레임(520)에서 SharedView1 싱크로니 링에 합류한다. 이와 유사하게, 제1 클라이언트(106a)는 제1 서버(104a)에 명령하여, 제1 서버(104a)로 사용자 리스트 그리고 세션 식별자를 보냄에 의해 제1 사용자(302a)의 뷰(700)가 공유되는 싱크로니 프로토콜(214)을 통하여 다른 서버(104a)에 알리도록 한다. 제1 서버(104a)는 제2 서버(104)가 NotifyViewSession 상태로 변경하게 하는 ClientNotify 싱크로니 링을 통하여 제2 서버(104b)로 메시지를 전송함에 의해 이를 수행한다(프레임 524). NotifyViewSession 상태에서, 제2 서버(104b)는 제2 클라이언트(106b)가 제2 사용자(302b)를 프롬프트하도록 하여, 제1 사용자(302a)의 뷰(700)를 공유하게 하며, 제2 사용자(302b)의 긍정 응답이 제2 서버(104b)로 다시 릴레이된다(메시지 530, 532). 제2 서버(104b)는 뒤에 가서 SharedView1 싱크로니 링에 합류하며(프레임 534), 이는 제1 사용자(302a)의 뷰(700)를 공유하도록 사용된다.
제2 프레임(519)에서 사용자(106) 각각은 공유된 뷰(700)를 갱신하며, 이 같은 갱신이 자동으로 서로 공유된다. 제1 사용자(302a)는 공유 뷰(700) 내 제1 패널(702a) 내로 줌(zoom)하며(메시지 536), 제1 클라이언트(102a)는 어떻게 제1 사용자(302a)가 제1 패널(702a) 내로 줌(zoom)되는 가를 제1 서버(104a)로 릴레이 한다. 제1 서버(104a)는 줌 사항(zooming particulars)을 제2 서버(104b)와 공유하며 이들을 SharedView1 싱크로니 링을 따라 보냄으로써 공유하게 된다(프레임 540). 제2 서버(104b)는 따라서 제2 클라이언트(106b)에서 디스플레이되는 공유 뷰(700)를 갱신하며(메시지 542), 그리고 이와 같이 갱신된 공유 뷰(700)는 다음에 제2 사용자(302b)에게 디스플레이된다(메시지 544). 동시에, 제2 사용자(302b)는 공유된 뷰(700) 내 제2 패널(702b)을 팬(pan)하고(메시지 546), 그리고 제2 클라이언트(102b)는 어떻게 제2 사용자(302b)가 이 같은 패널(702b)을 팬하였는가를 제2 서버(104b)로 릴레이 한다(메시지 548). 다음에 제2 서버(104b)가 SharedView1 싱크로니 링을 사용하여 이들을 패스함에 의해 제1 서버(104a)와 팬닝 사항(panning particulars)을 공유한다(프레임 550). 제1 서버(104a)는 따라서 제1 클라이언트(106b)에서 디스플레이되는 바와 같이 공유 뷰(700)를 갱신하며(메시지 552), 그리고 다음에 이와 같이 갱신된 공유 뷰(700)가 제1 사용자(302a)에게로 디스플레이된다(메시지 556).
제2 프레임(519) 이후, 제1 사용자(302a)는 자신의 뷰(700)를 클로즈하며(메시지 556), 이는 제1 서버(104a)로 릴레이된다(메시지 558). 제1 서버(104a)는 결과적으로 SharedView1 싱크로니 링을 떠난다(메시지 및 프레임 560). 제2 사용자(302b)는 이와 유사하게 그의 뷰(700)를 클로즈하며, 이는 제2 서버(104b)가 SharedView1 싱크로니 링을 떠나게 한다(메시지 562 및 564, 그리고 메시지 및 프레임 566).
도 5의 예에서, 사용자(302)는 공유 뷰(700)를 팬(pan) 그리고 줌한다. 선택적 실시 예에서(도시되지 않음), 사용자(302)는 상기 공유 뷰(700)를 다른 방법으로 수정할 수 있다. 예를 들면, 사용자(302)는 패널(702)의 레이아웃을 각각 변경할 수 있으며; 비디오가 라이브로 또는 플레이백 모드로 디스플레이될 것인지를 선택하며, 이 같은 경우 사용자(302)는 또한 비디오를 중지하거나, 플레이하거나, 또는 스텝 스루우할 수 있기도 하고; 그리고 수정 히스토리와 같은 사용자 객체에 대한 정보와 함께 맵 또는 웹 페이지와 같은 사용자 객체를 디스플레이한다. 이들 선택적 실시 예에서, 싱크로니 링을 사용하여 동기화된 추가 상태 정보의 예는 비디오가 플레이되거나, 중지되거나 또는 스텝 스루우됨을 포함하며 사용자 객체의 수정 히스토리를 포함한다.
상기 설명은 도 1의 피어-투-피어 시설 보안시스템(100)에서 공유 뷰 및 협동 애플리케이션(222)의 실현에 초점을 두지만, 더욱 일반적으로 이 같은 애플리케이션(222)은 중앙 집중 게이트웨이 서버를 포함하는 연합 시스템과 같은, 멀티플 서버(104)를 갖는 시설 보안시스템에서 실현될 수 있다. 이 같은 더욱 일반적인 실시 예의 예가 도 12에서 도시되며, 이는 다수의 서버 노드를 포함하는 시설 보안시스템을 사용하는 뷰를 공유하기 위한 예시적인 방법(1200)을 도시한다. 이 같은 방법(1200)은 블록(1202)에서 시작하며 블록(1204)로 진행하고, 여기서 제1 클라이언트(제1 클라이언트 102a와 같은)에 의해 디스플레이된 뷰를 대표하는 뷰 상태 데이터가, 제1 클라이언트로부터 제1 서버 노드로 전송되며(제1 서버(104a) 그리고 메시지(538)를 통하여 보내진 뷰 상태 데이터와 같은), 이때 상기 뷰는 공유될 뷰이다. 블록(1206)에서 상기 뷰 상태 데이터는 제1 서버 노드로부터 제2 서버 노드를 통하여 제2 클라이언트(제2 클라이언트(102b)와 같은)로 릴레이 된다. 블록(1208)에서, 제2 클라이언트는 다음에 뷰 상태 데이터를 사용하여 디스플레이를 업데이트하며 공유 뷰를 보여주도록 한다(메시지 (544)를 통하여). 제2 클라언트에서 공유 뷰 내 변경에 응답하여, 즉, 제2 클라이언트(메시지(546)를 통해서)에서 사용자와 상호작용함으로부터 발생 되는 변경과 같은 변경에 응답하여, 블록(1210)에서 갱신된 뷰 상태 데이터가 제2 클라이언트로부터 제2 서버 노드(메시지(548)를 통해서)로 전송된다. 상기 갱신된 뷰 상태 데이터는 제2 클라이언트에 의해 디스플레이되는 공유 뷰를 대표한다. 상기 갱신된 뷰 상태 데이터는 제2 서버 노드로부터 블록(1212)에서 제1 서버 노드를 통하여 제1 클라이언트로 전송되며(프레임(550) 그리고 메시지(552)를 통하여), 그리고 블록(1214)에서 제1 클라이언트의 디스플레이가 다음에 갱신되어서 갱신된 뷰 상태 데이터를 사용하여 제2 클라이언트에서 수정된 바와 같이(메시지(554)를 통하여) 공유 뷰를 도시하도록 한다. 이 같은 방법(1200)은 블록(1216)에서 종료된다. 중앙 집중형 게이트웨이 서버를 사용하는 연합 시스템을 처리하는 때와 같은 선택적 실시 예에서, 모든 뷰 상태 데이터는 그 같은 중앙 집중형 서버를 통하여 경로가 정해진다.
무인 뷰 공유 애플리케이션 225
시스템(100)의 사용자(302)는 또한 사용자(302)가 직접 컨트롤하지 않는 서버(104) 중 하나에 직접 또는 간접 연결된 디스플레이에서 뷰를 보고 컨트롤할 수 있기를 원할 수 있다(즉, 사용자(302)가 다른 서버(104)를 통하여 컨트롤하고)(이 같은 디스플레이는 "무인 디스플레이"이며, 그리고 무인 디스플레이에서의 뷰는 "무인 뷰"이다.) 예를 들면, 상기 무인 디스플레이는 사용자(302)의 정면 벽에 장착되며 클러스터(108) 내 서버 중 한 서버를 통하여 서버 클러스터(108)에 연결될 수 있고, 사용자(302)는 클러스터(108) 내 다른 서버(104)를 통하여 서버 클러스터(108)에 연결될 수 있다. 도 10과 관련하여 하기 설명되는 바와 같이, 무인 뷰 공유 애플리케이션(225)은 사용자(302)가 사용자(302) 중 어느 누구도 무인 뷰를 컨트롤하는 서버(104)에 직접 연결되지 않았을 지라도 무인 뷰를 보고 컨트롤할 수 있도록 한다. 이 같은 기능을 가능하게 하기 위해 서버(104)들 사이에서 교환되는 뷰 데이터는 실시간으로 공유되는 싱크로니 데이터이다.
도 10은 UML 시퀀스 다이어그램(1000)을 도시하며, 상기 무인 뷰는 상기 싱크로니 프로토콜(214)을 사용하여 제1 사용자(302a)와 공유된다. 도면(100)은 6개 객체를 포함한다: 제1 사용자(302a), 제1 사용자가 연결되고 제1 사용자(302a)가 상호작용하는 디스플레이("클라이언트 디스플레이")를 포함하는 제1 클라이언트(102a), 제1 및 제2 서버(104a,b). 제2 서버(104b) 그리고 무인 디스플레이 모두에 연결된 클라이언트(102) 중 한 무인 클라이언트와 같은 하드웨어에서 실행되는 모니터 인스턴스(1004) 그리고 이 같은 모니터 인스턴스(1004)를 설치하는 관리자(1002). 선택적 실시 예에서(도시되지 않음), 무인 디스플레이는 제2 서버(104b)에 직접 연결되며 모니터 인스턴스(1004)가 제2 서버(104b)에서 실행될 수 있다.
도 10에서, 관리자(1002)는 모니터 인스턴스(1004)(메시지 1006)를 발생시키며 모니터 인스턴스(1004)가 다음에 자동으로 제2 서버(104b) 내로 로그인 된다(메시지 1008 및 1010). 이 같은 모니터 인스턴스(1004)는 제2 서버(104)에서 SharedViewOpen(viewState)를 호출함에 의해 무인 뷰가 제2 서버(104b)에서 이용될 수 있도록 하며, viewState는 무인 뷰를 나타내는 뷰 상태 데이터이다(메시지 1012). 다음에 제2 서버(104b)가 SharedViewSessionCreate()를 실행함에 의해 공유 뷰 세션(메시지 1014)을 발생시키며 다음에 상응하는 세션 식별자를 모니터 인스턴스로 전송한다(메시지 1016). 이 같은 세션 식별자를 수신한 뒤에 모니터 인스턴스(1004)가 SharedView1 싱크로니 링에 합류하며(프레임 1018), 이는 SharedView1 싱크로니 링의 멤버이기도 한 클러스터(108) 내 다른 서버(104)로 그리고 이 같은 다른 서버로부터 뷰 상태 데이터를 전송하도록 사용된다.
SharedView1 싱크로니 링에 합류한 뒤에, 모니터 인스턴스(1020)가 무인 뷰가 보일 수 있고 컨트롤될 수 있는 클러스터(108) 내 다른 서버(104)로의 통지를 공표한다. 모니터 인스턴스(1020)는 제2 서버(104b)에서 RegisterMonitor(sessionId)를 호출함에 의해 이를 수행하며(메시지 1018), 이는 무인 뷰와 관련된 상기 세션 식별자가 뷰 디렉토리에서 등록될 수 있도록 한다(프레임 1022). 이 같은 뷰 디렉토리는 컨시스턴시 프로토콜(216)을 사용하여 클러스터(108) 내 다른 서버(104)와 공유된다.
일단 뷰 디렉토리가 클러스터(108) 내 다른 서버(104)로 퍼뜨려지면, 이들 다른 서버(104)가 뷰 리렉토리에 접근할 수 있으며 어느 무인 뷰가 뷰와 컨트롤에 이용될 수 있는가를 결정하도록 한다. 제1 서버(104a)가 뷰 디렉토리를 수신한 뒤, 제1 사용자(302a)가 제1 클라이언트(102a)를 통하여 제1 서버(104a) 내로 로그인하며, 이에 의해 클러스터(108)(메시지 1024) 그리고 뷰 디렉토리에 접근한다. 제1 사용자(102a)는 제1 클라이언트(102a)에게 UIDisplayMonitor(sessionId)(메시지 1026)를 호출함에 의해 무인 뷰를 디스플레이할 것을 명령하며, 이는 제1 클라이언트(102a)가 무인 뷰를 오픈하도록 하는 명령과 함께 무인 뷰 세션 식별자를 제1 서버(104a)로 전송하도록 한다. 제1 서버(104a)는 제1 클라이언트(102a)의 명령을 수령확인하며 다음에 SharedView1 싱크로니 링(프레임 1032)에 합류하여 무인 디스플레이의 현재 뷰(메시지 1034)를 설명하는 뷰 상태 데이터를 자동으로 수신하도록 하고 그리고 무인 뷰에 대한 뒤 이은 변경을 자동으로 통지받도록 한다.
제1 사용자(302a)는 클라이언트 디스플레이(메시지 1036)에서 디스플레이되는 때 무인 뷰의 패널 중 하나를 팬하며(메시지 1036), 그리고 제1 클라이언트(102a)는 SharedViewUpdate(action=pan, panelId=2) 를 호출함에 의해 제1 서버(104a)로 팬된(panned) 특정 패널에 대한 패닝 액션 그리고 식별을 릴레이 한다(메시지 1038). 제1 서버(104a)는 갱신된 뷰 상태 데이터를 SharedView1 싱크로니 링의 멤버인 모든 서버(104)로 전송하며(프레임 1040), 이는 이들 모든 서버(104)가 무인 뷰의 갱신 버전을 재생할 수 있도록 한다. 제2 서버(104b)는 이 같이 갱신된 뷰 상태 데이터를 수신하며 이를 NotifySharedViewUpdate(action=pan, params, panelId=2)를 호출함에 의해 모니터 인스턴스(1004)로 릴레이한다(메시지 1042). 다음에 모니터 인스턴스(1004)가 무인 디스플레이를 갱신하여 제1 사용자(302a)에 의해 수정된 바의 무인 뷰를 보여주도록 한다(메시지 1044).
도 10의 실시 예에서, 제1 사용자(302a)는 무인 뷰의 패널 중 하나를 팬한다. 선택적 실시 예에서(도시되지 않음), 제1 사용자(302a)는 다른 방법으로 무인 뷰를 수정할 수 있다. 예를 들면, 제1 사용자(302a)는 무인 뷰의 패널 중 하나 또는 둘 이상의 레이아웃을 변경할 수 있고; 비디오가 라이브 또는 플레이백 모드로 디스플레이 될 것인지를 선택하며, 이 같은 경우 제1 사용자(302a)가 또한 비디오를 중지, 플레이, 또는 스텝 스루우할 수 있고; 그리고 수정 히스토리와 같은 사용자 객체에 대한 정보와 함께 맵 또는 웹 페이지와 같은 사용자 객체를 디스플레이할 수 있다. 이들 선택적인 실시 예에서, 싱크로니 링을 사용하여 동기화된 추가 상태 정보의 예는 비디오가 플레이, 중지, 또는 스텝 스루우(stepped through) 되는가를 포함하며, 그리고 사용자 객체의 수정 히스토리를 포함한다.
또 다른 선택적 실시 예에서(도시되지 않음), 무인 뷰 공유 애플리케이션(225)은 n x m 메트릭스의 무인 디스플레이를 포함하는 집합 디스플레이를 발생시키도록 사용될 수 있다. 예를 들면, n = m = 2이고 결과적으로 4개의 무인 디스플레이가 있다면, 제1 사용자(302a)는 모든 4개의 무인 디스플레이를 동시에 컨트롤할 수 있으며, 가상의 한 큰 디스플레이를 생성하도록 한다. 다음에 싱글 비디오는 무인 뷰 각각이 비디오 사분면 하나 이도록 확대될 수 있으며, 이에 의해 비디오가 확대되고 4개의 무인 디스플레이에서 보이도록 한다. 이 같은 실시 예에서, 무인 디스플레이에 대한 모니터 인스턴스(1004)는 서버(104) 4개 중 한 서버를 통하여 서버 클러스터(108)와 통할 수 있다.
도 10이 제1 사용자(302a)만을 도시하지만, 선택적 실시 예(도시되지 않은)에서, 사용자(302) 하나 이상이 SharedView1 싱크로니 링에 합류함에 의해 무인 뷰를 보고 컨트롤할 수 있다. 무인 디스플레이의 메트릭스 n x m을 포함하는 집합 디스플레이의 상기 예에서, 상기 집합 디스플레이는 여러 사용자(302)에게 동시에 제공하기 위해 룸에 장착될 수 있으며, 사용자(302) 각각은 무인 뷰 각각을 제어할 수 있는 능력을 갖는다.
앞선 설명이 도 1의 피어-투-피어 시설 보안시스템(100)에서 무인 뷰 공유 애플리케이션(225) 실현에 대하여 초점을 두었으나, 이 같은 애플리케이션(225)은 중앙 집중 게이트웨이 서버를 포함하는 연합 시스템과 같은, 다수 서버(104)를 갖는 시설 보안시스템에서 더욱 일반적으로 실현될 수 있다. 이 같은 더욱 일반적인 실시의 예가 도 11에서 도시되며, 이는 다수의 서버 노드를 포함하는 시설 보안시스템 내 무인 디스플레이와 상호작용하기 위한 예시적인 방법(1100)을 도시한다. 이 같은 방법은 블록(1102)에서 시작하며 블록(1104)으로 진행하고 여기서 무인 디스플레이와 통하는 제2 서버 노드(제2 서버(104b)와 같은)가 제1 서버 노드(제1 서버(104b)와 같은)로 무인 뷰를 나타내는 뷰 상태 데이터를 전송한다(도 10의 프레임(1020 및 1032)에서 싱크로니 링을 통하여). 이 같은 방법(1100)은 다음에 블록(1106)으로 진행하며, 여기서 무인 뷰의 적어도 일부가 클라이언트 디스플레이 상에 디스플레이 되며(도 10의 메시지(1034)로부터 기인하는 클라이언트 디스플레이의 갱신과 같은) 뒤이어서 방법(1100)이 블록(1108)에서 종료한다. 중앙 집중 게이트웨이 서버를 사용하는 연합 시스템을 취급하는 때와 같은 선택적인 실시 예에서, 모든 뷰 상태 데이터는 그와 같은 중앙 집중 서버를 통하여 경로가 배정될 수 있다.
클러스터 스트림 애플리케이션 220
사용자(302) 중 한 사용자가 사용자(302)와 카메라(106.114) 사이 포인트-투-포인트 연결이 이용될 수 없다면 카메라(106, 114) 중 하나로부터 비디오를 스트림할 것을 원할 수 있으며; 클러스터 스트림 애플리케이션(220)이 이 같은 기능을 가능하게 한다. 도 6은 UML 시퀀스 도면(600)을 도시하며, 비디오가 제1 및 제2 서버(104a,b) 그리고 제1 클라이언트(102a)를 통하여 비-노드 카메라(114)로부터 제1 사용자(302a)로 스트림된다. UML 도면은 5개의 객체를 갖는다: 제1 사용자(302a), 제1 클라이언트(102a), 제1 및 제2 서버(104a,b) 그리고 비-노드 카메라(114). 제1 클라이언트(102a)는 직접 제1 서버(104a)와 통할 수 있으며, 그러나 직접 제2 서버(104b)와는 통할 수 없다. 그러나, 제1 및 제2 서버(104a,b)는 서로 직접 통할 수 있다. 또한, 제1 서버(104b) 그리고 비-노드 카메라(114)가 서로 직접 통할 수 있으며, 제1 서버(104a)와 비-노드 카메라(114)는 직접 통할 수 없다.
제2 서버(104b)는 먼저 비-노드 카메라(114)와 한 세션을 설정하며 비디오가 비-노드 카메라(114)로부터 제2 서버(104b)로 스트림되도록 한다. 제2 서버(104b)는 먼저 비-노드 카메라(114)와 Real Time Streaming Protocol (RTSP) 세션을 설정하며(메시지 602, 604), 그리고 비-노드 카메라(114)를 지시하여 그곳으로 비디오(메시지 606, 608)를 전송하도록 한다. 비-노드 카메라(114)는 뒤에가서 스트리밍을 시작한다(메시지 610).
제1 사용자(302a)는 제1 클라이언트(102a)와의 연결을 설정하며(메시지 612) 다음에 제1 클라이이언트(102a)에게 스트리밍 비디오를 보여주는 윈도우를 오픈할 것을 명령한다(메시지 614). 다음에 제1 클라이언트(102a)가 LookupRoute()를 호출하여 어느 서버(104)로 연결할 것인지를 결정하도록 한다(메시지 616); 제1 클라이언트(102a)는 제2 서버(104a)로 직접 연결될 수 없기 때문에, 제1 서버(104a)와 RTSP 연결을 설정한다(메시지 618). 다음에 제1 서버(104b)는 LookupRoute()를 호출하여 실시간 비디오에 접근하기 위해 어느 노드로 연결할 것인지를 결정하도록 하며, 제2 서버(104b)와 연결되어야 하는가를 결정한다(메시지 620). 다음에 제1 서버(104a)는 제2 서버(104b)와의 RISP 연결을 설정하며(메시지 622), 그리고 제2 서버(104b)는 세션 식별자를 제1 서버(104a)로 되보낸다(메시지 624). 제1 서버(104a)는 세션 식별자를 제1 클라이언트(102a)로 릴레이 한다(메시지 626). 이 같은 세션 식별자를 사용하여, 제1 클라이언트(102a)는 제2 서버(104b)로 명령하여 RTSP 비디오 플레이를 시작하며(메시지 628 내지 634), 그리고 제2 서버(104b)가 뒤이어서 비디오를 제2 서버(104b)를 통하여 제1 사용자(302a)에게 스트림하고, 다음에 제1 서버(104a), 그리고 다음에 제1 클라이언트(102a)에게 스트림한다(메시지 636 내지 640).
도 6은 클러스터(108) 내 한 서버(104)로 연결된 한 비-노드 카메라(114)로부터 동일한 클러스터(108) 내 다른 서버(104)로 비디오를 경로배정하며, 선택적인 실시 예에서(도시되지 않음) 비디오는 또한 클러스터(108) 내 한 노드 카메라(106)로부터 동일한 클러스터(108) 내 다른 노드 카메라(106)로 경로가 배정되기도 한다.
부팅
본 실시 예에서, 클러스터 멤버쉽 정보는 노드 각각에서 지속적으로 저장된다. 노드 하나가 리부팅되는 때, 이는 리부팅 이전에 멤버이었던 클러스터(108)에 자동으로 다시 합류한다. 이는 도 9에 도시된 예시적인 방법(900)에서 도시된다. 블록(806)을 수행한 뒤에, 클러스터(108) 내 한 노드가 리부팅된다(블록 902). 리부팅이 있은 후, 이 같은 노드가 리부팅 이전에 멤벙이었던 클러스터(108)를 식별하는 지속적으로 저장된 클러스터 멤버쉽 정보에 접근하며, 뒤이어서 블록(808)으로 되돌아 가기 전에 이 같은 클러스터(108)에 다시 합류한다(블록 906). 리부팅 후 노드가 자동으로 클러스터(108)에 다시 합류하도록 하는 것은 서버 하나 이상의 재 시동 후 시스템(100)이 리커버하는 데 도움이 된다. 노드 각각이 컨시스턴시 정보를 지속적으로 저장하기 때문에, 클러스터(108)를 다시 합류하면, 노드가 클러스터(108)를 마지막으로 떠난 이래로 변경된 컨시스턴시 정보만이 다시 동기화되며, 이에 의해 대역폭을 저장한다.
일정 예시적 실시 예가 도시되지만, 도시되지 않은 선택적인 실시가 가능하다. 예를 들면, 도시된 실시 예에서, 노드 카메라(106) 그리고 비-노드 카메라(114)는 서로 명백히 구분되지만, 선택적 실시 예에서(도시되지 않았지만) 싱글 카메라가 동시에 노드 카메라이고 비-노드 카메라이기도 하다. 예를 들면, 도 1에서 제1 카메라(106a)는 제3 클러스터(108c)의 멤버인 노드이고; 그러나, 제1 카메라(106a)가 제5 서버(104e)에 직접 연결된다면 그러나 제3 클러스터(108c)에 대한 클러스터 멤버쉽 정보만을 지닌다면, 제1 카메라(106a)는 제3 클러스터(108c) 멤버로 남아있을 것이며 동시에 제5 서버(104e) 관점으로부터 비-노드 카메라(114)로서 작용할 것이다.
이전 실시 예에서 사용된 처리기는, 예를 들면, 마이크로프로세서, 마이크로컨트롤러, 프로그램가능 논리 컨트롤러, 필드 프로그램가능 게이트 어레이, 또는 응용 주문형 집적회로일 수 있다. 컴퓨터 판독가능 매체의 예는 일시적이지 않으며 CD-ROM 그리고 DVD와 같은 디스크-기반 미디어, 하드 드라이브 그리고 다른 형태의 자기 디스크 저장장치와 같은 자기 미디어, 플래시 미디어, 랜덤 액세스 메모리 그리고 판독전용 메모리와 같은 반도체 기반 미디어를 포함한다.
본원 명세서에서 설명된 특징 또는 실시 예 일부는 본원 명세서 내에서 설명된 다른 특징 또는 실시 예 일부와 함께 실시되거나 결합될 수 있다.
설명의 편의를 위해, 예시적인 상기 실시 예는 다양하게 상호 연결된 기능 블록들로서 설명된다. 그러나, 이는 필요적인 것이 아니며, 이들 기능 블록이 등가적으로 명확하지 않은 경계를 갖는 싱글 논리 장치, 프로그램 또는 동작 내로 집합되는 경우가 있을 수 있다. 어찌 되었든, 이 같은 기능 블록은 스스로 실현되거나, 다른 하드웨어 또는 소프트웨어와 조합하여 실현될 수 있다.
특정 실시 예가 이제까지 설명되었으나, 다른 실시 예가 가능하며 본 발명에서 포함될 수 있다. 당업자라면 앞선 실시 예에 대한 수정 및 조정이 가능 하다는 것을 이해할 것이다.

Claims (57)

  1. 복수의 서버 노드를 포함하는 시설 보안 시스템 내 데이터를 공유하기 위한 방법에 있어서, 상기 방법은,
    (a) 서버 노드들 중 하나인 제1 노드를 사용하여, 서버 노드들 중 하나인 제2 노드를 식별하는 노드 식별자를 액세스하는 단계 - 상기 제1 노드 및 제2 노드는 서버 클러스터의 적어도 일부를 포함하며, 상기 노드 식별자는 상기 서버 클러스터 내 모든 서버 노드를 모두 식별하고 상기 모든 서버 노드에 의해 액세스 가능한 클러스터 멤버쉽 정보 중 적어도 일부를 포함하고, 서버 클러스터 내 서버 노드 각각이 자신의 버전의 클러스터 멤버쉽 정보를 로컬하게 지속 저장(persistently store)함 - ,
    (b) 제1 노드로부터 제2 노드로 데이터를 전송하는 단계, 및
    (c) 새로운 서버 노드를 서버 클러스터에 추가하는 단계
    를 포함하며, 상기 새로운 서버 노드를 서버 클러스터에 추가하는 단계는
    (i) 새로운 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보를 이미 서버 클러스터의 일부인 서버 노드들 중 하나인 멤버쉽 컨트롤 노드에 저장된 버전의 클러스터 멤버쉽 정보와 교환하는 단계, 및
    (ii) 새로운 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보를 상기 새로운 서버 노드가 클러스터에 합류하기 전에 클러스터 내 모든 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보와 동기화하는 단계
    를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  2. 제1항에 있어서, 상기 서버 클러스터는 적어도 3개의 서버 노드를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  3. 제1항에 있어서, 상기 서버 노드는 카메라, 네트워크 비디오 레코더, 및 액세스 컨트롤 서버를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  4. 제1항에 있어서,
    (a) 제2 노드를 사용하여, 제1 노드를 식별하는 노드 식별자를 액세스하는 단계, 및
    (b) 제2 노드로부터 제1 노드로 추가 데이터를 전송하는 단계를 더 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  5. 제1항에 있어서, 클러스터 멤버쉽 정보는,
    (a) 서버 클러스터 내 서버 노드 각각을 고유하게 식별하는 노드 식별자, 및
    (b) 서버 노드가 속하는 서버 클러스터를 고유하게 식별하는 클러스터 식별자를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  6. 삭제
  7. 제1항에 있어서,
    (a) 서버 클러스터 내 서버 노드 중 하나를 재 부팅하는 단계, 및
    (b) 재 부팅된 서버 노드가 온라인 상태로 돌아가면, 상기 재 부팅된 서버 노드를 사용하여,
    (i) 서버 클러스터를 식별하는 클러스터 식별자를 액세스하는 단계, 및
    (ii) 서버 클러스터에 자동으로 재합류하는 단계
    를 포함하는 방법을 수행하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  8. 삭제
  9. 제1항에 있어서, 데이터를 전송하는 단계는
    (a) 제 노드를 사용하여 노드 식별자로부터 제2 노드에 대한 통신 종단점(endpoint)을 조사(look up)하는 단계, 및
    (b) 제1 노드로부터 통신 종단점으로 데이터를 전송하는 단계
    를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  10. 제9항에 있어서, 상기 통신 종단점 및 노드 식별자는 서버 클러스터 내 모든 서버 노드에 대한 노드 식별자를 대응하는 통신 종단점과 관련시키는 네트워크 맵 내 엔트리를 포함하며, 서버 클러스터 내 서버 노드 각각은 자신의 버전의 네트워크 맵을 로컬하게 지속 저장(persistently store)하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  11. 제10항에 있어서, 상기 네트워크 맵은 중앙 집중 서버를 이용하지 않고 서버 클러스터 내 서버 노드 각각이 서버 클러스터 내 나머지 서버 노드로 데이터를 전송하는 것을 가능하게 하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  12. 제1항에 있어서, 데이터는 제1 노드에 로컬하게 저장되며, 제1 노드를 이용해 데이터를 수정하는 단계를 더 포함하고, 제1 노드로부터 제2 노드로 데이터를 전송하는 단계는 제1 노드가 데이터를 수정한 후 제1 노드 및 제2 노드 상의 데이터를 동기화하는 단계를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  13. 제12항에 있어서, 데이터는 인과성 버전 메커니즘(causality versioning mechanism)을 사용하여 발생된 버전 정보를 포함하고, 제1 노드와 제2 노드에 데이터의 상이한 버전이 저장되며, 데이터를 동기화하는 단계는 제1 노드와 제2 노드에 저장된 버전 정보들을 비교하는 단계 및 제1 노드와 제2 노드 모두에서 더 최근 버전 정보 지시자를 갖는 데이터를 채택하는 단계를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  14. 제1항에 있어서, 데이터는 제1 노드의 노드 식별자, 제1 노드의 심장박동 상태 정보(heartbeat state information), 제1 노드의 애플리케이션 상태 정보(application state information), 및 버전 정보를 포함하며, 데이터를 전송하는 단계는 클러스터 내 서버 노드 쌍 간에 데이터 교환을 수행하는 가십 프로토콜(gossip protocol)을 이용해 서버 클러스터 내 모든 서버 노드로 데이터를 퍼뜨리는 단계를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  15. 제14항에 있어서, 데이터는 서버 클러스터 내 모든 서버 노드로 주기적으로 퍼뜨려지는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  16. 제14항에 있어서, 데이터는 제1 노드가 클러스터에 합류될 때 제2 노드로 전송되는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  17. 제14항에 있어서, 서버 클러스터 내 한 서브 노드에 의해 수정될 수 있는 엔트리가 있는 도메인이 서버 클러스터 내 노드 각각에 로컬하게 저장되고,
    버전 정보가 서버 노드 중 어느 것이 엔트리 중 가장 최근 수정된 것을 가지는지를 가리키도록, 인과성 버전 메커니즘(causality versioning mechanism)을 이용해 버전 정보를 생성하는 단계를 더 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  18. 제17항에 있어서, 애플리케이션 상태 정보는 도메인 내 모든 엔트리를 해시(hashing)함으로써 생성된 최상 레벨 해시(top-level hashes)를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  19. 제18항에 있어서,
    (a) 제2 노드를 사용하여, 상기 최상 레벨 해시를 제2 노드에 로컬하게 저장된 대응하는 도메인의 버전을 해시함으로써 생성된 최상 레벨 해시와 비교하는 단계, 및
    (b) 최상 레벨 해시들이 상이한 경우, 버전 정보를 사용하여 제1 노드와 제1 노드 모두 상의 도메인들을 동기화하는 단계를 더 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  20. 제14항에 있어서, 제1 노드에 의해서만 수정될 수 있는 상태 엔트리가 제1 노드에 로컬하게 저장되며, 버전 정보는 제1 노드가 상태 엔트리를 수정할 때마다 증분시킨 버전 번호를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  21. 제20항에 있어서, 애플리케이션 상태 정보는 상태 엔트리를 식별하는 상태 엔티티 식별자와 버전 번호를 포함하는 상태 엔티티 쌍을 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  22. 제21항에 있어서,
    (a) 제2 노드를 사용하여, 제1 노드로부터 수신된 버전 번호를 제2 노드에 로컬하게 저장된 대응하는 상태 엔트리의 버전 번호와 비교하는 단계, 및
    (b) 버전 번호들이 상이한 경우, 제1 노드에 로컬하게 저장된 상태 엔트리로 제2 노드에 로컬하게 저장된 상태 엔트리를 업데이트하는 단계를 더 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  23. 제22항에 있어서, 상태 엔트리를 업데이트하는 단계는 제1 노드로부터 제2 노드로, 상태 엔트리와 동시에 수정된 제1 노드에 로컬하게 저장된 추가 상태 엔트리를 전송하는 단계를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  24. 제1항에 있어서, 제1 노드 및 제2 노드는, 제1 노드는 그룹 내 모든 서버 노드로 완전 순서화된 방식으로(in totally ordered manner) 데이터를 전송할 수 있는 클러스터 내 서브 노드의 그룹 중 적어도 일부를 포함하고, 데이터를 전송하는 단계는 제1 노드가 그룹 내 모든 서버 노드로 데이터를 전송하는 단계를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  25. 제24항에 있어서, 데이터는 시설 보안 시스템의 실행 시간 중에 생성되는 비지속성(non-persistent)데이터를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  26. 제1항에 있어서, 데이터는 서버 클러스터 내 서버 노드들 중 또 다른 하나로부터, 제1 노드를 통해, 제2 노드로 스트리밍되는 스트리밍 비디오를 포함하는, 시설 보안 시스템 내 데이터를 공유하기 위한 방법.
  27. 제1 노드 및 제2 노드를 포함하는 복수의 서버 노드를 포함하는 시설 보안 시스템으로서, 상기 제1 노드는 지시(statement) 및 명령(instruction)이 인코딩된 컴퓨터 판독형 매체에 통신 가능하게 연결된 프로세서를 포함하며, 상기 지시 및 명령은 상기 프로세서로 하여금,
    (a) 제2 노드를 식별하는 노드 식별자를 액세스하는 단계 - 제1 노드 및 제2 노드는 서버 클러스터의 적어도 일부를 포함하며, 상기 노드 식별자는 서버 클러스터 내 모든 서버 노드를 식별하고 상기 모든 서버 노드에 의해 액세스 가능한 클러스터 멤버쉽 정보 중 적어도 일부를 포함하고, 서버 클러스터 내 서버 노드 각각이 자신의 버전의 클러스터 멤버쉽 정보를 로컬하게 지속 저장(persistently store)함 - ,
    (b) 제2 노드로 데이터를 전송하는 단계, 및
    (c) 새로운 서버 노드를 서버 클러스터에 추가하는 단계
    를 포함하는 방법을 수행하게 하며,
    상기 새로운 서버 노드를 서버 클러스터에 추가하는 단계는
    (i) 새로운 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보를 이미 서버 클러스터의 일부인 서버 노드들 중 하나인 멤버쉽 컨트롤 노드에 저장된 버전의 클러스터 멤버쉽 정보와 교환하는 단계, 및
    (ii) 새로운 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보를 상기 새로운 서버 노드가 클러스터에 합류하기 전에 클러스터 내 모든 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보와 동기화하는 단계
    를 포함하는, 시설 보안 시스템.
  28. 지시 및 명령이 인코딩된 비-일시적 컴퓨터 판독형 매체로서, 상기 지시 및 명령은 프로세서로 하여금 복수의 서버 노드를 포함하는 시설 보안 시스템에서 데이터를 공유하기 위한 방법을 수행하게 하며, 상기 방법은
    (a) 서버 노드들 중 하나인 제1 노드를 사용하여, 서버 노드들 중 하나인 제2 노드를 식별하는 노드 식별자를 액세스하는 단계 - 상기 제1 노드 및 제2 노드는 서버 클러스터의 적어도 일부를 포함하며, 상기 노드 식별자는 상기 서버 클러스터 내 모든 서버 노드를 모두 식별하고 상기 모든 서버 노드에 의해 액세스 가능한 클러스터 멤버쉽 정보 중 적어도 일부를 포함하고, 서버 클러스터 내 서버 노드 각각이 자신의 버전의 클러스터 멤버쉽 정보를 로컬하게 지속 저장(persistently store)함 - ,
    (b) 제1 노드로부터 제2 노드로 데이터를 전송하는 단계, 및
    (c) 새로운 서버 노드를 서버 클러스터에 추가하는 단계
    를 포함하며,
    상기 새로운 서버 노드를 서버 클러스터에 추가하는 단계는
    (i) 새로운 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보를 이미 서버 클러스터의 일부인 서버 노드들 중 하나인 멤버쉽 컨트롤 노드에 저장된 버전의 클러스터 멤버쉽 정보와 교환하는 단계, 및
    (ii) 새로운 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보를 상기 새로운 서버 노드가 클러스터에 합류하기 전에 클러스터 내 모든 서버 노드에 저장된 버전의 클러스터 멤버쉽 정보와 동기화하는 단계
    를 포함하는, 비-일시적 컴퓨터 판독형 매체.





  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
KR1020157008926A 2012-09-07 2013-09-06 멀티플 서버 노드를 갖는 시설 보안시스템 KR102108595B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/607,447 2012-09-07
US13/607,447 US10454997B2 (en) 2012-09-07 2012-09-07 Distributed physical security system
PCT/CA2013/050690 WO2014036656A1 (en) 2012-09-07 2013-09-06 Physical security system having multiple server nodes

Publications (2)

Publication Number Publication Date
KR20150058280A KR20150058280A (ko) 2015-05-28
KR102108595B1 true KR102108595B1 (ko) 2020-05-08

Family

ID=50234512

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157008926A KR102108595B1 (ko) 2012-09-07 2013-09-06 멀티플 서버 노드를 갖는 시설 보안시스템

Country Status (19)

Country Link
US (2) US10454997B2 (ko)
EP (1) EP2893669B1 (ko)
JP (1) JP6500289B2 (ko)
KR (1) KR102108595B1 (ko)
CN (2) CN110598444B (ko)
AU (1) AU2013312982B2 (ko)
BR (1) BR112015004429B1 (ko)
CA (1) CA2883662C (ko)
HK (1) HK1212118A1 (ko)
IL (1) IL237439B (ko)
IN (1) IN2015DN01665A (ko)
MX (1) MX352801B (ko)
MY (1) MY181255A (ko)
NZ (1) NZ705517A (ko)
RU (1) RU2653294C2 (ko)
SA (1) SA515360089B1 (ko)
SG (1) SG11201501489UA (ko)
WO (1) WO2014036656A1 (ko)
ZA (1) ZA201501340B (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10547693B2 (en) * 2012-09-07 2020-01-28 Avigilon Corporation Security device capability discovery and device selection
US9158528B2 (en) * 2012-10-02 2015-10-13 Oracle International Corporation Forcibly completing upgrade of distributed software in presence of failures
US10181974B2 (en) * 2012-12-04 2019-01-15 Genesys Telecommunications Laboratories, Inc. Distributed agent reservation in SIP cluster
US9369670B2 (en) * 2012-12-19 2016-06-14 Rabbit, Inc. Audio video streaming system and method
CN104010160B (zh) * 2013-02-25 2017-10-13 杭州海康威视系统技术有限公司 视频监控系统的干线管理方法及其装置
US9015328B2 (en) * 2013-03-07 2015-04-21 Fiserv, Inc. Single sign-on processing for associated mobile applications
US9641498B2 (en) 2013-03-07 2017-05-02 Fiserv, Inc. Single sign-on processing for associated mobile applications
US10038626B2 (en) * 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US9852230B2 (en) * 2013-06-29 2017-12-26 Google Llc Asynchronous message passing for large graph clustering
US20150288604A1 (en) 2014-04-02 2015-10-08 Tyco Fire & Security Gmbh Sensor Network Gateway
US9792129B2 (en) * 2014-02-28 2017-10-17 Tyco Fire & Security Gmbh Network range extender with multi-RF radio support for plurality of network interfaces
US10878323B2 (en) 2014-02-28 2020-12-29 Tyco Fire & Security Gmbh Rules engine combined with message routing
WO2015139246A1 (zh) * 2014-03-19 2015-09-24 华为终端有限公司 一种应用数据同步的方法及装置
EP3138085B1 (en) * 2014-04-30 2021-01-27 Cubic Corporation Failsafe operation for unmanned gatelines
US9026840B1 (en) * 2014-09-09 2015-05-05 Belkin International, Inc. Coordinated and device-distributed detection of abnormal network device operation
US10063439B2 (en) 2014-09-09 2018-08-28 Belkin International Inc. Coordinated and device-distributed detection of abnormal network device operation
DE112015004699B4 (de) 2014-10-15 2024-05-29 Motorola Solutions, Inc. Über mehrere Sites verteiltes Sicherheitssystem
US9959109B2 (en) 2015-04-10 2018-05-01 Avigilon Corporation Upgrading a physical security system having multiple server nodes
US10362106B2 (en) 2015-07-21 2019-07-23 Cisco Technology, Inc. Adaptive gossip protocol
WO2017045079A1 (en) * 2015-09-18 2017-03-23 Avigilon Corporation Physical security system having multiple server nodes configured to implement a conditionally triggered rule
US10095726B2 (en) * 2016-07-22 2018-10-09 Ebay Inc. Multiple workspace database engine
US10346191B2 (en) * 2016-12-02 2019-07-09 Wmware, Inc. System and method for managing size of clusters in a computing environment
CN113766035B (zh) 2017-03-28 2023-05-23 创新先进技术有限公司 一种业务受理及共识的方法及装置
EP3465578B1 (en) * 2017-06-07 2019-07-24 Nchain Holdings Limited Methods and systems to establish trusted peer-to-peer communications between nodes in a blockchain network
DK3777047T3 (da) * 2018-03-30 2023-01-09 V2Com S A System og fremgangsmåde til ressourceforvaltning og ressourceallokering i et selvoptimerende netværk af heterogene behandlingsknudepunkter
RU2703154C1 (ru) * 2018-12-06 2019-10-15 Общество с ограниченной ответственностью "Ай Ти Ви групп" Система и способ синхронизации по времени воспроизведения данных от различных устройств
KR102018151B1 (ko) * 2018-12-12 2019-09-06 대한민국 영상기준 재난상황 관리시스템
DE102019208770A1 (de) * 2019-06-17 2020-12-17 Siemens Mobility GmbH Verfahren und Vorrichtung für ein Schienenfahrzeug
US11159610B2 (en) * 2019-10-10 2021-10-26 Dell Products, L.P. Cluster formation offload using remote access controller group manager
CN110990329B (zh) * 2019-12-09 2023-12-01 杭州趣链科技有限公司 一种联邦计算高可用方法、设备及介质
US11593234B2 (en) 2020-01-16 2023-02-28 Vmware, Inc. Cloud restart for VM failover and capacity management
US11347521B2 (en) * 2020-01-16 2022-05-31 Vmware, Inc. Cloud restart for non-critical performance virtual machines
US11722589B2 (en) * 2020-04-08 2023-08-08 Huawei Technologies Co., Ltd. Rapid ledger consensus system and method for distributed wireless networks
US11343544B2 (en) 2020-06-29 2022-05-24 Seagate Technology Llc Selective use of cameras in a distributed surveillance system
US11503381B2 (en) 2020-06-29 2022-11-15 Seagate Technology Llc Distributed surveillance system with abstracted functional layers
US11463739B2 (en) 2020-06-29 2022-10-04 Seagate Technology Llc Parameter based load balancing in a distributed surveillance system
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质
CN112910981B (zh) * 2021-01-27 2022-07-26 联想(北京)有限公司 一种控制方法及装置
US11595321B2 (en) 2021-07-06 2023-02-28 Vmware, Inc. Cluster capacity management for hyper converged infrastructure updates
US11914686B2 (en) 2021-10-15 2024-02-27 Pure Storage, Inc. Storage node security statement management in a distributed storage cluster
CN114363357B (zh) * 2021-12-28 2024-01-19 上海沄熹科技有限公司 一种基于Gossip的分布式数据库网络连接管理方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001521222A (ja) * 1997-10-21 2001-11-06 サン・マイクロシステムズ・インコーポレーテッド 分散型コンピュータ・システムにおいてクラスタ・メンバーシップを決定する方法
GB2368683A (en) * 2000-05-31 2002-05-08 Ibm Managing a clustered computing environment
US20110026513A1 (en) 2009-07-31 2011-02-03 Chien-Wen Tien Method and system for synchronizing a data base at a plurality of nodes in an ad hoc network
US20110231524A1 (en) * 2010-03-17 2011-09-22 Hitachi, Ltd. Metadata management method for nas global namespace design
US20120259912A1 (en) 2011-04-07 2012-10-11 Microsoft Corporation Cluster unique identifier
US20130073717A1 (en) 2011-09-15 2013-03-21 International Business Machines Corporation Optimizing clustered network attached storage (nas) usage

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601087B1 (en) * 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
US6801949B1 (en) * 1999-04-12 2004-10-05 Rainfinity, Inc. Distributed server cluster with graphical user interface
US6564261B1 (en) * 1999-05-10 2003-05-13 Telefonaktiebolaget Lm Ericsson (Publ) Distributed system to intelligently establish sessions between anonymous users over various networks
US7587467B2 (en) * 1999-12-02 2009-09-08 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US20070005809A1 (en) * 2001-09-14 2007-01-04 Youichi Kobayashi Network information processing system and network information processing method
US7197632B2 (en) 2003-04-29 2007-03-27 International Business Machines Corporation Storage system and cluster maintenance
US7483374B2 (en) * 2003-08-05 2009-01-27 Scalent Systems, Inc. Method and apparatus for achieving dynamic capacity and high availability in multi-stage data networks using adaptive flow-based routing
TWI246033B (en) * 2004-06-30 2005-12-21 Unisvr Global Information Tech Hierarchical method for managing and displaying images for network monitoring
US8121148B2 (en) 2005-03-24 2012-02-21 Ixia Protocol stack using shared memory
US7877443B2 (en) * 2005-05-12 2011-01-25 International Business Machines Corporation Method, system, and computer program product for web conference participant display render acknowledgement
US8195976B2 (en) * 2005-06-29 2012-06-05 International Business Machines Corporation Fault-tolerance and fault-containment models for zoning clustered application silos into continuous availability and high availability zones in clustered systems during recovery and maintenance
US7512707B1 (en) * 2005-11-03 2009-03-31 Adobe Systems Incorporated Load balancing of server clusters
US9047310B2 (en) * 2006-02-22 2015-06-02 Microsoft Technology Licensing, Llc Reliable, efficient peer-to-peer storage
US8601112B1 (en) * 2006-03-14 2013-12-03 Amazon Technologies, Inc. Method and system for collecting and analyzing time-series data
US7895639B2 (en) * 2006-05-04 2011-02-22 Citrix Online, Llc Methods and systems for specifying and enforcing access control in a distributed system
US20070285501A1 (en) * 2006-06-09 2007-12-13 Wai Yim Videoconference System Clustering
US8054241B2 (en) * 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
US8531521B2 (en) * 2006-10-06 2013-09-10 Sightlogix, Inc. Methods and apparatus related to improved surveillance using a smart camera
US8094585B2 (en) 2006-10-31 2012-01-10 International Business Machines Corporation Membership management of network nodes
CN101188569B (zh) * 2006-11-16 2011-05-04 饶大平 在网络上构建数据量子空间的方法及分布式文件存储系统
CA2722300C (en) * 2007-04-25 2016-06-28 Miovision Technologies Incorporated Method and system for analyzing multimedia content
US20130276061A1 (en) * 2007-09-05 2013-10-17 Gopi Krishna Chebiyyam System, method, and computer program product for preventing access to data with respect to a data access attempt associated with a remote data sharing session
US8554865B2 (en) * 2007-09-21 2013-10-08 Honeywell International Inc. System and method for remotely administering and synchronizing a clustered group of access control panels
US9589250B2 (en) * 2008-01-11 2017-03-07 Oracle International Corporation System and method for asset registration workflows utilizing an eventing infrastructure in a metadata repository
US7996360B2 (en) 2008-06-27 2011-08-09 International Business Machines Corporation Coordinating updates to replicated data
US7840730B2 (en) * 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US9170953B2 (en) * 2008-09-18 2015-10-27 Avere Systems, Inc. System and method for storing data in clusters located remotely from each other
US8831090B2 (en) 2008-11-18 2014-09-09 Avigilon Corporation Method, system and apparatus for image capture, analysis and transmission
US20100161758A1 (en) * 2008-12-22 2010-06-24 Mostafa Tofigh Method and apparatus for enabling content sharing among endpoint devices
WO2010099575A1 (en) * 2009-03-04 2010-09-10 Honeywell International Inc. Systems and methods for managing video data
US20100312879A1 (en) * 2009-06-09 2010-12-09 International Business Machines Corporation Plug-in provisioning integration in a clustered environment
US20110103391A1 (en) * 2009-10-30 2011-05-05 Smooth-Stone, Inc. C/O Barry Evans System and method for high-performance, low-power data center interconnect fabric
CA2824754A1 (en) * 2009-09-26 2011-03-31 Disternet Technology Inc. System and method for micro-cloud computing
US9690818B2 (en) * 2009-12-01 2017-06-27 Sybase, Inc. On demand locking of retained resources in a distributed shared disk cluster environment
CN101729880B (zh) * 2009-12-14 2012-01-18 中国电信股份有限公司 基于sip的网络视频监控方法和系统
US20120079092A1 (en) * 2009-12-28 2012-03-29 Telefonaktiebolaget L M Ericsson (Publ) Management of data flows between user equipment nodes and clusters of networked resource nodes
CN101873237B (zh) 2010-06-13 2012-02-22 用友软件股份有限公司 动态维护集群中的成员服务器的方法和系统
CN102035672B (zh) * 2010-11-26 2013-03-27 中国科学院声学研究所 一种基于层次化协作多主体系统的分布式网络测量方法
CN102025550A (zh) 2010-12-20 2011-04-20 中兴通讯股份有限公司 一种分布式集群中数据管理的系统和方法
US20120158894A1 (en) * 2010-12-21 2012-06-21 Desgagne Yves Video stream distribution
US8843581B2 (en) * 2011-04-26 2014-09-23 Oracle International Corporation Live object pattern for use with a distributed cache
US20120314127A1 (en) * 2011-06-09 2012-12-13 Inayat Syed Provisioning network resources responsive to video requirements of user equipment nodes
US9251481B2 (en) * 2011-06-13 2016-02-02 Accenture Global Services Limited Distributed metering and monitoring system
US20130113928A1 (en) * 2011-11-08 2013-05-09 Joseph Feldman Computerized System and Method for Monitoring a Door of a Facility from Afar
US20130132848A1 (en) * 2011-11-18 2013-05-23 Apple Inc. Application interaction via multiple user interfaces
US8675672B1 (en) * 2011-12-30 2014-03-18 Emc Corporation Hierarchical cluster tree overlay network
US9515869B2 (en) * 2012-01-18 2016-12-06 Dh2I Company Systems and methods for server cluster application virtualization
US9049349B2 (en) * 2012-05-16 2015-06-02 Cisco Technology, Inc. System and method for video recording and retention in a network
US20130307989A1 (en) * 2012-05-20 2013-11-21 Transportation Security Enterprises, Inc. (Tse) System and method for real-time data capture and packet transmission using a layer 2 wireless mesh network
US9338410B2 (en) * 2012-06-07 2016-05-10 Verizon Patent And Licensing Inc. Remote streaming
US9390055B2 (en) * 2012-07-17 2016-07-12 Coho Data, Inc. Systems, methods and devices for integrating end-host and network resources in distributed memory
US9681103B2 (en) * 2012-11-13 2017-06-13 International Business Machines Corporation Distributed control of a heterogeneous video surveillance network

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001521222A (ja) * 1997-10-21 2001-11-06 サン・マイクロシステムズ・インコーポレーテッド 分散型コンピュータ・システムにおいてクラスタ・メンバーシップを決定する方法
GB2368683A (en) * 2000-05-31 2002-05-08 Ibm Managing a clustered computing environment
US20110026513A1 (en) 2009-07-31 2011-02-03 Chien-Wen Tien Method and system for synchronizing a data base at a plurality of nodes in an ad hoc network
US20110231524A1 (en) * 2010-03-17 2011-09-22 Hitachi, Ltd. Metadata management method for nas global namespace design
US20120259912A1 (en) 2011-04-07 2012-10-11 Microsoft Corporation Cluster unique identifier
US20130073717A1 (en) 2011-09-15 2013-03-21 International Business Machines Corporation Optimizing clustered network attached storage (nas) usage

Also Published As

Publication number Publication date
KR20150058280A (ko) 2015-05-28
BR112015004429A2 (pt) 2017-07-04
SA515360089B1 (ar) 2016-09-18
RU2015106840A (ru) 2016-10-27
EP2893669A4 (en) 2016-07-27
CN110598444B (zh) 2023-07-07
EP2893669A1 (en) 2015-07-15
JP6500289B2 (ja) 2019-04-17
US10454997B2 (en) 2019-10-22
US20140222892A1 (en) 2014-08-07
CN110598444A (zh) 2019-12-20
US9602582B2 (en) 2017-03-21
SG11201501489UA (en) 2015-03-30
IN2015DN01665A (ko) 2015-07-03
HK1212118A1 (en) 2016-06-03
ZA201501340B (en) 2019-11-27
CA2883662A1 (en) 2014-03-13
MX352801B (es) 2017-12-08
CA2883662C (en) 2020-12-15
AU2013312982A1 (en) 2015-03-19
WO2014036656A1 (en) 2014-03-13
EP2893669B1 (en) 2019-11-06
US20140074987A1 (en) 2014-03-13
MY181255A (en) 2020-12-21
JP2015535970A (ja) 2015-12-17
IL237439A0 (en) 2015-04-30
BR112015004429B1 (pt) 2022-10-11
MX2015002735A (es) 2015-09-23
NZ705517A (en) 2017-10-27
AU2013312982B2 (en) 2017-11-16
IL237439B (en) 2020-02-27
CN104813609A (zh) 2015-07-29
RU2653294C2 (ru) 2018-05-07

Similar Documents

Publication Publication Date Title
KR102108595B1 (ko) 멀티플 서버 노드를 갖는 시설 보안시스템
US10547693B2 (en) Security device capability discovery and device selection
US9959109B2 (en) Upgrading a physical security system having multiple server nodes
TWI704788B (zh) 經組態以實施一有條件觸發規則的具有多伺服器節點之實體安全系統
CA2964485C (en) Distributed security system over multiple sites
US8402122B2 (en) UPnP apparatus and method for providing UPnP network with multiple remote access service
RU2518194C2 (ru) Система видеонаблюдения с распределенными узлами и способ управления такой системой
TWI364218B (en) Real-time image monitoring and recording system and method
CN110462600A (zh) 用于联网媒体分发的系统、方法和设备
US9860128B2 (en) Automated command and discovery process for network communications

Legal Events

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