KR101762237B1 - 서비스 지향 아키텍쳐 내에서 능력을 모니터링하는 방법 - Google Patents

서비스 지향 아키텍쳐 내에서 능력을 모니터링하는 방법 Download PDF

Info

Publication number
KR101762237B1
KR101762237B1 KR1020150036149A KR20150036149A KR101762237B1 KR 101762237 B1 KR101762237 B1 KR 101762237B1 KR 1020150036149 A KR1020150036149 A KR 1020150036149A KR 20150036149 A KR20150036149 A KR 20150036149A KR 101762237 B1 KR101762237 B1 KR 101762237B1
Authority
KR
South Korea
Prior art keywords
service
node
registry
services
service registry
Prior art date
Application number
KR1020150036149A
Other languages
English (en)
Other versions
KR20150108768A (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 KR20150108768A publication Critical patent/KR20150108768A/ko
Application granted granted Critical
Publication of KR101762237B1 publication Critical patent/KR101762237B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0604Management of faults, events, alarms or notifications using filtering, e.g. reduction of information by using priority, element types, position or time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • H04L41/5012Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF] determining service availability, e.g. which services are available at a certain point in time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

시스템은, 시스템 내의 하나 또는 그 이상의 제1 노드 내에서 가용한 서비스들의 제1 리스트를 포함하는 제1 서비스 레지스트리와, 시스템 내의 하나 또는 그 이상의 제2 노드 내에서 가용한 서비스들의 제2 리스트를 포함하는 제2 서비스 레지스트리를 포함하는 제2 서비스 레지스트리를 포함하되, 제2 서비스 레지스트리는 제1 서비스 레지스트리와 연결된다.

Description

서비스 지향 아키텍쳐 내에서 능력을 모니터링하는 방법{CAPABILITY MONITORING IN A SERVICE ORIENTED ARCHITECTURE}
본 발명은 전체적으로 서비스 지향 아키텍쳐 시스템 내에서 능력을 모니터링하는 것에 관련된다.
디바이스들의 네트워크는 네트워크에 걸쳐서 통신할 수 있고 일련의 다양한 서비스들을 제공하는 시스템의 일부를 형성할 수 있다. 상이한 디바이스들은 상이한 시점들에서 상이한 서비스들을 제공할 수 있고 시스템은 서비스들이 어떤 디바이스들에서 가용한 지를 지속적으로 파악하는 것(keep track)을 필요로 할 수 있다.
본 발명이 해결하고자 하는 과제는 서비스 지향 아키텍쳐 내에서 개선된 능력을 모니터링하는 방법을 제공하는 것이다.
일 태양에 따르면, 시스템은, 제1 서비스 레지스트리를 유지하도록 구성된 제1 로직으로서, 상기 제1 서비스 레지스트리는 상기 시스템의 하나 또는 그 이상의 제1 노드에서 가용한 서비스들의 제1 리스트를 포함하는, 제1 로직; 제2 서비스 레지스트리를 유지하도록 구성된 제2 로직으로서, 상기 제2 서비스 레지스트리는 상기 시스템의 하나 또는 그 이상의 제2 노드에서 가용한 서비스들의 제2 리스트를 포함하고 상기 제2 서비스 레지스트리는 상기 제1 서비스 레지스트리에 연결되는, 제2 로직; 서비스 매니저를 구현하는 제3 로직을 포함하되, 제3 로직은: 상기 시스템의 능력을 관리하고-상기 능력은 하나 또는 그 이상의 서비스들의 세트를 통해 실현됨-; 구독 요청을 상기 제1 서비스 레지스트리에 전송하고-상기 구독 요청은 상기 하나 또는 그 이상의 서비스들의 세트 중 하나 이상의 서비스와 관련된 변경을 상기 서비스 매니저에게 알려주게 하는 명령을 포함함-; 상기 제1 서비스 레지스트리에 연결하고; 상기 제1 서비스 레지스트리로부터, 상기 제2 서비스 레지스트리에 포함된 서비스들의 제2 리스트 내의 변경을 나타내는 통지를 수신하고; 및 상기 통지를 수신하는 것에 응답하여, 능력에 대한 새로운 서비스의 배포를 시작하거나 상기 시스템 내의 새로운 서비스의 배포된 인스턴스의 위치를 알아내도록 구성된다.
이러한 시스템의 가능한 이점은, 특정 서비스들 및/또는 특정 서비스 프로퍼티들을 요구하는 능력(capability)이 많은 수의 디바이스들 및 서비스들을 갖는 동적(dynamic) 서비스 지향 아키텍쳐(Service Oriented Architecture, "SOA") 시스템 내에서 효율적으로 관리될 수 있는 것이며, 이는 처리 시간을 단축시키는 기술적 효과를 도출한다. 예를 들어, 시스템은, 서비스가 오프라인 상태가 되거나 다른 가용하지 않은 상태가 되거나, 또는 새로운 서비스가 시스템에 추가되는 것과 같은 변경들에 자동으로 반응할 수 있다. 이러한 시스템의 다른 가능한 이점은, 시스템이 분산되어 단일 지점에 의한 결함을 배제하는 것이다. 시스템은 앞서 기술된 이점들에 비해 더 적은 이점들, 상이한 이점들, 또는 추가적인 이점들을 포함할 수 있다.
또한, 통지는, 특정 서비스가 상기 제2 서비스 레지스트리로부터 삭제되었음을 나타내는 것; 특정 서비스가 상기 제2 서비스 레지스트리에 부가되었음을 나타내는 것; 또는 특정 서비스에 연관된 프로퍼티가 변경되었음을 나타내는 것; 중 하나 이상을 포함할 수 있다. 삭제된 서비스, 추가된 서비스, 또는 서비스 프로퍼티 내의 변경에 대한 통지들을 수신하는 것은 서비스 매니저가 능력에 연관된 서비스들 내의 변경에 반응하는 것을 가능하게 한다.
또한, 서비스 매니저는 구독 요청을 상기 제1 서비스 레지스트리에 전송하도록 추가적으로 구성될 수 있고, 여기서, 상기 구독 요청은 상기 하나 또는 그 이상의 서비스들의 세트 중 하나 이상의 서비스와 관련된 변경을 상기 서비스 매너지에게 알려주게 하는 명령을 포함하고; 제1 서비스 레지스트리는 구독 요청을 기록하고 구독 요청을 제2 서비스 레지스트리에 포워딩하도록 추가적으로 구성될 수 있고; 및 제2 서비스 레지스트리는 구독 요청을 기초로 구독 통지를 전송하도록 추가적으로 구성될 수 있다. 제1 서비스 레지스트리에 구독 요청을 전송하는 것은 서비스 매니저가, 서비스들의 상태(stauts)를 모니터링해야할 필요 없이 서비스들에 대한 업데이트를 수신하는 것을 가능하게 한다.
또한, 시스템의 하나 또는 그 이상의 제2 노드 중 하나 이상에서 탐지된 결함에 응답하여, 통지가 전송될 수 있다. 노드의 결함은 노드에 의해 호스팅된 서비스들이 가용하지 않게 되는 것을 초래할 수 있고, 결함에 응답하여 통지를 전송하는 것은 서비스 매니저에게 노드에 의해 호스팅되는 서비스들이 가용하지 않음을 경고할 수 있다.
또한, 서비스 매니저는, 통지를 수신하는 것에 응답하여 능력이 완전히 실현될 수 없음을 결정하고, 능력이 완전히 실현될 수 없음을 결정하는 것에 응답하여 관리자에게 경보를 전송하도록 추가적으로 구성될 수 있다. 관리자에게 경보를 전송하는 것은, 예를 들어, 능력에 의해 요구되는 서비스를 호스팅하는 예비 노드가 온라인 상태가 되게 함으로써, 관리자는 서비스 매니저가 능력을 실현할 수 있도록 하는 조치를 취할 수 있게 한다.
또한, 서비스 매니저는 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스의 위치를 알아내고, 시스템 내의 새로운 서비스의 배포된 인스턴스의 위치를 알아내는 것에 응답하여 위치를 알아낸 배포된 인스턴스를 능력에 연관시키도록 추가적으로 구성될 수 있다. 배포된 서비스 인스턴스의 위치를 알아내는 것은 다른 서비스의 인스턴스를 배포하는 데 추가적인 시스템 리소스를 소모함이 없이 서비스 매니저가 능력을 실현하는 것을 가능하게 할 수 있다.
또한, 서비스 매니저는 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스가 없음을 결정하고, 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스가 없음을 결정하는 것에 응답하여, 능력에 대한 새로운 서비스의 배포를 시작하도록 추가적으로 구성될 수 있다. 서비스의 인스턴스를 배포하는 것은 가용한 서비스의 배포된 인스턴스가 없을 때, 서비스 매니저가 능력을 실현하는 것을 가능하게 할 수 있다.
또한, 서비스 매니저는, 클라이언트로부터 능력에 대한 요청을 수신하고, 하나 또는 그 이상의 서비스들의 세트 중 특정한 하나가, 능력이 실현되는 곳을 통하여, 시스템 내에서 배포되지 않은 것을 결정하고, 제1 서비스 레지스트리 또는 제2 서비스 레지스트리 중 하나 이상으로부터 획득된 정보를 기초로 배포하는 노드를 선택하고, 수신된 요청을 기초로 선택된 배포하는 노드에게 하나 또는 그 이상의 서비스들의 세트 중 특정한 서비스를 배포하도록 명령하도록 추가적으로 구성될 수 있다. 배포하는 노드를 선택하는 것 및 배포하는 노드에게 서비스를 배포하도록 명령하는 것은, 능력에 대해 요구되는 서비스가 배포되고 시스템 내에서 가용하게 되는 것을 서비스 매니저가 보장하는 것을 가능하게 할 수 있다.
또한, 관리되는 능력에 대한 새로운 서비스를 배포하는 것을 시작할 때, 서비스 매니저는, 제2 서비스 레지스트리 내에 포함된 서비스들의 제2 리스트 내의 변경이 배포되지 않는 하나 또는 그 이상의 서비스의 세트 중 하나 이상의 서비스에 상응하는 지가 결정하고; 하나 또는 그 이상의 서비스들의 세트 중 하나 이상의 서비스가 가용한 특정 노드를 식별하고; 식별된 노드에게 특정 노드 내의 하나 또는 그 이상의 서비스들의 세트 중 하나 이상의 서비스를 배포하게 명령하도록 추가적으로 구성될 수 있다. 배포하는 노드를 선택하는 것 및 배포하는 노드에게 서비스를 배포하도록 명령하는 것은, 능력에 대해 요구되는 서비스가 배포되고 시스템 내에서 가용하게 되는 것을 서비스 매니저가 보장하는 것을 가능하게 할 수 있다.
다른 태양에 따르면, 컴퓨터 디바이스에 의해 수행되는 방법은, 컴퓨터 디바이스에 의해, 시스템의 능력을 실현하는 것에 연관된 서비스들의 리스트를 수신하는 단계; 컴퓨터 디바이스에 의해, 제1 서비스 레지스트리에, 상기 서비스들의 리스트 내의 서비스에 대한 구독 요청을 전송하는 단계; 컴퓨터 디바이스에 의해, 상기 제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 서비스에 연관된, 제1 서비스 통지를 수신하는 단계로서, 상기 제1 서비스 통지는 서비스가 제2 서비스 레지스트리에 연관된 제1 노드에서 배포 가능함을 나타내는 것 또는 서비스가 상기 시스템 내에서 배포되었음을 나타내는 것인, 제1 서비스 통지를 수신하는 단계; 및 컴퓨터 디바이스에 의해, 상기 제1 서비스 통지를 수신하는 단계에 응답하여, 상기 제1 노드에서 서비스에 대한 배포를 시작하거나 상기 시스템 내의 서비스의 배포된 인스턴스의 위치를 알아내는 단계를 포함할 수 있다.
이 방법의 가능한 이점은 특정 서비스 및/또는 특정 서비스 프로퍼티들을 요구하는 능력이 많은 수의 디바이스들 및 서비스들을 갖는 동적(dynamic) 서비스 지향 아키텍쳐(Service Oriented Architecture, "SOA") 시스템 내에서 효율적으로 관리될 수 있는 것이며, 이는 처리 시간을 단축시키는 기술적 효과를 도출한다. 예를 들어, 본 방법은, 서비스가 오프라인 상태가 되거나 다른 가용하지 않은 상태가 되거나, 또는 새로운 서비스가 시스템에 추가되는 것과 같은 변경들에 자동으로 반응할 수 있다. 이러한 방법의 다른 가능한 이점은, 시스템이 분산되어 단일 지점에 의한 결함을 배제하는 것이다. 본 방법은 앞서 기술된 이점들에 비해 더 적은 이점들, 상이한 이점들, 또는 추가적인 이점들을 포함할 수 있다.
또한, 제1 서비스 통지는 서비스가 상기 제2 서비스 레지스트리에 연관된 제1 노드에서 배포 가능함을 나타내는 것을 포함할 수 있고, 본 방법은, 제1 서비스 통지를 수신하는 단계에 응답하여, 제1 노드에서 서비스에 대한 배포를 시작하는 단계를 더 포함할 수 있다. 배포하는 노드를 선택하는 것 및 배포하는 노드에게 서비스를 배포하도록 명령하는 것은, 능력에 대해 요구되는 서비스가 배포되고 시스템 내에서 가용하게 되는 것을 서비스 매니저가 보장하는 것을 가능하게 할 수 있다.
또한, 제1 서비스 통지는 서비스가 시스템 내에서 배포되었음을 나타내는 것을 포함할 수 있고, 본 방법은, 제1 서비스 통지를 수신하는 단계에 응답하여, 시스템 내의 서비스의 배포된 인스턴스의 위치를 알아내는 단계를 더 포함할 수 있다. 배포된 서비스 인스턴스의 위치를 알아내는 것은 다른 서비스의 인스턴스를 배포하는 데 추가적인 시스템 리소스를 소모함이 없이 시스템이 능력을 실현하는 것을 가능하게 할 수 있다.
또한, 본 방법은, 제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 서비스에 연관된, 제2 서비스 통지를 수신하는 단계로서, 제2 서비스 통지는 서비스가 제2 서비스 레지스트리에 연관된 제1 노드에서 더 이상 가용하지 않음을 나타내는 것을 포함하는, 제2 서비스 통지를 수신하는 단계; 서비스가 배포가능한 제2 노드를 식별하는 단계; 및 제2 노드를 식별하는 것에 응답하여 제2 노드에서 서비스의 배포를 시작하는 단계를 더 포함할 수 있다. 제2 노드를 식별하는 것 및 제2 노드에서 서비스의 배포를 시작하는 것은, 클라이언트가 그 서비스를 사용하는 것에 방해됨이 없이, 제1 노드에서 사용가능 상태인 서비스가 중단된 이후에도 서비스가 계속 가용상태를 유지할 수 있는 것을 유발할 수 있다.
또한, 본 방법은, 제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 서비스에 연관된, 제2 서비스 통지를 수신하는 단계로서, 제2 서비스 통지는 서비스가 제2 서비스 레지스트리에 연관된 제1 노드에서 더 이상 배포 가능하지 않음을 나타내는 것을 포함하는, 제2 서비스 통지를 수신하는 단계; 서비스가 시스템 내의 어떠한 다른 노드에서도 가용하지 않음을 결정하는 단계; 및 서비스가 시스템 내의 어떠한 다른 노드에서도 가용하지 않음을 결정하는 단계에 응답하여, 관리자에게 경보를 전송하는 단계를 더 포함할 수 있다. 관리자에게 경보를 전송하는 것은, 예를 들어, 능력에 의해 요구되는 서비스를 호스팅하는 예비 노드가 온라인 상태가 되게 함으로써, 관리자는 시스템이 능력을 실현할 수 있도록 하는 조치를 취할 수 있게 한다.
또한, 본 방법은, 제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 서비스에 연관된, 제2 서비스 통지를 수신하는 단계로서, 제2 서비스 통지는 서비스가 서비스에 연관된 프로퍼티가 변경되었음을 나타내는 것을 포함하는, 제2 서비스 통지를 수신하는 단계; 서비스가 능력에 연관된 요건(requirements)를 더 이상 만족하지 못함을 결정하는 단계; 서비스가 능력에 연관된 요건을 더 이상 만족하지 못함을 결정하는 단계에 응답하여 제1 노드에서 서비스의 배포를 종료하는 단계; 서비스가 배포 가능한 제2 노드를 식별하는 단계; 및 제2 노드를 식별하는 단계에 응답하여 제2 노드에서 서비스의 배포를 시작하는 단계를 더 포함할 수 있다. 제2 노드를 식별하는 것 및 제2 노드에서 서비스의 배포를 시작하는 것은, 클라이언트가 그 서비스를 사용하는 것에 방해됨이 없이, 서비스 프로퍼티들이 제1 노드에서 변경된 이후에도 서비스가 계속 가용상태를 유지할 수 있는 것을 유발한다.
또한, 서비스에 연관된 프로퍼티는 메모리 용량; 서비스가 배포된 제1 노드의 처리 용량; 제1 노드의 위치; 제1 노드의 범위(coverage); 제1 노드에 연관된 환경 조건; 또는 제1 노드에 연관된 신호 품질의 측정치 중 하나 이상을 포함할 수 있다. 서비스들에 대한 이러한 프로퍼티들을 모니터링하는 것의 이점은, 이러한 프로퍼티들 중 하나를 구체화하는 요건을 갖는 능력이 실현되는 것을 가능하게 할 수 있는 것이다.
또한, 방법은 시스템 내의 요청하는 노드로부터, 특정 서비스에 대한 요청을 수신하는 단계; 시스템 내의 특정 서비스가 배포되지 않았음을 결정하는 단계; 제1 서비스 레지스트리 또는 제2 서비스 레지스트리 중 하나 이상을 기초로 배포하는 노드를 선택하는 단계; 및 수신된 요청을 기초로, 선택된 배포하는 노드 내의 특정 서비스를 배포하는 단계를 더 포함할 수 있다. 배포하는 노드를 선택하는 것 및 배포하는 노드에게 서비스를 배포하도록 명령하는 것은, 능력에 대해 요구되는 서비스가 배포되고 시스템 내에서 가용하게 되는 것을 보장함으로써 시스템에 이점을 제공할 수 있다.
다른 양태에 따르면, 시스템 내의 컴퓨터 디바이스에 의해 수행되는, 방법은, 컴퓨터 디바이스에 의해, 제1 서비스 레지스트리를 유지하는 단계로서, 제1 서비스 레지스트리는 시스템의 하나 또는 그 이상의 제1 노드 내에서 가용한 서비스들의 제1 리스트를 포함하는, 제1 서비스 레지스트리를 유지하는 단계; 컴퓨터 디바이스에 의해, 서비스 매니저로부터 구독 요청을 수신하는 단계로서, 구독 요청은 특정 서비스 내의 변경들에 관련된 통지들을 수신하는 요청을 포함하는, 서비스 매너지로부터 구독 요청을 수신하는 단계; 컴퓨터 디바이스에 의해, 상기 제1 서비스 레지스트리 내에서 상기 구독 요청을 기록하는 단계; 컴퓨터 디바이스에 의해, 제2 서비스 레지스트리에 상기 구독 요청을 전송하는 단계로서, 상기 제2 서비스 레지스트리는 상기 시스탬 내의 하나 또는 그 이상의 제2 노드 내에서 가용한 서비스들의 제2 리스트를 포함하고, 제2 서비스 레지스트리는 제1 서비스 레지스트리에 연결되는, 상기 구독 요청을 전송하는 단계;를 포함할 수 있다.
이러한 방법의 가능한 이점은, 구독 요청이 시스템 내의 모든 서비스 레지스트리에 배포되었음을 보장하는 것이다. 구독 요청을 시스템 내의 모드 서비스 레지스트리에 배포시키는 것은 서비스 매니저가 시스템 내의 어떠한 지점에서의 특정 서비스의 변경에도 반응하는 것을 가능하게 할 수 있다.
또한, 본 방법은, 제2 서비스 레지스트리로부터 서비스 통지를 수신하는 단계로서, 서비스 통지는 상기 특정 서비스 내의 변경에 관한 정보를 포함하는, 서비스 통지를 수신하는 단계; 및 서비스 매니저에 서비스 통지를 포워딩하는 단계;를 더 포함할 수 있다.서비스의 변경의 통지들을 수신하는 것은, 서비스 매니저가 능력에 연관된 서비스들의 변경들에 반응하는 것을 가능하게 할 수 있다.
또한, 본 방법은, 서비스들의 제1 리스트 내에 기록된 서비스에 연관된 구독 요청을 결정하는 단계; 서비스를 상기 구독 요청에 연관시키는 단계; 서비스 내의 변경을 탐지하는 단계; 및 서비스 내의 변경을 탐지하는 단계에 응답하여, 상기 구독 요청에 서비스를 연관시키는 단계를 기초로 상기 서비스 매니저에 통지를 전송하는 단계를 포함할 수 있다. 서비스 내의 변경의 통지들을 전송하는 것은 능력에 연관된 서비스들의 변경에 대하여 서비스 매니저가 반응하는 것을 가능하게 할 수 있다.
도 1은 이하에서 기술되는 하나 또는 그 이상의 실시예들에 따른 예시적인 환경을 도시하는 블록도이다.
도 2는 도 1의 디바이스의 예시적인 구성들을 도시하는 블록도이다.
도 3은 도 1의 디바이스의 예시적인 기능적인 계층등를 도시하는 블록도이다.
도 4a는 도 3의 서비스 계층의 예시적인 기능적인 구성들을 도시하는 블록도이다.
도 4b는 도 4a의 서비스 레지스트리의 기능을 도시하는 블록도이다.
도 4c는 도 4a의 서비스 레지스트리의 예시적인 기능적인 구성들을 도시하는 블록도이다.
도 4d는 도 4a의 서비스 레지스트리에 의해 저장되는 특정 서비스에 대한 예시적인 프로퍼티 테이블의 블록도이다.
도 5a는 도 3의 오버레이 네트워크 계층의 기능적인 구성들을 도시하는 블록도이다.
도 5b는 오버레이 네트워크의 예시적인 접속 형태의 블록도이다.
도 6은 서비스 매니저의 기능적인 구성들을 도시하는 블록도이다.
도 7a는 도 4a의 서비스 레지스트리 내에 저장될 수 있는 구성들을 도시하는 블록도이다.
도 7b는 도 6의 능력 데이터베이스 내에 저장될 수 있는 구성들을 도시하는 블록도이다.
도 8은 본 명세서에서 기술된 구현예에 따른 능력을 관리하기 위한 제1 프로세스의 순서도이다.
도 9는 본 명세서에서 기술된 구현예에 따른 능력을 관리하기 위한 제2 프로세스의 순서도이다.
도 10은 본 명세서에서 기술된 구현예에 따른 구독 요청을 관리하기 위한 프로세스의 순서도이다.
도 11은 능력이 실현된 예시적인 오버레이 네트워크를 도시한다.
후술하는 상세한 설명은 첨부된 도면들을 참조한다. 상이한 도면들 내의 동일한 식별 부호들은 동일하거나 유사한 구성요소들을 지칭한다.
전술한 바와 같이, 디바이스들의 네트워크는 네트워크에 걸쳐 통신할 수 있고 일련의 다양한 서비스들을 제공하는 시스템의 일부를 형성할 수 있다. 상이한 디바이스들은 상이한 시점들에서 상이한 서비스들을 제공할 수 있고 시스템은 서비스들이 어떤 디바이스들에서 가용한 지를 지속적으로 파악하는 것을 필요로 할 수 있다. 디바이스가 부가, 제거, 또는 변경될 때, 예를 들어, 시스템의 구성은 변경된다. 많은 수의 디바이스들을 갖는 시스템에서, 이 것은 빈번한 재구성의 요구를 초래하고, 이는 시스템 리소스들을 소모한다. 이에, 상이한 디바이스들에서 가용한 서비스들을 지속적으로 파악하는 것은 해결책을 필요로 하는 기술적 문제일 수 있다.
보안 모니터링 시스템(security monitoring system)과 같은 시스템은 시스템 내의 노드들(예를 들어, 카메라 디바이스들, 저장 디바이스들, 서버 디바이스들 등)의 능력(capability)을 유지 및 파악하는 상당한 시간 및 리소스들을 할애한다. 이하에서 기술되는 실시예들은 서비스 지향 아키텍쳐(Service Oriented Architecture, "SOA") 네트워크 내에서 모니터링 하는 능력에 관련된다. SOA 기반 시스템에서, 기능(functionality)은 서비스들로 나뉘어 분배(discretized)된다. 서비스는 기능의 자족적 응집 단위(self-contained cohesive unit of functionality)이다. 서비스와의 통신이 정의된 메시지 포맷(defined message formet)을 갖는 서비스 인터페이스를 통해 수행된다. 통신 프로세스는 서비스의 구현에 독립적일 수 있다. 서비스는 최종 사용자 기능(end user functionality)을 제공할 수 있고 서비스 인터페이스는 비즈니스 구성원(business people)에 의해 이해될 수 있도록 설계될 수 있다. 또한, 각 서비스는 서비스들에 대해 독립적이고 서비스의 경계들은 명확하다. 이에, 하나의 서비스가 충돌(crash)할 때, 다른 서비스들은 영향을 받지 않을 수 있다. 그러므로, 각 서비스는 예를 들어, 다른 프로세스로 동작할 수 있다.
일 실시예에서, 시스템 내의 노드에 의해 제공되는 서비스들에 대한 정보는 서비스 레지스트리 내에 저장된다. 서비스 레지스트리는, 서비스 식별자(service identifier), 서비스에 연관된 운영체제, 서비스가 작동하는 노드의 위치 좌표들, 서비스에 연관된 처리 능력, 서비스에 연관된 대역폭 용량, 및/또는 서비스에 연관된 다른 타입의 프로퍼티들과 같은 각 서비스의 프로퍼티들을 저장한다. 시스템 내의 모든 노드들이 서비스 레지스트리를 포함하는 것은 아닐 수 있다. 이에, 몇몇 서비스 레지스트리들은 시스템 내의 다른 노드들에서 가용한 서비스들을 저장할 수 있다. 또한, 시스템 내의 서비스 레지스트리들은 접속 형태적으로(topologically) 상호 연결될 수 있고, 제2 서비스 레지스트리는 제1 서비스 레지스트리를 통해 접근가능(accessible) 할 수 있다. 만일, 제1 서비스 레지스트리가 검색 쿼리를 수신하며 서비스 쿼리에 대한 매치(match)를 식별하지 않는다면, 제1 서비스 레지스트리는 검색 쿼리를 제2 서비스 레지스트리에 포워딩할 수 있다. 이에, 서비스를 위치시키는 검색 쿼리를 제출하는(submitting) 클라이언트에게, 시스템 내의 서비스 레지스트리들은 단일 분포된(single distributed) 서비스 레지스트리로 보일 수 있다.
시스템은 하나 또는 그 이상의 능력들을 제공할 수 있다. 시스템의 능력은 관리자(administrator)에 의해 서비스들의 보장된 프로퍼티들(guaranteed properties)과 함께 서비스들의 리스트로 정의된다. 예를 들어, 고화질(High Definition, "HD") 비디오를 Windows OS 서비스 디바이스에 특정 위치로부터 스트리밍(streaming) 하는 능력은, 그 위치에서의 비디오 캡쳐링 서비스(video capturing service), 대역폭 용량 및 HD 비디오 스트리밍에 충분한 서비스 품질(Quality of Service, "Qos") 프로퍼티들을 갖는, 특정 위치로부터 Window OS로 동작하는 컴퓨터 디바이스까지의 스트리밍 서비스, 및 Window OS로 동작하는 서버 디바이스 상에서 가용한 비디오 재생(playback) 호스팅 서비스를 요구할 수 있다. 시스템 내의 다양한 능력들을 모니터링하는 것의 기술적 문제를 해결하기 위하여, 서비스 매니저들은, 어떤 종류의 서비스들이 각 디바이스에서 가용한 가를 결정하도록 시스템 내의 디바이스들의 프로퍼티들을 모니터링할 수 있다.
일 해결책/실시예에서, 서비스 매니저는, 서비스 매니저에게 가장 가까운 서비스 레지스트리일 수 있는 서비스 레지스트리에 접속하고, 능력에 연관된 서비스들로 변경하는 것에 연관된 통지들(notifications)을 구독(subscribes)한다. 예를 들어, 서비스 매니저는 능력 내의 각 서비스에 대한 구독 요청을 발송할 수 있다. 서비스 메니저에 가장 가까운 서비스 레지스트리는 구동 요청을 수신할 수 있고 서비스 레지스트리에 기록(listed)된 서비스가 구독 요청에 매칭하는 지 여부를 결정할 수 있다. 매칭하는 것이 발견되면, 서비스 레지스트리는 식별된 서비스에 관하여 서비스 매니저에게 응답을 다시 발송한다. 응답은 그 서비스의 프로퍼티들에 대한 정보를 포함할 수 있다. 매칭하는 것이 발견되는지 여부와 무관하게, 서비스 레지스트리는 구독 요청을 기록할 수 있고 구독 요청을 인접하는 서비스 레지스트리들에 포워딩할 수 있다. 만일 매칭하는 것이 인접하는 서비스 레지스트리 내에서 발견되면, 인접하는 서비스 레지스트리는 제1 서비스 레지스트리에 응답을 다시 발송할 수 있고, 제1 서비스 레지스트리는 서비스 매니저에게 그 응답을 포워딩할 수 있다. 인접하는 서비스 레지스트리는 또한 구독 요청을 기록할 수 있고 구독 요청을 다음 인접하는 서비스 레지스트리에 포워딩할 수 있다. 이에, 구독 요청은 시스템 내의 서비스 레지스트리의 네트워크를 통하여 전파될 수 있고, 시스템 내의 각 서비스 레지스트리는 구독 요청을 결국 저장할 수 있다. 이에, 만일 서비스 레지스트리가 구독 요청의 규격들(specification)에 매칭하는 서비스에 대한 정보를 포함하지 않으며 그러한 서비스가 나중에 부가된다면, 서비스 레지스트리는 서비스 매니저에게 미래에 통지할 수 있을 것이다. 만일 모든 서비스 레지스트리들이 검색된 이후에 아무런 매칭하는 것이 발견되지 않는 다면, 어떠한 매칭하는 것도 발견되지 않았음을 나타내는 것이 서비스 매니저에게 다시 발송될 수 있다.
서비스 매니저는 특정 응답을 서비스 레지스트리로부터 수신할 수 있다. 예시로서, 서비스 매니저는 시스템 내의 어딘가에서 서비스가 배포되었음을 나타내는 것을 수신할 수 있다. 서비스 매니저는 서비스를 호스팅하는 시스템 내의 노드를 식별할 수 있고 식별된 노드를 능력에 연관시킬 수 있다. 다른 예시로서, 서비스 매니저는 서비스가 시스템 내에서 배포될 수 있음을 나타내는 것을 수신할 수 있다. 응답에서, 서비스 매니저는 서비스가 배포될 수 있는 시스템 내의 노드를 식별할 수 있고 식별된 노드에서 서비스의 배포를 시작할 수 있다. 예를 들어, 서비스 매니저는 그 노드에서 배포 서비스에 능력에 연관된 서비스를 배포할 것을 명령할 수 있다. 또 다른 예시로서, 서비스 매니저는 시스탬 내에서 서비스가 배포될 수 없음을 나타내는 것을 수신할 수 있다. 응답에서, 서비스 매니저는 관리자에게 능력이 실현될 수 없음을 알리는 관리자 경보(administrator alram)를 생성할 수 있다.
서비스 매니저는 서비스에 대한 구독 통지(subscription notifications)를 수신하는 것을 계속할 수 있다. 예를 들어, 서비스 레지스트리는, 서비스가 제거되었는지, 가용하지 않게 되었는지, 및/또는 서비스에 연관된 프로퍼티가 변경되었는 지를 결정할 수 있다. 응답에서, 서비스 레지스트리는 구독 통지를 서비스 매니저에게 전송할 수 있고 서비스 매니저는 수신된 구독 통지에 작용할 수 있다. 예를 들어, 서비스 매니저는 서비스가 앞서 식별된 노드에서 더 이상 가용하지 않은 지 또는 그 노드에서 서비스가 능력에 대한 요건들을 더 이상 만족하지 않는 지를 결정할 수 있다. 응답에서, 서비스 매니저는 앞서 수신된 구독 통지들을 기초로 서비스가 가용한 시스템 내의 다른 노드를 식별할 수 있다.
이에, 서비스 매니저는, 많은 수의 디바이스들 및 서비스들을 갖는 SOA 시스템 내의 특정 서비스 프로퍼티들 및/또는 특정 서비스들을 요구하는 능력을 효율적으로 관리하는 기술적 효과를 제공할 수 있다. 이는 SOA 시스템에, 서비스가 오프라인 상태가 되거나 다른 가용하지 않은 상태가 되거나, 또는 새로운 서비스가 시스템 내에 추가되는 것과 같은 변경들에 자동으로 반응할 수 있게 되도록 하는 이점을 제공한다.
도 1은 예시적인 환경(100)의 블록도이고, 여기서, 기술되는 시스템들 및/또는 방법들이 구현될 수 있다. 도 1의 실시예에서와 같이, 환경(100)은 네트워크(110), 서브-네트워크들(120-A내지 120-N)(전체적으로 "서브-네트워크들(120)" 및 개별적으로 "서브-네트워크(120)"으로 참조됨), 디바이스(130-A-A 내지 130-N-K)(전체적으로, "디바이스들(130)" 및 개별적으로 "디바이스(130)"으로 참조됨), 및 관리 디바이스(150)을 포함한다. 디바이스(130-N-K)는 서브-네트워크(120-N) 내의 K번째 디바이스(130)를 지칭한다. 이 실시예에서, 환경(100) 내의 구성들은 서비스-지향 아키텍쳐(SOA) 시스템 서비스 버스(140)을 형성한다.
네트워크(110)는 서브-네트워크들(120) 및/또는 디바이스들(130)이 서로 통신할 수 있게 한다. 네트워크(110)는 하나 또는 그 이상의 회선 교환 네트워크들(circuit switched networks) 및/또는 패킷 교환 네트워크들(packet switched networks)dmf 포함할 수 있다. 예를 들어, 일 실시예에서, 네트워크(110)는 근거리 네트워크(Local Area Network, "LAN"), 광역 네트워크(Wide Area Network, "WAN"), 대도시 네트워크(Metropolitan Area Network, "MAN"), 일반 전화 교환 네트워크(Public Switched Telephone Network, "PSTN"), 애드훅 네트워크(Ad hoc Network), 인트라넷, 인터넷, 광 섬유 기반 네트워크(Fiber Optic-based Network), 무선 네트워크(Wireless Network), 및/또는 이들 또는 다른 타입의 네트워크들의 결합을 포함할 수 있다.
서브-네트워크(120)는 LAN (예를 들어, 계층 2 네트워크) 및/또는 사설 네트워크 (예를 들어, 계층 3 네트워크)를 포함할 수 있다. 서브-네트워크(120)는 하나 또는 그 이상의 디바이스들(130)을 상호 연결시킬 수 있다. 예를 들어, 서브-네트워크(120-A)는 디바이스들(130-A-A 내지 130-A-J)를 상호 연결시킬 수 있다. 디바이스(130)는, 예를 들어, SOA 시스템 서비스 버스(140)를 통해 통신하도록 구성되는 임의의 디바이스를 포함할 수 있다.
디바이스(130)는 하이퍼텍스트 전처리기 (Hypertext Preprocessor, "PHP") 서버 디바이스, C 프로그램 서버 디바이스, 리눅스(Linux) 서버 디바이스, 윈도우(Windows) 서버 디바이스, 및/또는 다른 타입의 서버 디바이스와 같은 서버 컴퓨터 디바이스(server computer device); 데스크탑(desktop), 랩탑(laptop), 테블릿(tablet), 휴대용 통신 디바이스(mobile communication device), 및/또는 윈도우, 리눅스, 안드로이드, iOS 및/또는 다른 운영체제에서 작동하는 다른 타입의 개인용 컴퓨터 디바이스와 같은 개인용 컴퓨터 디바이스; 가시광 카메라(visible light camera), 적외선(IR) 카메라, 열 감지(heat signature) 카메라와 같은 감시 디바이스(monitoring device); 마이크로폰(Michrophone); 동작 센서(motion sensor), 열 센서, 압력 센서, 및/또는 다른 타입의 알람 센서와 같은 알람 센서(alarm sensor); 마이크로 제어 컴퓨터 디바이스(Microcontroller Computer Device); 및/또는 다른 타입의 컴퓨터 디바이스를 포함할 수 있다. 디바이스들(130)이 서브-네트워크(120)에 연결되는 것으로 도시되었으나, 특정 디바이스(130)는 네트워크(110)에 직접 연결될 수 있다.
일 실시예에서, SOA 시스템 서비스 버스(140)는 현재의 네트워크 접속 형태(existing network topology)의 최상층 상의 디바이스들(130) 사이에서 구현된다. SOA 시스템 서비스 버스(140)는 상이한 타입들의 디바이스들(130), 및/또는 상이한 플랫폼들을 사용하여 구현되는 디바이스들(130)이 서비스 지향 아키텍쳐를 사용하여 통신할 수 있게 한다. SOA 시스템 서비스 버스(140)는 제1 디바이스(130)가 임의의 디바이스(130)(예를 들어, 그 자신 또는 다른 디바이스 (130))로부터의 특정 서비스를 요청할 수 있게 할 수 있다. 이에, 제1 디바이스(130)에 의해 호스팅 되는 클라이언트(예를 들어, "클라이언트 서비스" 또는 "서비스" 그 자신)는 (예를 들어, 제1 디바이스(130)가 가용하지 않을 때) 제2 디바이스(130)에 의해 호스팅되는 서비스를 호출(call upon)할 수 있다. (제2 디바이스(130) 내의) 다른 서비스를 요청하는 (예를 들어, 제1 디바이스(130) 내의) 제1 서비스는 "클라이언트" 또는 "클라이언트 서비스"로서 그 요청을 개시한 것으로 지칭된다. 제1 서비스는 또한 예를 들어, 서비스들을 네트워크 내의 다른 서비스들에 제공할 수 있다.
일 실시예에서, 서비스는 표준화된 서비스 인터페이스를 통하여 접속(access)된다. 각각의 타입의 서비스는 특정 서비스 인터페이스(예를 들어, 상이한 서비스 인터페이스)에 연관될 수 있다. 이에, 서비스를 요청하는 클라이언트는 서비스 인터페이스와 통신할 수 있고, 그 클라이언트는 그 서비스의 실제 구현(implementation)에 관하여 모를 수 있다. 다시 말해, 서비스들의 구현들은 그 서비스 인터페이스들로 정의되는 프로토콜을 사용하여 서로 통신하며, 이로써, 각 서비스들의 구현은 다른 서비스들의 구현들과는 무관해야 한다. 특정 서비스 인터페이스에 연관되는, 동작 중인 서비스 구현은 서비스 인스턴스로 지칭될 수 있다. 서비스 호스트(예를 들어, 서비스를 호스팅하는 디바이스)를 포함하는 디바이스(130)는 가용한 서비스 인스턴스를 서비스 레지스트리(예를 들어, 서비스들의 데이터 베이스 또는 리스트)에 기록할 수 있다. SOA 시스템 서비스 버스(140)는 디바이스들(130) 사이의 통신이, 디바이스들(130) 내의 서비스 호스트들의 서비스 레지스트리들을 검색함으로써, 요청된 서비스의 위치를 알아낼 수 있게 할 수 있다.
관리 장치(150)는 관리자(administrator)가 SOA 시스템 서비스 버스(140)를 구성하거나 아니면 관리할 수 있게 한다. 예를 들어, 관리 장치(150)은 휴대용 통신 장치(예를 들어, 휴대폰, 스마트폰, 패블릿 기기, 위성 위치 확인 시스템(GPS) 기기, 및/또는 다른 타입의 무선 기기); 개인용 컴퓨터 또는 워크스테이션; 서버 디바이스; 랩탑, 태블릿, 또는 다른 타입의 휴대용 컴퓨터; 및/또는 통신 가능한 모든 타입의 디바이스를 포함할 수 있다.
네트워크(110)와 유사하게, 서브-네트워크(120)는 하나 또는 그 이상의 회선 교환 네트워크들(circuit switched networks) 및/또는 패킷 교환 네트워크들(packet switched networks)을 포함할 수 있다. 예를 들어, 서브-네트워크(120)는 LAN, WAN, MAN, PSTN, 애드훅 네트워크, 애드훅 네트워크, 인트라넷, 인터넷, 광 섬유 기반 네트워크, 무선 네트워크(Wireless Network), 및/또는 이들 또는 다른 타입의 네트워크들의 결합을 포함할 수 있다.
비록 도 1은 환경(100)의 예시적인 구성들을 도시하고 있으나, 다른 구현예들에서, 환경(100)은 도 1에 도시된 것에 비하여 더 적은 구성들, 상이한 구성들, 상이하게 배열되는 구성들, 또는 추가적인 구성들을 포함할 수 있다. 추가적으로 또는 대안적으로, 환경(100) 내의 임의의 일 디바이스(또는 임의의 디바이스들의 그룹)은 환경(100) 내의 하나 또는 그 이상의 다른 디바이스들에 의해 수행되는 것으로 기술된 기능들을 수행할 수 있다.
도 2는 디바이스(130)의 예시적인 구성들을 도시하는 블록도이다. 도 2에 도시된 바와 같이, 디바이스(130)는 버스(210), 프로세서(220), 메모리(230), 입력 디바이스(240), 출력 디바이스(250), 및 통신 인터페이스(260)을 포함할 수 있다.
버스(210)는 디바이스(130)의 구성들 사이의 통신을 허용하는 경로를 포함할 수 있다. 프로세서(220)는 명령어(instruction)를 해석 및 실행하는 임의의 타입의 싱글-코어 프로세서(single-core processor), 멀티-코어 프로세서(multi-core processor), 마이크로프로세서, 래치-기반 프로세서(latch-based processor), 및/또는 처리 로직(또는 프로세서들, 마이크로프로세서들, 및/또는 처리 로직들의 동종의 것)을 포함할 수 있다. 다른 실시예들에서, 프로세서(220)는 주문형 반도체(Application Specific Integrated Circuit, "ASIC"), 필드 프로그래머블 게이트 어레이(FPGA), 및/또는 다른 타입의 집적 회로 또는 처리 로직을 포함할 수 있다.
메모리(230)는, 프로세서(220)에 의한 실행을 위한 정보(information) 및/또는 명령어들을 저장할 수 있는 임의의 타입의 휘발성 및/또는 동적 저장 기기, 및/또는 프로세서(220)에 의한 사용을 위한 정보를 저장할 수 있는 임의의 타입의 비휘발성 저장 기기를 포함할 수 있다. 예를 들어, 메모리(230)는 랜덤 억세스 메모리(Random Access Memory, "RAM") 또는 다른 타입의 동적 저장 기기, 리드 온리 메모리(Read Only Memory, "ROM") 기기 또는 다른 타입의 정적 저장 기기, 내용 주소화 저장 장치(Content Addressable Memory, "CAM"), 자기 및/또는 광학 기록 메모리 기기 및 그것의 상응하는 드라이브(예를 들어, 하드 디스크 드라이브, 광학 드라이브 등), 및/또는 플래시 메모리와 같은 착탈 형태의 메모리를 포함할 수 있다.
입력 디바이스(240)는 운영자가 디바이스(130)에 정보를 입력하는 것을 가능케 할 수 있다. 입력 디바이스(240)은, 예를 들어, 키보드, 마우스, 펜, 마이크로폰, 원격 제어, 오디오 캡쳐 기기, 이미지 및/또는 비디오 캡쳐 기기, 터치 스크린 디스플레이, 및/또는 다른 타입의 입력 디바이스를 포함할 수 있다. 일 실시예에서, 디바이스(130)은 원격으로 관리될 수 있고, 입력 디바이스(240)을 포함하지 않을 수 있다. 다시 말해서, 디바이스(130)은 "헤드리스(headless)"일 수 있고, 예를 들어, 키보드를 포함하지 않을 수 있다.
출력 디바이스(250)은 디바이스(130)의 운영자에게 정보를 출력할 수 있다. 출력 디바이스(250)은 디스플레이, 프린터, 스피커, 및/또는 다른 타입의 출력 디바이스를 포함할 수 있다. 예를 들어, 디바이스(130)은 디스플레이를 포함할 수 있고, 이때, 디스플레이는 고객(customer)에게 컨탠츠를 표시하기 위한 액정 디스플레이(Liquid Crystal Display, "LCD")를 포함할 수 있다. 일 실시예에서, 디바이스(130)은 원격으로 관리될 수 있고, 출력 디바이스(250)을 포함하지 않을 수 있다. 다시 말해서, 디바이스(130)은 "헤드리스(headless)"일 수 있고, 예를 들어, 디스플레이를 포함하지 않을 수 있다.
통신 인터페이스(260)는, 디바이스(130)가 다른 디바이스들 및/또는 시스템들과 통신하는 것을 가능케 하는 송수신기(transceiver)(예를 들어, 송신기 및/또는 수신기)를 포함할 수 있다. 통신 인터페이스(260)는, 무선 통신들(예를 들어, 무선 주파수, 적외선, 및/또는 가시광 등), 유선 통신들(예를 들어, 도선(conductive wire), 연선 케이블(twisted pair cable), 동축 케이블(coaxial cable), 전송 선로(transmission line), 광섬유 케이블(fiber optic cable), 및/또는 도파관(waveguide) 등), 또는 무선 통신 및 유선 통신들의 조합을 통해 통신할 수 있다. 통신 인터페이스(260)은 기저 대역 신호들(baseband signals)을 무선 주파수(Radio Frequency, "RF") 신호들로 변환하는 송신기 및/또는 RF 신호들을 기저 대역 신호들로 변환하는 수신기를 포함할 수 있다. 통신 인터페이스(260)은 신호들을 전송하고 수신하기 위한 안테나에 연결될 수 있다.
통신 인터페이스(260)는 입력 및/또는 출력 포트들, 입력 및/또는 출력 시스템들, 및/또는 다른 디바이스들로의 데이터의 송신을 용이하게 하는 다른 입력 및 출력 구성들을 포함하는 논리 구성(logical component)을 포함할 수 있다. 예를 들어, 통신 인터페이스(260)는 유선 통신들을 위한 네트워크 인터페이스 카드(예를 들어, 이더넷 카드(Ethernet card)) 및/또는 무선 통신들을 위한 무선 네트워크 인터페이스(예를 들어, WiFi) 카드를 포함할 수 있다. 통신 인터페이스(260)은 또한 케이블을 통한 통신을 위한 범용 직렬 버스(Universal Serial Bus, "USB") 포트, 블루투스 무선 인터페이스, 전파 식별(Radio Frequency Identification, "RFID") 인터페이스, 근거리 무선 통신(Near Field Communication, "NFC") 무선 인터페이스, 및/또는 데이터를 하나의 형태에서 다른 형태로 변환하는 임의의 다른 타입의 인터페이스를 포함할 수 있다.
아래에서 기술되는 바와 같이, 디바이스(130)는 SOA 네트워크 내에서 서비스들(예를 들어, 가까운 서비스들)을 탐색하는 것과 관련된 특정 동작들을 수행할 수 있다. 디바이스(130)은 메모리(230)와 같은 컴퓨터에서 판독가능한 매체 내에 포함되는 소프트웨어 명령어들을 실행하는 프로세서(220)에 응답하여 이러한 동작들을 수행할 수 있다. 컴퓨터에서 판독가능한 매체는 비-일시적인 메모리(non-transitory memory) 디바이스를 포함할 수 있다. 메모리 디바이스는 단일 물리적 메모리 디바이스 내에서 구현되거나 다수의 물리적 메모리 디바이스들에 걸쳐 퍼져서 구현될 수 있다. 소프트웨어 명령어들은 다른 컴퓨터에서 판독가능한 매체로부터 또는 다른 디바이스로부터 메모리(230) 내로 읽혀질 수 있다. 메모리(230) 내에 포함되는 소프트웨어 명령어들은 프로세서(220)가 본 명세서에서 기술되는 프로세스들을 수행하도록 할 수 있다. 대안적으로, 고정 배선(hardwired) (예를 들어, 고정된) 회로가 본 명세서에서 기술되는 프로세스들을 구현하는 소프트웨어 명령어들을 대신하여, 또는 소프트웨어 명령어들과 결합하여 사용될 수 있다. 이에, 본 명세서에서 기술되는 구현예들은 고정 배선 회로 또는 소프트웨어의 어떠한 특정 조합에 한정되지 않는다.
비록, 도 2는 디바이스(130)의 예시적인 구성들을 도시하고 있으나, 다른 구현예들에서, 디바이스(130)는 도 2에 도시된 것에 비하여 더 적은 구성들, 상이한 구성들, 추가적인 구성들, 또는 상이하게 배열된 구성들을 포함할 수 있다. 추가적으로 또는 대안적으로, 디바이스(130)의 하나 또는 그 이상의 구성들은 디바이스(130)의 하나 또는 그 이상의 구성들에 의해 수행되는 것으로 기술되는 하나 또는 그 이상의 작업들(tasks)을 수행할 수 있다. 관리 장치(150)은 디바이스(130)과 유사하게 구성될 수 있다.
도 3은 디바이스(130)의 예시적인 통신 계층들을 도시하는 블록도이다. 디바이스(130)의 기능적인 구성들은, 예를 들어, 메모리(230)로부터의 명령어들을 실행하는 프로세서(220)에 의해 구현될 수 있다. 추가적으로 또는 대안적으로, 디바이스(130)의 기능적인 구성들은 하나 또는 그 이상의 ASIC들의 고정 배선(예를 들어, 고정된) 회로를 통해 구현될 수 있다. 도 3에 도시된 바와 같이, 디바이스(130)는 서비스 계층(310), 오버레이 네트워크 계층(320), 및 디바이스 계층(330)을 포함할 수 있다.
일 실시예에서, 서비스 계층(310)은 클라이언트들이 특정 서비스 타입의 서비스 인스턴스들을 검색할 수 있게 하고 클라이언트들이 특정 서비스 인스턴스에 요청들을 전송할 수 있게 한다. 서비스는 표준화된 서비스 인터페이스를 통하여 억세스될 수 있고, 일 실시예에서, 표준화된 서비스 인터페이스는 그 서비스의 실제 구현에 관하여 모를 수 있다. 서비스 인스턴스는 명시적인 경계들(explicit boundaries)에 연관될 수 있다. 이러한 실시예에서, 디바이스(130) 상에서 동작하는 특정 프로세스, 및/또는 디바이스(130) 상에 저장된 특정 데이터 각각은 명확하게 서비스 인스턴스 내에 또는 서비스 인스턴스 외부에 위치한다. 서비스 인스턴스는 다른 서비스 인스턴스들에 관하여 자율적일 수 있다. 예를 들어, 특정 서비스 인스턴스는 그 특정 서비스 인스턴스와 상호작용하는 다른 서비스 인스턴스들에 부정적인 영향을 끼치지 않고 변경될(예를 들어, 코드가 재작성될) 수 있다. 서비스는 기법(scheme) 및/또는 약속(contract)를 (동일한 타입의 또는 다른 타입의) 다른 서비스 인스턴스와 공유할 수 있으나, 일 실시예에서, 특정 서비스 인스턴스는 그 서비스의 구현은 공유하지 않는다. 기법은 서비스 인터페이스에 의해 전송되거나 수신되는 메세지들의 포맷 및 내용을 구체화한다. 약속은 서비스 인터페이스에 의해 전송되거나 수신되는 허용가능한 일련의 메세지들을 구체화한다.
하나 또는 그 이상의 서비스들이 번들(bundle)로서 함께 배포될 수 있다. 번들은, 시스템 내에서 배포 단위로 기능하는 서비스에 상응할 수 있다. 하나 또는 그 이상의 서비스들의 그룹에 상응하는, 특정 번들을 배포할 수 있는 시스템 내의 노드는 번들 호스트(bundle host)로 기능한다. 번들 집적 서비스(bundle repository service)는 시스템 내의 번들들의 집합을 저장할 수 있다. 이에, 서비스 매니저가 서비스를 배포하는 것을 선택한 때에, 서비스 매니저는, 서비스에 연관된 번들을 배포할 수 있는 번들 호스트를 위치를 알 필요가 있다. 서비스 매니저는 번들 집적 서비스의 위치를 알기 위해 서비스 레지스트리에 접촉할 수 있다. 서비스 매니저는 번들 호스트를 식별하기 위해 번들 집적 서비스에 접촉할 수 있다. 서비스 매니저는, 번들을 선택할 수 있고, 그 후 선택된 번들을 배포할 수 있는 적절한 번들 호스트를 식별하기 위해 서비스 레지스트리를 검색할 수 있다. 서비스 매니저는, 그 후 번들 호스트에 접촉할 수 있고, 번들 호스트에게 서비스에 연관된 번들을 배포하라고 명령할 수 있다.
일 실시예에서, 오버레이 네트워크 계층(320)은 현재의 네트워크 접속 형태(existing network topology)의 최상층 상의 오버레이 네트워크를 구현한다. 오버레이 네트워크(320)는 방화벽들(firewalls)을 통과하는 라우팅 트래픽 및/또는 언더라잉 네트워크 접속 형태(underlying network topology) 내에서 네트워크 주소 번역(Network Address Translation, “NAT”)을 처리하는 것의 원인이 될 수 있다. 일 실시예에서, (예를 들어, 언더라잉 네트워크 접속 형태와 상이할 수 있는) 오버레이 네트워크 접속 형태는 트리 구조(tree structure) 내에서 조직되는 노드들을 포함할 수 있다. 오버레이 네트워크 접속 형태는 논리적으로 노드들에 연결된다. 다른 실시예들에서, 오버레이 네트워크 접속 형태는 상이한 타입의 구조(예를 들어, 메쉬 접속 형태(mesh topology))를 포함할 수 있다. 디바이스(130) 내의 각각의 서비스 호스트는 오버레이 네트워크 내의 일 노드에 상응할 수 있고, 일 노드 식별자(identifier, “ID”)에 할당될 수 있다. 위에서 언급한 바와 같이, 디바이스(130)은 다수의 서비스 호스트들 및/또는 다수의 노드들을 포함할 수 있다. 디바이스(130)은 하나의 노드에 상응하는 하나의 호스트를 포함하는 것으로 기술될 수 있다. 노드들은 라우팅 트리(routing tree)와 같은 접속 형태를 통하여 연결될 수 있고, 일 노드는 라우팅 트리를 통해 다른 노드에 메세지를 전달할 수 있다. 일 실시예에서, 일 노드는 오버레이 네트워크 접속 형태를 운행(traverse)하는 메시지 없이 언더라잉 네트워크 접속 형태를 통해 메세지를 다른 노드에 전달할 수 있다. 각각의 노드는 오버레이 네트워크(뿐만 아니라 언더라잉 네트워크도) 그 이웃들에 닿도록 정보(예를 들어, 네트워크(110)과 같은 언더라잉 네트워크의 주소)를 저장할 수 있다. 오버레이 네트워크 계층(320)은 노드들 사이의 통신 계층에 대응될 수 있고, 특정 기능을 실현하는 다수의 네트워크 접속 형태를 사용할 수 있다. 예를 들어, 특정 타입의 서비스에 대한 서비스 레지스트리들을 검색할 때, 오버레이 네트워크 계층(320)은 노드들의 트리의 에지들(edges)을 운행(traverse)하면서, 서비스 레지스트리들을 통한 검색을 할 수 있다. 일 실시예에서, 제1 노드로부터 제2 노드로 메세지를 전송할 때, 오버레이 네트워크 계층(320)은 트리의 에지들을 추종하는 것에 의한 것 대신에 제1 노드로부터 제2 노드로 직접 그 메세지를 전달 할수 있다. 오버레이 네트워크 계층(320)은 노드 ID들을 서비스 계층(310)에 제공할 수 있고 서비스 계층(310)은 메세지들을 특정 노드 ID들에 언더라잉 네트워크 접속 형태를 알 필요 없이 전송할 수 있다.
일 실시예에서, 디바이스 계층(330)은 SOA 시스템 디바이스 버스(140)의 초기 설치 동안 디바이스 검색을 수행한다. 디바이스 계층(330) 및/또는 오버레이 네트워크 계층(320)은 또한 초기 설치에 후속하여 노드 검색을 수행할 수 있고, 및/또는 오프라인 상태가 되었다가 나중에 오버레이 네트워크에 재접속된 잃어버린 노드들을 재검색할 수 있다. 일 실시예에서, 오버레이 네트워크 계층(320)은 노드들이 서로의 정체를 확인할 수 있게 하는, 인증서와 같은 오버레이 네트워크에 대한 비밀을 관리할 수 있다. 오버레이 네트워크 계층(320)은 하나 또는 그 이상의 근거리 매트릭스(metrics of nearness)를 기초로 오버레이 네트워크에 대한 접속 형태(예를 들어, 라우팅 트리 또는 매쉬(routing tree or mesh))를 형성할 수 있다. 그러나, 제1 노드로부터 제2 노드로 가는 메시지는 라우팅 트리를 운행(traverse)할 것이 요구되지 않고, 대신에 제1 노드로부터 제2 노드로 직접 전달될 수 있다. 다른 실시예에서, 제1 노드로부터 제2 노드로 가는 메시지는 라우팅 트리를 운행(traverse)한다. 또한, 오버레이 네트워크 계층(320)은 멀티캐스트 그룹들(multicast groups)를 기초로 멀티캐스트 메시지들을 전송할 수 있다. 또한, 오버레이 네트워크 계층(320)은 서비스 품질(quality of service, “QoS”) 보증(guarantee)를 서비스 계층(310)에 제공할 수 있다.
네트워크 계층(320)은 일반적으로 “노드들”을 다루고, 디바이스 계층(330)은 일반적으로 “디바이스들”을 다룬다. 디바이스 계층(330)은, 언더라잉 네트워크 접속 형태(underlying network topology)(예를 들어, 네트워크(110) 및/또는 서브-네트워크(120))를 사용하는 통신에 필요한 기능을 포함하는 디바이스(130)의 기능의 가장 하위 레벨들에 대응된다. 예를 들어, 몇몇 구현예들에서, 디바이스 계층(330)은 개방형 시스템 간 상호 접속(Open Systems Interconnection, “OSI”) 모델(예를 들어, 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층)의 계층 1 내지 계층 6을 구현할 수 있다. 이러한 계층들의 구현은 이더넷 프레임들(Ethernet frames)을 라우팅하는 것, 인터넷 프로토콜(Internet Protocol, “IP”) 패킷들을 라우팅 하는 것, 세션 관리(session management), 패킷들을 암호화 및 복호화하는 것, 유실 패킷들을 재 전송하는 것 등을 포함할 수 있다.
도 3은 디바이스(130)의 예시적인 기능적인 구성들을 도시하고 있으나, 다른 구현예에서, 디바이스(130)은 도 3에 도시된 실시예에 비하여 더 적은 기능적인 구성들, 상이한 기능적인 구성들, 상이하게 배열된 기능적인 구성들, 또는 추가적인 기능적인 구성들을 포함할 수 있다. 더하여, 디바이스(130)의 구성들 중 임의의 하나(또는 구성들 중 임의의 그룹)는 디바이스(130)의 하나 또는 그 이상의 다른 기능적 구성들에 의해 수행되는 것으로 기술되는 기능들을 수행할 수 있다.
도 4a는 서비스 계층(310)의 예시적인 기능적인 구성들을 도시하는 블록도이다. 도 4a에 도시된 바와 같이, 서비스 계층(310)은 서비스 호스트(415)를 포함한다. 서비스 호스트(415)는 하나 또는 그 이상의 서비스들(410-A 내지 410-N)(전체적으로 "서비스들(410)" 및 개별적으로 "서비스(410)"으로 참조됨), 하나 또는 그 이상의 클라이언트들(420-A 내지 420-K)(전체적으로 "서비스들(410)" 및 개별적으로 "서비스(410)"으로 참조됨), 메시지 전송부(message dispatcher)(430), 및 서비스 레지스트리(440)를 포함할 수 있다.
서비스(410)는 디바이스(130)의 서비스 계층(310)의 서비스 호스트(415)에 연관된 서비스 인스턴스(service instance)에 대응된다. 일 실시예에서, 서비스(410)은 서비스 인터페이스(412) 및 서비스 구현(414)을 포함한다. 서비스 인터페이스(412)는 표준화된 통신 프로토콜과 같은 통신 프로토콜을 포함할 수 있다. 일 구현 예에서, 통신 프로토콜은 특유한(unique) 이름 및 버전을 포함한다. 서비스 인터페이스(412)는 단순 객체 접근 프로토콜(Simple Object Access Protocol, "SOAP") 인터페이스 규격, 자바스크립트 객체 표기법(JavaScript Object Notation, "JSON") 인터페이스 규격, 및/또는 다른 타입의 인터페이스 규격을 사용하여 구체화 될 수 있다. 서비스 구현(414)는 서비스(410)의 구현을 포함한다. 서비스 구현(414)은, 서비스 인터페이스(412)를 통해 수신된 요청들을 처리하고, 및/또는 서비스 인터페이스(412)를 통하여 서비스 요청들에 응답한다. 서비스 인터페이스(412)는 서비스 구현(414)로부터 수신된 응답들을 클라이언트(420)가 서비스(410)와 메시지들을 교환하기 위하여 사용하는 데 적합한 특정 포맷으로 변환할 수 있다.
일 실시예에서, 클라이언트(420)는 서비스 레지스트리(440)에 요청을 전달함으로써 특정 서비스 타입의 서비스 인스턴스를 요청할 수 있다. 서비스 인스턴스가 식별되고 선택되는 경우, 클라이언트(420)은 메시지 전송부(430)을 통해 식별되고 선택된 특정 서비스 인스턴스에 요청을 전달할 수 있다. 위에서 기술된 바와 같이, 클라이언트(420)은 또한 서비스들(410)일 수 있다. 용어 "클라이언트" 또는 "클라이언트 서비스"는 서비스를 다른 서비스를 요청하는 어떤 것으로 식별한다.
메시지 전송부(430)는 클라이언트(420)로부터 들어오는 메시지들을 수신하고 그것들을 들어오는 메시지의 의도된 수신지인 서비스(410)로 전달한다. 또한, 메시지 전송부(430)는 서비스로부터 메시지들을 수신할 수 있고, 메시지를 특정 클라이언트(420)에 전송할 수 있다. 들어오는 메시지의 목적지가 메시지 전송부(430)과 같은 디바이스(130) 상에 있지 않다면, 메시지는 정확한 디바이스(130)에 포워딩하기 위하여 오버레이 네트워크 계층(320)으로 포워딩될 수 있다. 서비스들(410) 및 클라이언트들(420)은 오버레이 네트워크 계층(320)에 의해 구현되는 오버레이 네트워크 내의 종단점(endpoint)로 기능할 수 있다. 이에, 일 실시예에서, 오버레이 네트워크 계층(320)은 오버레이 네트워크의 라우팅 트리를 기초로 라우팅 테이블을 유지할 수 있다. 라우팅 테이블은 특정 노드 ID들에 대한 다음 홉(next hop) 목적지들의 리스트를 포함할 수 있다. 메시지 전송부(430)는 나가는(outgoing) ID에 대한 다음 홉 목적지를 식별할 수 있고, 전달을 위하여 메시지를 오버레이 계층에 제공할 수 있다. 이에 따라, 이러한 실시예에서, 메시지 전송부(430)은 요청-응답 메시징 기법(request-response messaging mechanism)을 구현한다.
서비스 레지스트리(440)는 배치된(deployed) 서비스들(예를 들어, 서비스들의 인스턴스들)에 연관된 프로퍼티들과 함께 배치된 서비스들(410)의 리스트를 유지할 수 있다. 서비스 레지스트리(440)의 예시적인 구성들이 도 4c를 참조하여 아래에서 더 상세하게 기술된다. 서비스(410)는 서비스 레지스트리(440)에 (예를 들어, 서비스의 프로퍼티들을 포함하는) 서비스의 상세 내역(description)을 서비스 레지스트(440)에 제공함으로써 서비스 레지스트리(440)에 등록(register)할 수 있다. 클라이언트들(420)은 또한 서비스들(410)일 수 있기 때문에, 클라이언트들(420)은 또한 서비스 레지스트리(440)에 등록할 수 있다.
도 4b는 서비스 레지스트리(440)의 기능을 도시하는 블록도이다. 도 4b에 도시된 바와 같이, 서비스 레지스트리(440)는 검색 쿼리들(search queries)을 클라이언트들(420)로부터 수신할 수 있다. 검색 쿼리는 특정 서비스 타입, 특정 서비스 타입에 대한 하나 또는 그 이상의 요청된 프로퍼티들, 요청된 히트 수(number of hits), 및/또는 하나 또는 그 이상의 다른 파라미터들을 구체화할 수 있다. 서비스 레지스트리(440)는 검색 쿼리를 만족하는 서비스(410)를 식별할 수 있다. 서비스 레지스트리(440)에 의하여, 요청된 히트 수가 만족되지 못하면, 서비스 레지스트리(440)는 쿼리를 오버레이 네트워크 내에서 다른 서비스 레지스트리(440)(예를 들어, 인접하는 서비스 레지스트리(440))에 포워딩할 수 있다. 일 실시예에서, 서비스 레지스트리(440)는 특정 서비스 인스턴스를 검색 쿼리를 기초로 선택하지 않는다. 다만, 이러한 실시예에서, 서비스 레지스트리(440)는 쿼리의 결과들을 클라이언트(420)에게 반환(return)하고, 그 쿼리를 발생시켰던 클라이언트(420)는 검색 결과들로부터 특정 서비스 인스턴스를 선택할 수 있다. 다른 실시예에서, 서비스 레지스트리(440)는 쿼리의 결과들로부터 특정 서비스 인스턴스를 검색 쿼리를 기초로 선택할 수 있다.
비록 도 4a 및 4b는 서비스 계층(310)의 예시적인 기능적인 구성들을 도시하고 있으나, 다른 구현 예들에서, 서비스 계층(310)은 도 4a 및 4b에 도시된 것에 비하여 더 적은 기능적인 구성들, 상이한 기능적인 구성들, 상이하게 배열된 기능적인 구성들, 또는 추가적인 기능적인 구성들을 포함할 수 있다. 또한, 서비스 계층(310)의 구성들 중 임의의 일 구성 (또는 구성들의 임의의 그룹)은 서비스 계층(310)의 하나 또는 그 이상의 다른 기능적인 구성들에 의해 수행되는 것으로 기술되는 기능들을 수행할 수 있다.
도 4c는 서비스 레지스트리(440)의 예시적인 기능적인 구성들을 도시하는 블록도이다. 도 4c에 도시된 바와 같이, 서비스 레지스트리(440)은 호스트 서비스 레지스트리 데이터베이스(DataBase, "DB")(442), 쿼리 핸들러(query handler)(444), 서비스 레지스트리 캐시(service registry cache)(446)을 포함할 수 있다.
호스트 서비스 레지스트리 DB(442)는 서비스 호스트(415)에 의해 호스팅되는 서비스들(410) 및/또는 그 서비스들의 프로퍼티들의 리스트를 유지할 수 있다. 도 4c에 관하여, 호스트 서비스 레지스트리 DB(442) 내에 기록된(listed) 일 서비스 및 그 서비스의 프로퍼티들의 예시가 아래에서 제공된다. 호스트 서비스 레지스트리 DB(442)는 서비스들(410)을 서비스 레지스트리(440)에 등록함으로써 증식될(populated) 수 있다. 호스트 서비스 레지스트리 DB(442)는 또한 기록된 서비스들을 추가 또는 삭제하기 위한 또는 서비스 호스트(415)에 의해 호스팅되는 서비스들의 프로퍼티들을 독출(reading) 또는 기입(writing)하기 위한 인터페이스를 노출시킬(expose) 수 있고, 및/또는 서비스 프로퍼티들을 기입할 수 있다. 일 실시예에서, 예를 들어, 호스트 서비스 레지스트리 DB(442)는 상이한 디바이스(130) 상에서 서비스 호스트(415)에 의해 호스팅되는 서비스들(410)의 리스트를 유지할 수 있다. 상이한 디바이스 상의 서비스 호스트(415)는 그것의 서비스들을 노출된 인터페이스를 사용하는 다른 디바이스 상의 서비스 레지스트리 내에 기록(list)할 수 있다. 또한, 호스트 서비스 레지스트리 DB(442)는 다른 서비스 레지스트리들에 의해 접근 가능한 검색 쿼리 서비스 인터페이스를 노출시킬 수 있다. 따라서, 다른 서비스 레지스트리들은 호스트 서비스 레지스트리 DB(442)가 특정 쿼리를 만족하는 입력(entry)을 포함하는 지 여부를 결정하기 위하여 검색 쿼리 서비스 인터페이스를 사용할 수 있다. 일 실시에에서, DB(442)가 만료된(outdated) 정보를 저장하는 것을 방지하기 용이하도록 호스트 서비스 레지스트리 DB(442)에 기록된 서비스들은 (예를 들어, 재생(refresh)되지 않는 한, 일 시간 구간이 지난 후에 DB(442)로부터 삭제되어) 종료(expired)될 수 있다.
호스트 서비스 레지스트리(442)는, 구독 요청을 서비스 매니저로부터 수신할 수 있고, 구독 요청을 저장할 수 있고, 구독 요청을 모든 인접하는 서비스 레지스트리들로 포워딩할 수 있다. 호스트 서비스 레지스트리(442)는, 서비스가 구독 요청에 매칭하는지 여부를 결정할 수 있고, 매칭하는 서비스가 식별된 때 구독 요청을 개시하였던 서비스 매니저에게 구독 통지를 다시 전송할 수 있다. 또한, 호스트 레지스트리(442)는 저장된 서비스에 대한 업데이트가 구독에 연관되는 지 여부를 결정할 수 있다. 만일 업데이트가 구독에 연관되면, 호스트 서비스 레지스트리(442)는, 연관된 구독에 대한 구독 요청을 개시하였던 서비스 매니저(또는 다른 타입의 서비스)에게 구독 통지를 전송할 수 있다.
쿼리 핸들러(444)는 클라이언트(420)으로부터 수신된 쿼리들을 처리할(handle) 수 있다. 일 실시예에서, 쿼리가 주어지면, 쿼리 핸들러(444)는 우선 로컬 호스트 서비스 레지스트리 DB(442)를 검색하고, 이어서, 서비스 레지스트리 캐시(446)를 검색한다. 쿼리 핸들러(444)는 예를 들어 쿼리가 만족되지 못한다면 다른 서비스 레지스트에 요청할 수 있다. 서비스 레지스트리 캐시(446)은 원격 서비스 레지스트리(440)로부터의 데이터를 저장할 수 있다. 각 서비스 호스트(415)는 로컬 서비스 레지스트(440) 및 서비스 호스트(415)에 등록한 서비스들로서 로컬 서비스 레지스트(440) 내에 등록된 서비스들(410)을 유지할 수 있다. 로컬 서비스 레지스트리(440)에 의해 만족되지 못하는 클라이언트(420)로부터의 쿼리는, 이웃하는 서비스 호스트들(415)이 그 쿼리를 만족하는 서비스들을 포함하는 서비스 레지스트리들(440)을 갖는지를 알기 위해, 하나 또는 그 이상의 이웃하는 서비스 호스트들(415)에 전달될 수 있다. 원격 서비스 레지스트리(440)은 쿼리의 결과들을 로컬 서비스 레지스트리(440)에 다시 반환할 수 있고, 그 결과들은 서비스 레지스트리 캐시(446)에 저장될 수 있다. 몇몇 구현 예들에서, 부모 노드들(parent nodes)은 그들의 자식 노드들(children nodes)에 대한 데이터를 캐시에 저장(cache)할 수 있고, 이때, 자식 노드들은 그들의 부모 노드들에 대한 데이터를 캐시에 저장하지 않을 수 있다. 일 실시예에서, 캐시(446)이 만료된 정보를 저장하는 것을 방지하기 용이하도록 서비스 레지스트리 캐시(446) 내에 기록된 서비스들은 (예를 들어, 재생(refresh)되지 않는 한, 일 시간 구간이 지난 후에 캐시(446)으로부터 삭제되어) 종료(expired)될 수 있다.
비록 도 4c는 서비스 레지스트리(440)의 예시적인 기능적인 구성들을 도시하고 있으나, 다른 구현 예들에서, 서비스 레지스트리(440)는 도 4c에 도시된 것에 비하여 더 적은 기능적인 구성들, 상이한 기능적인 구성들, 상이하게 배열된 기능적인 구성들, 또는 추가적인 기능적인 구성들을 포함할 수 있다. 또한, 서비스 레지스트리(440)의 구성들 중 임의의 일 구성(또는 구성들의 임의의 그룹)은 서비스 레지스트리(440)의 하나 또는 그 이상의 다른 기능적인 구성들에 의해 수행되는 것으로 기술되는 기능들을 수행할 수 있다.
도 4d는 서비스 레지스트리(440)에 의해 저장되는 특정 서비스에 대한 예시적인 프로퍼티 테이블(460)의 블록도이다. 일 실시예에서, 서비스의 인스턴스(예를 들어, 각각의 인스턴스)는 테이블(460)과 같은 프로퍼티 테이블에 연관된다. 호스트 서비스 레지스트리 데이터베이스 DB(442)는 상응하는 서비스 레지스트리(440)에 등록된 각각의 서비스에 대한 프로퍼티 테이블을 저장할 수 있다. 일 실시예에서, 위에서 기술된 바와 같이, 임의의 일 서비스 레지스트리 DB(442) 내에 저장된 정보는 다른 서비스 레지스트리 데이터베이스들에 저장된 정보와 상이할 수 있다. 예시적인 프로퍼티 테이블(460)은 여덟 개의 필드들: ID 필드(462), 인터페이스 필드(464), 서비스 포맷 필드(468), 전송 프로토콜 필드(470), CPU 랭킹(ranking)(472), 디스크 용량 필드(474), 및 램(RAM) 필드(476)를 포함할 수 있다.
인스턴스 ID 필드(462)는 특정 서비스의 인스턴스를 특유하게(uniquely) 정의한다. 인스턴스 ID는 (가능하다면 노드 ID와 함께) 네트워크 내의 (동일한 타입 또는 상이한 타입의) 임의의 다른 서비스들로부터 서비스 인스턴스를 특유하게 식별할 수 있다. 일 실시예에서, 인스턴스 ID 필드(462)는 정수이다. 테이블(460)에서, 인스턴스 ID는 예시적으로 6529이다.
인터페이스 필드(464)는 서비스의 인터페이스의 이름을 식별한다. 이 경우, 인터페이스 필드(464)는 또한 서비스의 타입을 인터페이스의 타입에 의해 식별할 수 있다. 예를 들어, 테이블(460)은 인터페이스를 "저장 서비스(STORAGE SERVICE)"로 식별할 수 있다. 서비스 포맷 필드(468)은 서비스의 인스턴스에 의해 사용되는 포맷을 식별한다. 예시적으로, 테이블(460)은 서비스 포맷을 "JSON"으로 식별한다. 전송 프로토콜 필드(470)은 서비스의 인스턴스에 의해 사용되는 프로토콜을 식별한다. 예시적으로, 테이블(460)은 서비스 포맷을 "노드 프로토콜(NODE PROTOCOL)"로 식별한다.
CPU 랭킹 필드(472)는 서비스 인스턴스와 연관된 CPU의 성능을 식별한다. 일 실시예에서, (예를 들어, 1 내지 100인) 척도가 사용된다. 테이블(460)은 CPU 랭킹 필드(472) 내의 서비스에 대하여 CPU 랭킹을 20/100으로 식별한다. 램(RAM) 필드(476)는 서비스에서 가용한 랜덤 억세스 메모리의 용량을 식별한다. 테이블(460)은 가용한 램(RAM)을 필드(476) 내에서 2GB로 식별한다.
비록 도 4d는 프로퍼티 테이블(460)의 예시적인 구성들을 도시하고 있으나, 다른 구현 예에서, 프로퍼티 테이블(460)은 도 4d에 도시된 것에 비하여 더 적은 구성들, 상이한 구성들, 상이하게 배열된 구성들, 또는 추가적인 구성들을 포함할 수 있다.
도 5a는 오버레이 네트워크 계층(320)의 기능적인 구성들을 도시하는 블록도이다. 도 5a에 도시된 바와 같이, 오버레이 네트워크 계층(320)은 노드 매니저(node manager)(510), 통신 매니저(communication manager)(520), 및 멀티캐스트 매니저(multicast manager)(530)를 포함할 수 있다.
노드 매니저(510)는 노드 ID와 같은 노드 정보를 오버레이 네트워크 내의 다른 노드들에 제공할 수 있다. 또한, 노드 매니저(510)는 오버레이 네트워크 내의 노드들의 리스트를 유지할 수 있다. 노드 매니저(510)는 오버레이 네트워크에 추가된 새로운 노드들을 식별하기 위해 및/또는 오버레이 네트워크에 다시 접속(re-join)한 유실된 노드들을 재탐색(rediscover)하기 위하여 노드 탐색을 수행할 수 있다. 노드 매니저(510)는 또한 네트워크의 접속 형태(topology)를 아래에서 기술되는 바와 같이(예를 들어, 노드들은 가장 가까운 다른 노드들임) 결정할 수 있다.
통신 매니저(520)는 노드들이 서로 통신할 수 있게 할 수 있다. 통신 매니저(520)는 오버레이 네트워크의 트리를 운행(traverse)하기 위한 기법(mechanism)을 구현할 수 있다. 트리 운행법(tree traversal)은, 서비스 레지스트리들의 검색 쿼리들과 연관되어, 또는 다른 노드에 직접 통신 방법(direct communication method)을 사용할 수 없을 때, 수행될 수 있다. 또한, 통신 매니저(520)는 오버레이 네트워크의 트리를 운행할 필요 없이 오버레이 네트워크의 특정 노드들이 직접 통신할 수 있게 하는 직접 통신 방법을 구현할 수 있다.
멀티캐스트 매니저(530)는 멀티캐스트 기법(multicast mechanism)을 구현할 수 있다. 멀티캐스트 기법은 멀티캐스트 그룹의 구성원들(예를 들어, 모든 구성원들)에게 메시지를 전송하도록 사용될 수 있다. 또한, 멀티캐스트 기법은 구독-통지 메시징 패턴(subscribe-notify messaging pattern)을 구현하도록 사용될 수 있다. 이에, 특정 서비스 인스턴스에 연관된 이벤트는 특정 서비스 인스턴스로부터의 메시지들을 구독(subscribe)하는 노드들에 전송되는 메시지를 촉발(trigger)하도록 사용될 수 있다. 멀티캐스트 매니저(530)는 어플리케이션 계층 멀티캐스트 매니저 또는 하위 OSI 계층들로부터의 멀티캐스트 매니저를 포함할 수 있다.
비록 도 5a는 오버레이 네트워크 계층(320)의 예시적인 기능적인 구성들을 도시하고 있으나, 다른 구현 예들에서, 오버레이 네트워크 계층(320)은 도 5a에 도시된 것에 비하여 더 적은 기능적인 구성들, 상이한 기능적인 구성들, 상이하게 배열된 기능적인 구성들, 또는 추가적인 기능적인 구성들을 포함할 수 있다. 또한, 오버레이 네트워크 계층(320)의 구성들 중 임의의 일 구성(또는 구성들 중 임의의 그룹)은 오버레이 네트워크 계층(320)의 하나 또는 그 이상의 다른 기능적인 구성들에 의해 수행되는 것으로 기술되는 기능들을 수행할 수 있다.
도 5b는 오버레이 네트워크(540)의 예시적인 접속 형태(topology)의 블록도이다. 도 5b의 예시에서 기술된 바와 같이, 오버레이 네트워크(540)은 노드들(N1 내지 N7)을 포함한다. 노드들(N1 및 N2)은 멀티캐스트 그룹(560-1) 내에 있다. 노드(N1)은 서비스 종단점들(service endpoint)(S1 및 S3) 및 클라이언트 종단점(C1)을 포함한다. 노드(N3)은 노드(N1 및 N2)에 대한 부모 노드이다. 노드(N3)는 서비스 종단점(S7) 및 클라이언트 종단점(C3)를 포함한다.
노드들(N6 및 N7)은 멀티캐스트 그룹(560-2) 내에 있고, 노드(N7)는 클라이언트 종단점(C2) 및 서비스 종단점(S5 및 S6)를 포함한다. 노드(N5)는 노드들(N6 및 N7)에 대한 부모 노드이고 서비스 종단점(S9)를 포함한다. 노드들(N3 및 N5)는 멀티캐스트 그룹(560-3) 내에 있다. 노드(N4)는 노드들(N3 및 N5)에 대한 부모 노드이고, 오버레이 네트워크(540)의 뿌리 노드(root node)이다. 또한, 노드(N4)는 멀티캐스트 그룹(560-4) 내에 있고 서비스 종단점(S8)을 포함한다. 비록 네트워크(540)의 접속 형태(topology) 내에서, 부모 노드들이 두 개의 자식 노드들을 가지고 있으나, 다른 구현 예들에서, 부모 노드들은 두 자식 노드들 이상의 노드들을 가질 수 있다.
각각의 종단점이 서비스 레지스트리(440)에 연관되는 것으로 가정할 때, 검색 쿼리는 오버레이 기능 네트워크(540)를 다음과 같이 운행할 수 있다. 서비스 종단점(S1) 및 서비스 종단점(S5) 내에 포함되는 (즉, S1 및 S5가 매칭(match)되는) 특정 서비스를 식별하도록 노드(N3) 내의 서비스 종단점(S7)이 검색 쿼리를 실행하는 것이 가정된다. 서비스 종단점(S7)은 그것의 로컬 서비스 레지스트리에 검색 쿼리를 전송할 수 있고, 이는 검색 쿼리 내에 아무런 매치들(matches)도 없게 할 수 있다. 그러면 로컬 서비스 레지스트리는 오버레이 네트워크 내에서 인접하는 서비스 레지스트리들을 식별할 수 있고, 이는 노드(N1) 내의 서비스 레지스트리 및 노드(N4) 내의 서비스 레지스트리를 포함한다(노드(N2)에 연관되는 서비스 종단점들이 없기 때문에, 노드(N2)는 서비스 레지스트리를 포함하지 않을 수 있다). 노드(N1) 내의 서비스 레지스트리는 서비스 종단점(S1)을 식별하는 히트(hit)를 반환할 수 있다. 노드(N4) 내의 서비스 레지스트리는 아무런 히트도 반환하지 않을 수 있고 검색 쿼리를 그것의 인접하는 서비스 레지스트리들에 포워딩할 수 있고, 이 경우, 그것은 노드들(N3 및 N5) 내의 서비스 레지스트리들을 포함한다. 다만, 노드(N3) 내의 서비스 레지스트리는 검색을 이미 처리하였기 때문에, 검색 쿼리는 노드(N5) 내의 서비스 레지스트리에만 전송될 수 있다. 노드(N5)에 있는 서비스 레지스트리는 아무런 히트도 찾지 못할 수 있고 검색 쿼리를 노드(N7)에 있는 서비스 레지스트리에 포워딩할 수 있다. 노드(N7)는 서비스 종단점(S5)을 히트(hit)로 식별할 수 있고 검색 쿼리의 결과들을 노드(N4)에 반환할 수 있고 노드(N4)는 검색 결과들을 노드(N3) 내의 서비스 종단점(S7)에 포워딩 할 수 있다.
서비스 종단점(S7)은 이에, 노드(N1)의 서비스 종단점(S1) 또는 노드(7)의 서비스 종단점(S5) 중 하나와의 통신을 선택할 수 있다. 몇몇 실시예들에서, 서비스 종단점(S7)은 노드들(N4 및 N5)를 통해 서비스 종단점(S5)에 메시지를 발송할 수 있다. 다른 구현예들에서, 서비스 종단점(S7)는 노드(N7)과 직접 통신함으로써 서비스 종단점(S5)에 메시지를 발송할 수 있다.
다른 예시로서, 서비스 종단점(S7)은 검색 쿼리에 매칭하는 제1 매치만을 오직 요구할 수 있다. 노드들은 우선 순위 순으로 다른 노드들에 검색 쿼리들을 포워딩할 수 있고, 그 우선 순위는 트리의 더 아래에 있는 노드들에 우선 순위를 매긴다. 이에, 검색 쿼리를 노드(N4)에 전송하기 이전에, 노드(N3)는 노드들(N1 및 N2)에 검색 쿼리를 포워딩할 수 있고, 이는 노드(N4)가 트리의 더 위에 있을 때(즉, 노드(N3)의 부목일 때) 노드들(N1, N2)이 트리의 더 아래에 있기(즉, 노드(N3)의 자식이기) 때문이다. 노드(N1)은 검색 쿼리에 대한 매치를 식별하고, 서비스 종단점(S7)은 오직 하나의 매치만을 요구하기 때문에, 검색은 검색 쿼리가 노드(N4)에 전송되기 이전에 종료될 수 있다.
도 6은 서비스 매니저(600)의 기능적인 구성들을 도시하는 블록도이다. 서비스 매니저(600)은 하나 또는 그 이상의 능력들을 관리하도록 구성될 수 있다. 도 6에 도시된 바와 같이, 서비스 매니저(600)은 구독 생성부(610), 배포 매니저(620), 및 경보 생성부(630)을 포함하며 능력 데이터 베이스(DB)(640)에 연관될 수 있다.
구독 생성부(610)은 능력에 연관된 서비스들에 대한 구독 요청들을 생성할 수 있다. 또한, 구동 생성부(610)은 서비스 레지스트리들(440)으로부터 구독 통지들를 수신할 수 있고, 수신된 구독 통지들을 기초로 능력 DB(640)을 업데이트할 수 있다. 배포 매니저(620)은 하나 또는 그 이상의 서비스들의 배포를 시작할 수 있다. 예를 들어, 구독 생성부(610)가, 서비스 매니저(600)에 의해 관리되는 능력에 연관된 서비스가 일 노드에서 배포가 가용함을 나타내는 구독 통지를 수신하면, 배포 매니저(620)는, 서비스를 배포할 것을 그 노드에 있는 배포 서비스(예를 들어, 번들 호스트(bundle host))에 명령함으로써, 그 노드에서 서비스의 배포를 시작할 수 있다.
경보 생성부(630)은 관리자(administrator)에 대한 경보를 생성한다. 예를 들어, 구동 생성부(610)가, 능력을 실현하는 것에 필요한 특정 서비스가 시스템 내에 배포되는 것이 불가함을 나타내는 것을 수신하면, 경보 생성부(630)은 경보를 생성할 수 있고, 경보를 관리 장치(150)에 전송할 수 있다.
능력 DB(640)은 서비스 매니저(600)에 의해 관리되는 능력들에 관한 정보를 저장할 수 있다. 능력 DB(640)에 저장될 수 있는 예시적인 정보는 도 7B를 참조하여 아래에서 기술된다.
예시로서, 서비스 매니저(600)는, 하나의 인코딩 포맷(encoding format)으로부터 다른 인코딩 포맷으로 비디오 파일, 또는 비디오 스트림을 변환하는 변환 부호화 능력(transcoding capability)을 위한 서비스 매니저에 대응할 수 있다. 변환 부호화 능력은 각각의 특정 변환 타입(conversion type)(예를 들어, Moving Picture Experts Group 4 (MPEG-4) 로부터 고 효율 비디오 코딩(High Efficiency Video Coding, "HVEC")로의 변환 부호화 서비스, a MPEG-4 로부터 MPEG-2로의 변환 부호화 서비스 등)에 대한 변환 부호화 서비스를 요구할 수 있다.
다른 예시로서, 서비스 매니저(600)은 능력을 카운팅(counting)하는 구성원들(people)을 위한 서비스 매니저에 대응할 수 있다. 능력을 카운팅하는 구성원들은 특정 시간 구간 동안 특정 위치를 지나가는 구성원들의 수를 셀(count) 수 있다. 능력을 카운팅하는 구성원들은, 특정 위치에 대한 비디오 스트림 캡쳐링 서비스, 캡쳐된 비디오 스트림을 저장하는 저장 서비스, 특징들을 추출하도록 저장된 비디오 스트림을 처리하는 특징 탐지 서비스(feature detection services), 저장된 비디오 스트림의 이미지들 내의 구성원들을 식별하도록 추출된 특징들을 처리하는 구성원 탐지 서비스, 및 특정 시간 구간 동안 특정 위치에서의 카운팅된 구성원들의 수를 보고하기 위한 사용자 인터페이스(user interface)를 생성하는 구성원 카운팅 리포팅 서비스(people counting reporting service)를 포함하는 서비스들의 세트를 요구할 수 있다.
또 다른 예시로서, 서비스 매니저(600)은 특정 위치로부터 특정 운영 체제를 위한 저장 위치까지 영상 신호를 스트리밍하기 위한 서비스 매니저에 대응할 수 있다. 저장 능력은, 제1 서비스가 특정 위치의 영상을 캡쳐하는 것, 제2 서비스가 캡쳐된 영상 신호를 저장 디바이스로 스트리밍하는 것, 및 제3 서비스가 캡쳐된 영상 신호를 특정 운영 체제를 사용하는 디바이스 내에 저장하는 것을 요구할 수 있다.
비록 도 6은 서비스 매니저(600)의 예시적인 기능적인 구성들을 도시하고 있으나, 다른 구현예에서, 서비스 매니저(600)는, 도 6에 도시된 것에 비하여, 더 적은 기능적인 구성들, 상이한 기능적인 구성들, 상이하게 배열된 기능적인 구성들, 또는 추가적인 기능적인 구성들을 포함할 수 있다. 또한, 서비스 매니저(600)의 구성들의 임의의 일 구성(또는 구성들의 임의의 일 그룹)은 서비스 매니저(600)의 하나 또는 그 이상의 다른 기능적인 구성들에 의해 수행되는 것으로 기술되는 기능들을 수행할 수 있다.
도 7a는 서비스 레지스트리(440) 내에 저장될 수 있는 구성들을 도시하는 블록도이다. 도 7a에서 도시된 바와 같이, 서비스 레지스트리(440)은 하나 또는 그 이상의 서비스 엔트리들(entries)(701)을 포함할 수 있다. 각 서비스 엔트리(401)는, 서비스 레지스트리(440)에 연관된 서비스 호스트에 의해 호스팅되는 특정 서비스에 관한 정보를 저장할 수 있다. 서비스 엔트리(401)은 서비스 필드(service field)(710), 노드 필드(node field)(712), 프로퍼티 필드(property field)(714), 배포 필드(deployment field)(716), 및 구독 필드(subscription field)(718)을 포함할 수 있다.
서비스 필드(710)은 서비스 엔트리와 연관되는 특정 서비스를 식별할 수 있다. 예를 들어, 서비스 필드(710)는 특정 서비스에 연관되는 서비스 인터페이스를 식별할 수 있다. 노드 필드(712)는 특정 서비스에 연관되는 특정 노드(예를 들어, 디바이스(130))를 식별할 수 있다. 몇몇 구현예에서, 제1 노드는 제2 노드에 대한 서비스 레지스트리를 유지할 수 있고 그 서비스 레지스트리 내에서 제2 노드에 연관된 서비스들을 식별할 수 있다. 프로퍼티 필드(714)는 특정 서비스에 연관되는 프로퍼티들을 식별하는 정보를 저장할 수 있다. 예를 들어, 프로퍼티 필드(714)는 서비스에 연관된 위치, 서비스에 연관된 운영 체제, 서비스에 연관된 처리 부하(processing load), 서비스에 연관된 대역폭 용량, 서비스에 연관된 메모리 용량, 서비스에 연관된 저장 용량, 서비스에 연관된 서브-네트워크 및/또는 도메인(domain), 서비스에 연관된 보안 수준(security level), 서비스에 연관된 코덱(codec) 타입, 및/또는 다른 타입의 프로퍼티를 식별하는 정보를 포함할 수 있다. 몇몇 실시예에서, 프로퍼티 필드(714)는 프로퍼티 테이블(460)을 포함할 수 있다.
배포 필드(716)는 서비스가 배포되는 지 또는 서비스가 배포에 가용한 지를 식별하는 정보를 포함할 수 있다. 구독 필드(718)는 서비스에 연관된 구독들을 식별하는 정보를 포함할 수 있다. 서비스는 하나 또는 그 이상의 구독들에 연관될 수 있다. 구독 정보는, 예를 들어 어떤 서비스로의 변경에 대한 통지들을 구독하고 있는 특정 서비스 매니저(600)를 (예를 들어, 노드 ID를 기초로) 식별할 수 있다. 이에, 만일 서비스가 배포, 추가, 제거, 가용하지 않게 되는 경우, 서비스의 프로퍼티가 변경되는 경우, 및/또는 다른 타입의 변경이 탐지되는 경우에, 통지는 서비스 매니저(600)에 전송될 수 있다.
비록 도 7a는 서비스 레지스트리(440)의 예시적인 구성들을 도시하고 있으나, 다른 구현예에서, 서비스 레지스트리(440)는, 도 7에 도시된 것에 비하여, 더 적은 구성들, 상이한 구성들, 상이하게 배열되는 구성들, 또는 추가적인 구성들을 포함할 수 있다.
도 7b는 능력 DB(640) 내에 저장될 수 있는 구성들을 도시하는 블록도이다. 능력 DB(640)는 하나 또는 그 이상의 능력 기록들(capability records)(751)을 포함할 수 있다. 각 능력 기록(751)은 서비스 매니저(600)에 의해 관리되는 특정 능력에 관한 정보를 저장할 수 있다. 각 능력 기록(751)은 하나 또는 그 이상의 서비스 엔트리들(761)을 포함할 수 있다. 각 서비스 엔트리(761)은 특정 능력에 연관된 특정 서비스에 관한 정보를 저장할 수 있다. 서비스 엔트리(761)은 서비스 필드(770), 요구 필드(requirements field)(772), 가용성 필드(availability field)(774), 노드 필드(776), 및 프로퍼티 필드(778)을 포함할 수 있다.
서비스 필드(770)는, 예를 들어 특정 서비스에 대한 서비스 인터페이스를 식별함으로써 특정 서비스를 식별할 수 있다. 요구 필드(772)는 특정 서비스에 연관된 하나 또는 그 이상의 요구들을 식별하는 정보를 저장할 수 있다. 예시로서, 능력은 특정 개수의 서비스의 배포된 인스턴스들을 요구할 수 있다. 다른 예시로서, 능력은 특정 개수의 인스턴스들이 배포될 수 있는 지를 요구할 수 있다. 또 다른 예시로서, 능력은 서비스가 특정 프로퍼티(예를 들어, 특정 저장 용량, 특정 대역폭 용량, 특정 위치, 특정 OS 등)를 포함하는 것을 요구할 수 있다.
가용성 필드(774)는 특정 서비스의 가용성을 식별하는 정보를 포함할 수 있다. 예를 들어, 가용성 필드(774)는 서비스가 배포되는 지 또는 배포될 수 있는 지를 식별할 수 있다. 또한, 몇몇 구현예에서, 가용성 필드(774)는 배포된 인스턴스의 개수 또는 배포 가능한 인스턴스들의 개수를 식별할 수 있다. 노드 필드(776)는, 특정 서비스가 배포되는 또는 배포될 수 있는 하나 또는 그 이상의 노드들을 식별하는 정보를 저장할 수 있다. 서비스 매니저(600)에 의해 수신된 각 구독 통지에 대하여, 서비스 매니저(600)는 노드를 노드 필드(776)에 부가(또는 노드를 노드 필드(776)으로부터 제거) 할 수 있다.
프로퍼티 필드(778)은 특정 서비스의, 배포된 인스턴스들 또는 배포될 수 있는 인스턴스들의 프로퍼티들에 관한 정보를 저장할 수 있고, 이들은 능력에 연관된다. 서비스 매니저(600)는, 프로퍼티들이 능력에 대한 요구들을 만족하는 지를 결정하기 위하여 프로퍼티 필드(778) 내에 저장된 정보를 모니터링 할 수 있다. 만일, 프로퍼티들이 능력에 대한 요구들을 만족하지 않는 다면, 서비스 매니저(600)는, 그 요구들을 만족하는, 다른 배포된 서비스 인스턴스 또는 배포 가능한 서비스 인스턴스를 식별하는 시도를 할 수 있다.
비록 도7b은능력 DB(640)의 예시적인 구성들을 도시하나, 다른 구현예들에서, 능력 DB(640)는, 도 7b에 도시된 것에 비하여, 더 적은 구성들, 상이한 구성들, 상이하게 배열된 구성들, 또는 추가적인 구성들을 포함할 수 있다.
도 8은 본 명세서에서 기술된 구현예에 따른 능력을 관리하기 위한 제1 프로세스의 순서도이다. 일 구현예에서, 도 8의 프로세스는 디바이스(130) 내의 서비스 매니저(600)에 의해 수행될 수 있다. 다른 구현예에서, 도 8의 몇몇 또는 모든 프로세스는, 서비스 매니저(600)를 포함하는 및/또는 서비스 매니저(600)로부터 분리된 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 8의 프로세스는 능력 내역들(capability specifications) 을 수신하는 것(블록 (810))을 포함할 수 있다. 예를 들어, 관리자는, 새로운 능력에 대한 능력 기록(751)을 생성하도록 관리 디바이스(150)를 사용할 수 있고, 능력을 실현하기 위해 요구되는 하나 또는 그 이상의 서비스들을 구체화할 수 있다. 또한, 관리자는, 능력을 실현하기 위해 요구되는 각 서비스에 대한 하나 또는 그 이상의 요구들을 구체화할 수 있다.
능력에 연관된 서비스가 선택될 수 있고(블록(820)), 선택된 서비스에 대한 구독 요청은 서비스 레지스트리에 전송될 수 있다(블록(830)). 예를 들어, 서비스 매니저(600)의 구독 생성부(610)는, 능력 기록(751) 내에 기록된 서비스들 중 하나를 선택할 수 있고, 서비스(예를 들어, 서비스 인터페이스)에 대한 구독 요청을 생성할 수 있고, 구독 요청을 가장 가까운 서비스 레지스트리(440)에 전송할 수 있다. 몇몇 구현예에서, 서비스 매니저(600) 및 서비스 레지스트리(440)은 오버레이 네트워크 내의 동일한 노드(예를 들어, 동일한 디바이스(130)) 상에서 동작할 수 있고, 이에, 서비스 매니저(600)는 로컬 서비스 레지스트리(440)에 구독 요청을 전송할 수 있다. 다른 구현예들에서, 서비스 레지스트리(440)은 오버레이 네트워크의 상이한 노드 내에 위치될 수 있고, 구독 요청은 오버레이 네트워크를 통해 전송될 수 있다.
몇몇 구현예에서, 구독 요청은 요청된 서비스에 대한 하나 또는 그 이상의 프로퍼티 요구들을 구체화 할 수 있고, 서비스의 프로퍼티들이 구독 요청 내의 요구들에 매칭하면, 서비스는 구독 요청에 대한 매치로서 식별될 수 있다. 다른 구현예들에서, 구독 요청은, 요청된 서비스(예를 들어, 서비스 인터페이스)를 식별할 수 있고, 어떠한 서비스 프로퍼티 요구들도 포함하지 않을 수 있다. 그러한 구현예들에서, 서비스는, 서비스의 프로퍼티들이 요구들에 매칭하는 지에 대한 고려 없이, 매치로 식별될 수 있고, 서비스 프로퍼티들이 요구들을 만족하는 지에 대한 결정이 서비스 매니저(600)에 의해 수신된 구독 통지 내에 포함된 정보를 기초로 이루어질 수 있다.
구독 통지는 서비스 레지스트리(블록(840))로부터 수신될 수 있고, 결정은 서비스의 배포 가용성에 대하여 수신된 구독 통지를 기초로 이루어질 수 있다(블록(850)). 예를 들어, 서비스 매니저(600)는 서비스 레지스트리(440)으로부터 구독 통지를 수신할 수 있다. 구독 통지는 서비스가 배포되었는 지, 배포가능한 지, 또는 시스템 내에서 가용하지 않은 지를 나타내는 정보를 포함할 수 있다.
서비스가 배포되었는 지가 결정되면(블록(850)-"서비스가 배포됨"), 노드는 서비스가 배포되는 곳에서 식별될 수 있고(블록(860)), 식별된 노드는 능력에 연관될 수 있다(블록(862)). 예를 들어, 서비스 매니저(600)는, 수신된 구동 통지로부터, 노드를 식별하는 정보를 검색(retrieve)할 수 있고, 및/또는 서비스의 프로퍼티들에 대한 정보를 검색할 수 있다. 만일 검색된 프로퍼티들이 요구들에 매칭하면, 서비스 매니저(600)는 식별된 노드를 능력 기록(751) 내의 서비스에 연관시킬 수 있다.
만일 서비스가 배포될 수 있는 것으로 결정되면(블록(850)-"서비스가 배포될 수 있음"), 서비스가 배포될 수 있는 곳의 노드가 식별되고(블록(870)), 서비스의 배포가 그 식별된 노드에서 시작될 수 있고(블록(872)), 그 식별된 노드는 능력(블록(874))에 연관될 수 있다. 예를 들어, 서비스 매니저(600)는, 수신된 구독 통지로부터, 노드를 식별하는 정보를 검색할 수 있고, 및/또는 서비스의 프로퍼티들에 대한 정보를 검색할 수 있다. 만일, 검색된 프로퍼티들이 요구들에 매칭하면, 서비스 매니저(600)는 서비스를 배포하라는 명령을 그 식별된 노드에 전송함으로써 서비스의 배포를 시작할 수 있다. 예를 들어, 서비스 매니저(600)은 그 식별된 노드의 번들 호스트(bundle host)에 서비스를 배포하라고 명령할 수 있다.
만일, 서비스가 가용하지 않은 것으로 결정되면(블록(850)-"서비스가 가용하지 않음"), 관리자 경보가 생성될 수 있다(블록(880)). 예를 들어, 구독 매니저(600)의 경보 생성부(630)는, 특정 서비스가 가용하지 않기 때문에 능력이 실현될 수 없음을 나타내는 경보를 생성할 수 있고, 경보를 관리 디바이스(150)에 전송할 수 있다. 도 8의 프로세스는 능력 기록(751) 내에 기록된 각 서비스에 대하여 반복될 수 있다.
도 9는 본 명세서에서 기술된 구현예들에 따른 능력을 관리하는 제2 프로세스의 순서도이다. 일 구현예에서, 도 9의 프로세스는 디바이스(130) 내의 서비스 매니저(600)에 의해 수행될 수 있다. 다른 구현예들에서, 도 9의 몇몇 또는 모든 프로세스는, 서비스 매니저(600)를 포함하는 및/또는 서비스 매니저(600)로부터 분리된 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 9의 프로세스는 구독 통지를 수신하는 것(블록(910))을 포함할 수 있다. 예를 들어, 서비스 매니저(600)는, 서비스 매니저(600)에 의해 관리되는 능력에 연관된 서비스에 관한 서비스 레지스트리(440)로부터 구독 통지를 수신할 수 있다. 노드에서 서비스가 더 이상 가용하지 않은 지 또는 능력 요구들을 더 이상 만족하지 않는 지에 대한 결정이 이루어질 수 있다(블록(920)). 예시로서, 서비스 매니저(600)는, 구독 통지가 서비스가 더 이상 배포되거나 배포가 가능하지 않음을 나타내는 지를 결정할 수 있다. 다른 예시로서, 서비스 매니저(600)는, 수신된 구독 통지로부터 서비스 프로퍼티들에 대한 정보를 검색할 수 있고, 서비스 프로퍼티들이 능력 기록(751)에서 구체화되는 서비스 요구들을 더 이상 만족하지 않는 지를 결정할 수 있다.
다른 배포된 서비스 또는 다른 배포 가능한 서비스가 식별될 수 있다(블록(930)). 서비스 매니저(600)가 서비스에 대한 구독 요청을 발송했기 때문에, 서비스 매니저(600)는, 구독의 내역들에 매칭하는, 배포된 서비스 인스턴스 또는 배포 가능한 서비스 인스턴스의 기록을 포함하는 모든 서비스 레지스트리들로부터 구독 통지들을 수신 했을 수 있다. 서비스 매니저(600)이 능력에 연관된 서비스에 대한 구독 통지를 수신하는 매 시점에, 서비스 매니저(600)는 능력 DB(640) 내에(예를 들어, 가용성 필드(774), 노드 필드(776), 및/또는 프로퍼티 필드(778) 내에) 구독 통지로부터의 정보를 저장할 수 있다. 서비스 매니저(600)는 다른 배포된 서비스 인스턴스 또는 배포 가능한 서비스 인스턴스를 식별하기 위해 능력 DB(640)에 접속할 수 있다.
다른 구현예들에서, 서비스 매니저(600)이 능력들을 관리하기 위해 구독들을 사용하지 않거나 서비스 매니저(600)이 구독 요청을 발송하지 않은 경우에, 다른 배포된 인스턴스 또는 배포 가능한 인스턴스는 검색 쿼리를 서비스 레지스트리(440)에 전송함으로써 식별될 수 있다.
배포된 서비스 또는 배포 가능한 서비스에 연관된 노드는 식별될 수 있고(블록(940)), 식별된 노드는 능력에 연관될 수 있다(블록(950)). 예를 들어, 서비스 매니저(600)은 식별된 배포된 서비스 또는 식별된 배포 가능한 서비스에 연관된 노드를 식별하기 위해 노드 필드(776)에 접속할 수 있다. 위에서 도 8에 대하여 기술한 바와 같이, 서비스 매니저(600)는 식별된 노드를 서비스에 연관시킬 수 있다.
도 10은 본 명세서에서 기술된 구현예에 따른 구독 요청을 관리하기 위한 프로세스의 순서도이다. 일 구현예에서, 도 10의 프로세스는 디바이스(130) 내의 서비스 레지스트리(440) 에 의해 수행될 수 있다. 다른 구현예들에서, 도 10의 몇몇 또는 모든 프로세스는, 서비스 레지스트리(440)를 포함하는 및/또는 서비스 레지스트리(440)로부터 분리된 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 10의 프로세스는 서비스 매니저로부터 구독 요청을 수신하는 것을 포함할 수 있고(블록 (1010)), 서비스가 서비스 레지스트리 내에 있는 지에 대한 결정이 이루어질 수 있다(블록(1020)). 예를 들어, 서비스 레지스트리(440)는 특정 서비스를 구독하기 위하여 서비스 매니저(600)로부터 구독 요청을 수신할 수 있다. 서비스 레지스트리(440)는, 서비스 레지스트리(440) 내의 서비스가 구독 요청에 매칭하는 지를 결정하기 위해 서비스 기록들(701)을 검색할 수 있다.
만일 서비스 레지스트리 내에 서비스가 있다면(블록 1020-"예"), 구독 통지가 서비스 매니저에게 전송될 수 있다(블록(1030)). 예를 들어, 구독 요청을 수신하는 것 및 서비스 매니저(600)에게 서비스가 특정 노드에서 가용함을 알리기 위해 서비스 기록(701) 내에 저장된 정보를 기초로 서비스 기록(701)을 탐지하는 것에 응답하여, 서비스 레지스트리(440)는 구독 통지를 서비스 매니저(600)에게 전송할 수 있다. 프로세싱은 블록(1040)까지 계속될 수 있다. 만일 서비스가 서비스 레지스트리 내에 없다면(블록(1020)-"아니오"), 프로세싱은 또한 블록(1040)가지 계속될 수 있다.
구독 요청은 서비스 레지스트리 내에 기록될 수 있다(블록(1040)). 예를 들어, 만일 서비스가 서비스 레지스트리 내에 포함된다면, 서비스 레지스트리(440)는, 구독 필드(718) 내에 수신된 구독 요청으로부터의 정보를 포함함으로써 서비스 기록(701)을 업데이트할 수 있다. 만일 서비스가 서비스 레지스트리에 포함되어 있지 않다면, 서비스가 나중에 부가되는(그래서 서비스 매니저(600)가 서비스가 부가되지 않았음을 알 수 있는) 경우에, 서비스 레지스트리(440)는 구독 요청을 기록하는 것도 또한 필요로 할 수 있다. 그러한 경우에, 서비스 레지스트리(440)은 구독 요청으로부터의 정보를 포함하는 서비스에 대한 비-활성화된 서비스 기록(701)을 생성할 수 있다(예를 들어, 서비스 기록(701)은 서비스 필드(710) 및 구독 필드(718) 내의 정보만을 포함하고, 이와 함께, 서비스 기록(701)은 비활성화된 것으로 나타내짐).
구독 요청은 인접하는 서비스 레지스트리들에 포워딩 될 수 있다(블록(1050)). 예를 들어, 서비스 레지스트리(44)는, 인접하는 서비스 레지스트리들을 오버레이 네트워크의 접속 형태를 기초로 식별할 수 있고, 이전에 요청을 처리하지 않았던 모든 인접하는 서비스 레지스트리들에 구독 요청을 포워딩할 수 있다.
나중 시점에, 서비스의 변경이 탐지될 수 있고(블록(1060)), 구독 통지는 서비스 매니저에게 탐지된 변경을 기초로 전송될 수 있다(블록(1070)). 예를 들어, 서비스 레지스트리(440)는, 서비스 기록(701)에 연관된 임의의 탐지된 변경에 응답하여, 구독 통지를 서비스 매니저(600)에게 전송할 수 있다.
도 11은 능력이 실현된 예시적인 오버레이 네트워크(1100)를 도시한다. S3가, 영상 신호를 특정 위치로부터 Windows OS 저장 서비스에 스트리밍하기 위한 능력을 실현하는 것을 처리해야하는 서비스 매니저(1110)를 포함하는 것으로 가정한다. 능력은, 제1 비디오 서비스가 특정 위치의 영상을 캡쳐하는 것, 제2 저장 서비스가 영상을 Window OS 서비스 디바이스가 있는 곳에 저장하는 것, 및 제3 서비스가 영상 신호를 특정 비트 레이트(bit rate)로 카메라로부터 저장 위치까지 스트리밍하는 것을 요구한다.
서비스 매니저(1110)는 능력을 실현하기 위해 요구되는 세 개의 서비스들 각각에 대한 구독 요청을 생성할 수 있다. 노드(N1)는, 카메라가(1120)가 제1 비디오 서비스가 그 위치에서 비디오를 캡쳐하는 것에 대한 구독 요청을 만족할 뿐만 아니라 특정 비트 레이트로 영상 신호를 스트리밍하는 것에 대한 구독 요청을 만족하는 것으로 식별할 수 있다. 카메라(1130)는 제1 비디오 서비스가 그 위치에서 영상을 캡쳐하는 것에 대한 구독 요청을 만족하나, 특정 비트 레이트로 영상을 스트리밍하는 서비스를 포함하지 않을 수 있는 것으로 식별될 수 있다. 이에, 서비스 매니저(1110)는, 카메라(1120)을 선택할 수 있고, 카메라(1120)을 능력에 연관시킬 수 있다. 또한, 노드(N5)는 Window OS 저장 서비스(150)을 능력의 저장 서비스 요구에 매칭하는 것으로 식별할 수 있다.
나중 시점에, 카메라(1120)의 스트리밍 서비스는, 능력에 의해 요구되는 비트 레이트 이하의 비트 레이트 상태에 있을 수 있고, 노드(N1)의 서비스 레지스트리는 구독 통지를 노드(N3)의 서비스 매니저(1110)에 전송할 수 있다. 서비스 매니저(1110)는 다른 구독 요청을 발송할 수 있고 노드(N2)는, 카메라(1140)가 특정 비트 레이트로 영상 신호를 스트리밍하는 구독 요청을 만족하는 것을 나타내는구독 통지로 응답할 수 있다. 이에, 서비스 매니저(1110)은 카메라(1140)을 능력에 연관시킬 수 있다. 이에, 능력을 사용하는 임의의 클라이언트는 카메라(1120)로부터 카메라(1140)로의 영상 신호의 변경을 경험할 수 있다.
앞서의 발명의 상세한 설명에서, 다양한 선호되는 실시예들이 첨부된 도면들을 참조하여 기술되었다. 그러나, 이후 기술될 청구항들에 기재된 발명의 포괄적인 범주로부터 벗어나지 않는 범위에서, 다양한 변형예들 및 변경예들이 그것에 대하여 이루어질 수 있고, 추가적인 실시예들이 구현될 수 있음은 명백할 것이다. 발명의 상세한 설명 및 도면들은 이에 제한적인 의미 보다는 예시적인 의미로 간주된다.
예를 들어, 일련의 블록들이 도 8 내지 10에 대하여 기술되었고, 블록들의 순서는 다른 구현예에서 변경될 수 있다. 또한, 비-종속적인(non-dependent) 블록들이 병렬로 수행될 수 있다.
위에서 기술된 바와 같은 시스템들 및/또는 방법들이 도면들에서 도시된 구현 예들에서 소프트웨어, 펌웨어, 및 하드웨어의 많은 상이한 형태들에서 구현될 수 있음이 명백할 것이다. 이와 같은 시스템들 및 방법들을 구현하는 데 사용되는 특화된 제어 하드웨어 또는 실제 소프트웨어는 그 실시예들에 한정되는 것이 아니다. 이에, 시스템들 및 방법들의 동작(operation) 및 거동(behavior)은 특정한 소프트웨어 코드에 대한 참조없이 기술되었다-소프트 웨어 및 제어 하드웨어는 시스템들 및 방법들을 본 명세서의 기술 내용을 기초로 설계될 수 있는 것으로 이해된다.
또한, 위에서 기술된 특정 부분들은 하나 또는 그 이상의 기능들을 수행하는 구성으로 구현될 수 있다. 본 명세서에 사용된 구성은 프로세서, ASIC, 또는 FPGA와 같은 하드웨어, 또는 하드웨어 및 소프트웨어의 결합(예를 들어, 소프트웨어를 실행하는 프로세서)을 포함할 수 있다. 본 명세서에서 사용된 단어 "예시적으로"는 "실례(illustration)를 위한 예시로서"를 의미한다.
용어들 "포함하다"/"포함하는"은, 본 명세서에서 사용될 때, 기술된 특징들(fetures), 정수들(integers), 단계들(steps), 구성들(components) 또는 그들의 그룹의 존재를 구체화하도록 사용된 것임이 강조되어야 한다. 그러나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 구성들 또는 그들의 그룹의 부가 또는 존재를 제한하는 것은 아니다.
명시적으로 그러한 기술이 없다면, 본 출원서 내에서 사용된 어떠한 엘리먼트(element), 작용(act), 또는 명령어(instruction)도 실시예들에 대해 임계적 또는 본질적인 것으로 해석되지 않는다. 또한, 본 명세서에 사용된 바와 같이, 관사 "a"는 하나 또는 그 이상의 것(item)을 포함하도록 의도된다. 또한, 문구 "기초로"는, 다른 명시적인 기술이 없다면, "적어도 부분적으로 기초로"를 의미하도록 의도된다.

Claims (20)

  1. 제1 서비스 레지스트리를 유지하도록 구성된 제1 프로세서로서, 상기 제1 서비스 레지스트리는 시스템의 하나 또는 그 이상의 제1 노드에서 가용한 서비스들의 제1 리스트를 포함하는, 제1 프로세서;
    제2 서비스 레지스트리를 유지하도록 구성된 제2 프로세서로서, 상기 제2 서비스 레지스트리는 상기 시스템의 하나 또는 그 이상의 제2 노드에서 가용한 서비스들의 제2 리스트를 포함하고 상기 제2 서비스 레지스트리는 상기 제1 서비스 레지스트리에 연결되는, 제2 프로세서;
    서비스 매니저를 구현하는 제3 프로세서를 포함하되,
    상기 제3 프로세서는:
    상기 시스템의 능력을 관리하고-상기 능력은 하나 또는 그 이상의 서비스들의 세트를 통해 실현됨-;
    구독 요청을 상기 제1 서비스 레지스트리에 전송하고-상기 구독 요청은 상기 하나 또는 그 이상의 서비스들의 세트 중 적어도 하나의 서비스와 관련된 변경을 상기 서비스 매니저에게 알려주는 명령을 포함함-;
    상기 제1 서비스 레지스트리에 연결하고;
    상기 제1 서비스 레지스트리로부터, 상기 제2 서비스 레지스트리에 포함된 서비스들의 제2 리스트 내의 변경을 나타내는 통지를 수신하고; 및
    상기 통지를 수신하는 것에 응답하여, 능력에 대한 새로운 서비스의 배포를 시작하거나 상기 시스템 내의 새로운 서비스의 배포된 인스턴스의 위치를 알아내도록 구성되고,
    상기 제1 서비스 레지스트리는,
    상기 구독 요청을 기록하고; 및
    오버레이 네트워크의 접속 형태(topology)를 기초로, 상기 구독 요청을 이전에 처리하지 않았던 모든 인접하는 서비스 레지스트리들에 상기 구독 요청을 포워딩하되, 상기 구독 요청을 이전에 처리하지 않았던 인접한 서비스 레지스트리들은 제2 서비스 레지스트리와 적어도 하나의 다른 서비스 레지스트리를 포함하고,
    상기 제2 서비스 레지스트리는,
    상기 구독 요청을 상기 통지에 전송하도록 추가적으로 구성된,
    시스템.
  2. 제1 항에 있어서, 상기 통지는:
    특정 서비스가 상기 제2 서비스 레지스트리로부터 삭제되었음을 나타내는 것;
    특정 서비스가 상기 제2 서비스 레지스트리에 부가되었음을 나타내는 것; 또는
    특정 서비스에 연관된 프로퍼티(property)가 변경되었음을 나타내는 것; 중 하나 이상을 포함하는,
    시스템.
  3. 제2 항에 있어서, 상기 서비스 매니저는
    상기 통지를 수신하는 것에 응답하여, 상기 능력이 완전히 실현될 수 없음을 결정하고; 및
    상기 능력이 완전히 실현될 수 없음을 결정하는 것에 응답하여, 관리자에게 경보를 전송하도록,
    추가적으로 구성된,
    시스템.
  4. 제2 항에 있어서, 상기 서비스 매니저는
    상기 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스가 없음을 결정하고; 및
    상기 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스가 없음을 결정하는 것에 응답하여, 상기 능력에 대한 새로운 서비스의 배포를 시작하도록, 추가적으로 구성되는,
    시스템.
  5. 제4항에 있어서, 상기 관리되는 능력에 대한 새로운 서비스를 배포하는 것을 시작할 때, 상기 서비스 매니저는,
    제2 서비스 레지스트리 내에 포함된 서비스들의 제2 리스트 내의 변경이 배포되지 않는 하나 또는 그 이상의 서비스의 세트 중 적어도 하나의 서비스에 상응하는 지가 결정하고;
    하나 또는 그 이상의 서비스들의 세트 중 적어도 하나의 서비스가 가용하는 특정 노드를 식별하고; 및
    식별된 노드에게 상기 특정 노드 내의 하나 또는 그 이상의 서비스들의 세트 중 적어도 하나의 서비스를 배포하게 명령하도록, 추가적으로 구성되는,
    시스템.
  6. 제1 항에 있어서,
    상기 시스템의 하나 또는 그 이상의 제2 노드 중 적어도 하나에서 검출된 결함에 응답하여 통지가 전송되는,
    시스템.
  7. 제1 항에 있어서, 상기 서비스 매니저는,
    상기 통지를 수신하는 것에 응답하여, 상기 능력이 완전히 실현될 수 없음을 결정하고; 및
    상기 능력이 완전히 실현될 수 없음을 결정하는 것에 응답하여, 관리자에게 경보를 전송하도록,
    추가적으로 구성된,
    시스템.
  8. 제1 항에 있어서, 상기 서비스 매니저는,
    상기 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스의 위치를 알아내고; 및
    상기 시스템 내에서 새로운 서비스의 배포된 인스턴스의 위치를 알아내는 것에 응답하여, 위치를 알아낸 배포된 인스턴스를 상기 능력에 연관시키도록, 추가적으로 구성된,
    시스템.
  9. 제1 항에 있어서, 상기 서비스 매니저는,
    상기 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스가 없음을 결정하고; 및
    상기 시스템 내에서 가용한 새로운 서비스의 배포된 인스턴스가 없음을 결정하는 것에 응답하여, 상기 능력에 대한 새로운 서비스의 배포를 시작하도록, 추가적으로 구성되는,
    시스템.
  10. 제1 항에 있어서, 상기 서비스 매니저는,
    클라이언트로부터, 상기 능력에 대한 요청을 수신하고;
    하나 또는 그 이상의 서비스들의 세트 중 특정한 하나가, 상기 능력이 실현되는 곳을 통하여, 상기 시스템 내에서 배포되지 않은 것을 결정하고;
    상기 제1 서비스 레지스트리 또는 상기 제2 서비스 레지스트리 중 하나 이상으로부터 획득된 정보를 기초로 배포하는 노드를 선택하고; 및
    선택된 배포하는 노드에게, 수신된 요청을 기초로, 하나 또는 그 이상의 서비스들의 세트 중 특정한 하나를 배포하게 명령하도록, 추가적으로 구성되는,
    시스템.
  11. 제1 항에 있어서, 상기 관리되는 능력에 대한 새로운 서비스를 배포하는 것을 시작할 때, 상기 서비스 매니저는,
    제2 서비스 레지스트리 내에 포함된 서비스들의 제2 리스트 내의 변경이 배포되지 않는 하나 또는 그 이상의 서비스의 세트 중 적어도 하나의 서비스에 상응하는 지가 결정하고;
    하나 또는 그 이상의 서비스들의 세트 중 적어도 하나의 서비스가 가용하는 특정 노드를 식별하고; 및
    식별된 노드에게 상기 특정 노드 내의 하나 또는 그 이상의 서비스들의 세트 중 적어도 하나의 서비스를 배포하게 명령하도록, 추가적으로 구성되는,
    시스템.
  12. 제1 서비스 레지스트리를 포함하는 제1 서비스 레지스트리 디바이스에 의해, 시스템의 하나 또는 그 이상의 제1 노드에서 가용한 서비스들의 제1 리스트를 유지하는 단계;
    제2 서비스 레지스트리를 포함하는 제2 서비스 레지스트리 디바이스에 의해, 상기 시스템의 하나 또는 그 이상의 제2 노드에서 가용한 서비스들의 제2 리스트를 유지하되, 상기 제2 서비스 레지스트리는 상기 제1 서비스 레지스트리와 연결된 단계;
    서비스 매니저 디바이스에 의해서, 상기 시스템의 능력을 관리하되, 상기 능력은 상기 서비스들의 리스트를 통해서 실현되는 단계;
    상기 서비스 매니저 디바이스에 의해서, 상기 제1 서비스 레지스트리 디바이스에 연결하는 단계;
    상기 서비스 매니저 디바이스에 의해서, 구독 요청을 상기 제1 서비스 레지스트리 디바이스에 전송하되, 상기 구독 요청은 상기 서비스들의 상기 리스트의 적어도 하나의 서비스와 관련된 변경을 상기 서비스 매니저 디바이스에게 알려주는 명령을 포함하는 단계;
    상기 제1 서비스 레지스트리 디바이스에 의해서, 상기 구독 요청이 기록되는 단계;
    상기 제1 서비스 레지스트리 디바이스에 의해서, 오버레이 네트워크의 접속 형태(topology)를 기초로, 상기 구독 요청을 이전에 처리하지 않았던 모든 인접하는 서비스 레지스트리들에 상기 구독 요청을 포워딩하되, 상기 구독 요청을 이전에 처리하지 않았던 인접한 서비스 레지스트리들은 제2 서비스 레지스트리와 적어도 하나의 다른 서비스 레지스트리를 포함하는 단계;
    상기 제2 서비스 레지스트리 디바이스에 의해서 상기 제1 서비스 레지스트리 디바이스에, 상기 구독 요청을 기초로 상기 서비스들의 제2 리스트 내의 변경을 나타내는 통지를 전송하는 단계;
    상기 서비스 매니저 디바이스에 의해서 상기 제1 서비스 레지스트리 디바이스로부터 상기 통지를 수신하는 단계; 그리고
    상기 서비스 매니저 디바이스에 의해서, 상기 통지를 수신하는 것에 응답하여, 능력에 대한 새로운 서비스의 배포를 시작하거나 상기 시스템 내의 새로운 서비스의 배포된 인스턴스의 위치를 알아내는 단계를 포함하는,
    방법.
  13. 제12 항에 있어서, 상기 통지는 서비스가 상기 제2 서비스 레지스트리에 연관된 제1 노드에서 배포 가능함을 나타내는 것을 포함하고,
    상기 방법은,
    상기 통지를 수신하는 것에 응답하여, 상기 제1 노드에서 서비스에 대한 배포를 시작하는 단계를 더 포함하는,
    방법.
  14. 제13항에 있어서,
    제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 새로운 서비스에 연관된, 또 다른 통지를 수신하되, 상기 다른 통지는 서비스가 상기 제2 서비스 레지스트리에 연관된 제1 노드에서 더 이상 가용하지 않음을 나타내는 단계;
    상기 서비스가 배포 가능한 제2 노드를 식별하는 단계; 및
    상기 제2 노드를 식별하는 것에 응답하여, 상기 제2 노드에서 상기 서비스의 배포를 시작하는 단계를 더 포함하는,
    방법.
  15. 제12 항에 있어서, 상기 통지는 서비스가 시스템 내에서 배포되었음을 나타내는 것을 포함하고,
    상기 방법은,
    상기 통지를 수신하는 것에 응답하여, 상기 시스템 내의 서비스의 배포된 인스턴스의 위치를 알아내는 단계를 더 포함하는,
    방법.
  16. 제12 항에 있어서,
    제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 새로운 서비스에 연관된, 또 다른 통지를 수신하되, 상기 다른 통지는 서비스가 상기 제2 서비스 레지스트리에 연관된 제1 노드에서 더 이상 가용하지 않음을 나타내는 단계;
    상기 서비스가 배포 가능한 제2 노드를 식별하는 단계; 및
    상기 제2 노드를 식별하는 것에 응답하여, 상기 제2 노드에서 상기 서비스의 배포를 시작하는 단계를 더 포함하는,
    방법.
  17. 제12 항에 있어서,
    상기 제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 상기 서비스에 연관된, 또 다른 통지를 수신하되, 상기 다른 통지는 새로운 서비스가 상기 제2 서비스 레지스트리에 연관된 제1 노드에서 더 이상 가용하지 않음을 나타내는 단계;
    상기 시스템 내의 다른 어떠한 노드에서도 서비스가 배포 가능하지 않음을 결정하는 단계;
    상기 시스템 내의 다른 어떠한 노드에서도 서비스가 배포 가능하지 않음을 결정하는 단계에 응답하여, 관리자에게 경보를 전송하는 단계를 더 포함하는,
    방법.
  18. 제12항에 있어서,
    상기 제1 서비스 레지스트리를 통해 상기 제2 서비스 레지스트리로부터, 상기 서비스와 관련된, 또 다른 통지를 수신하되, 상기 다른 통지는 상기 서비스와 관련된 프로퍼티(property)가 변경되었음을 나타내는 단계;
    상기 서비스가 상기 능력에 관련된 요건(requirements)을 더 이상 만족하지 못함을 결정하는 단계;
    상기 서비스가 능력에 연관된 요건을 더 이상 만족하지 못함을 결정하는 것에 응답하여, 제1 노드에서 상기 서비스의 배포를 종료하는 단계;
    상기 서비스가 배포 가능한 제2 노드를 식별하는 단계; 및
    상기 제2 노드를 식별하는 것에 응답하여, 상기 제2 노드에서 서비스의 배포를 시작하는 단계를 더 포함하는,
    방법.
  19. 제 18항에 있어서, 상기 서비스에 연관된 프로퍼티는
    가용하는 메모리 용량;
    상기 서비스가 배포된 상기 제1 노드의 처리 용량;
    상기 제1 노드의 위치;
    상기 제1 노드의 범위(coverage);
    상기 제1 노드에 연관된 환경 조건; 또는
    상기 제1 노드에 연관된 신호 품질의 측정치 중 적어도 하나를 포함하는,
    방법.
  20. 제 12항에 있어서,
    상기 시스템 내에서 요청 노드(requesting node)로부터, 특정 서비스에 대한 요청을 수신하는 단계;
    상기 시스템 내에서 특정 서비스가 배포되지 않았음을 결정하는 단계;
    상기 제1 서비스 레지스트리 또는 상기 제2 서비스 레지스트리 중 적어도 하나를 기초로 배포 노드(deploying node)를 선택하는 단계; 및
    상기 수신된 요청을 기초로, 선택된 배포 노드에서 상기 특정 서비스를 배포하는 단계를 더 포함하는,
    방법.

KR1020150036149A 2014-03-18 2015-03-16 서비스 지향 아키텍쳐 내에서 능력을 모니터링하는 방법 KR101762237B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/218,579 2014-03-18
US14/218,579 US9705995B2 (en) 2014-03-18 2014-03-18 Capability monitoring in a service oriented architecture

Publications (2)

Publication Number Publication Date
KR20150108768A KR20150108768A (ko) 2015-09-30
KR101762237B1 true KR101762237B1 (ko) 2017-08-04

Family

ID=50473028

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150036149A KR101762237B1 (ko) 2014-03-18 2015-03-16 서비스 지향 아키텍쳐 내에서 능력을 모니터링하는 방법

Country Status (6)

Country Link
US (1) US9705995B2 (ko)
EP (1) EP2921955B1 (ko)
JP (1) JP6195860B2 (ko)
KR (1) KR101762237B1 (ko)
CN (1) CN104935454B (ko)
TW (1) TWI631475B (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10097431B1 (en) 2014-06-06 2018-10-09 Amazon Technologies, Inc. Routing to tenant services utilizing a service directory
US10250455B1 (en) * 2014-06-06 2019-04-02 Amazon Technologies, Inc. Deployment and management of tenant services
CN110474960B (zh) * 2014-12-23 2021-07-09 华为技术有限公司 一种虚拟化网络中业务部署的方法和装置
US10069941B2 (en) * 2015-04-28 2018-09-04 Microsoft Technology Licensing, Llc Scalable event-based notifications
EP3188015A1 (en) * 2015-10-05 2017-07-05 Axis AB Requesting and receiving a media stream within a networked system
CN105407161B (zh) * 2015-11-30 2019-06-14 北京奇艺世纪科技有限公司 应用服务管理方法、系统及应用服务发现方法、系统
US10539966B2 (en) 2016-09-28 2020-01-21 Denso Corporation Service cooperation system for vehicle
JP6805765B2 (ja) 2016-10-21 2020-12-23 富士通株式会社 ソフトウェアサービスの実行のためのシステム、方法、及びプログラム
JP7100422B2 (ja) 2016-10-21 2022-07-13 富士通株式会社 データプロパティ認識のための装置、プログラム、及び方法
ES2765415T3 (es) 2016-10-21 2020-06-09 Fujitsu Ltd Aparato, método y programa de procesamiento de datos basado en microservicios
EP3312722A1 (en) 2016-10-21 2018-04-25 Fujitsu Limited Data processing apparatus, method, and program
US10776170B2 (en) 2016-10-21 2020-09-15 Fujitsu Limited Software service execution apparatus, system, and method
US10454836B2 (en) * 2016-11-01 2019-10-22 At&T Intellectual Property I, L.P. Method and apparatus for dynamically adapting a software defined network
US11057496B2 (en) 2018-09-05 2021-07-06 Nutanix, Inc. Distributed computing systems having capability services
CN110049089A (zh) * 2019-01-09 2019-07-23 阿里巴巴集团控股有限公司 一种服务注册中心
EP3712768B1 (en) 2019-03-18 2024-05-01 Sony Group Corporation Management of services in an edge computing system
CN113132431B (zh) * 2019-12-31 2023-01-31 网联清算有限公司 服务监控方法、服务监控装置、电子设备及介质
US11677810B2 (en) * 2021-07-23 2023-06-13 International Business Machines Corporation Configuration tool for deploying an application on a server
US11789718B2 (en) 2022-01-07 2023-10-17 Dell Products L.P. System and method for subscription based solution modification implementation
US11947433B2 (en) 2022-01-07 2024-04-02 Dell Products L.P. System and method for subscription based solution management
US11588909B1 (en) * 2022-01-07 2023-02-21 Dell Products L.P. System and method for subscription based solution data compatibility
US11829740B2 (en) * 2022-01-07 2023-11-28 Dell Products L.P. System and method for deployment level management of subscription based solutions
US11861577B2 (en) 2022-01-07 2024-01-02 Dell Products L.P. System and method for distributed enforcement of configuration limitations
US11888690B2 (en) 2022-01-07 2024-01-30 Dell Products L.P. System and method for subscription limitation enforcement in distributed system
US11907153B2 (en) 2022-01-07 2024-02-20 Dell Products L.P. System and method for distributed subscription management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060235973A1 (en) * 2005-04-14 2006-10-19 Alcatel Network services infrastructure systems and methods
US20090077251A1 (en) * 2007-09-13 2009-03-19 International Business Machines Corporation Protocol for enabling dynamic and hierarchical interconnection of autonomous federations of enterprise service buses
US20110238795A1 (en) * 2010-03-26 2011-09-29 International Business Machines Corporation Semantic Matching of Federation Intents and Services Capabilities in a Planning System for Automatic Service Federation

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185611B1 (en) 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6604140B1 (en) 1999-03-31 2003-08-05 International Business Machines Corporation Service framework for computing devices
US6625274B1 (en) * 1999-10-12 2003-09-23 Broadsoft, Inc. Computer system and method for providing services to users of communication systems using service entities, interface entities, and a service bus
ATE548836T1 (de) * 2001-06-18 2012-03-15 Research In Motion Ltd Verfahren und vorrichtung zur nachrichtenverwaltung
US7765297B2 (en) * 2001-11-13 2010-07-27 Qualcomm Incorporated System for providing online service reports
US7822860B2 (en) * 2001-12-11 2010-10-26 International Business Machines Corporation Method and apparatus for dynamic reconfiguration of web services infrastructure
US7151966B1 (en) * 2002-06-04 2006-12-19 Rockwell Automation Technologies, Inc. System and methodology providing open interface and distributed processing in an industrial controller environment
US20040128345A1 (en) * 2002-12-27 2004-07-01 Robinson Scott H. Dynamic service registry
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7181521B2 (en) * 2003-03-21 2007-02-20 Intel Corporation Method and system for selecting a local registry master from among networked mobile devices based at least in part on abilities of the mobile devices
EP1494394A1 (en) * 2003-06-30 2005-01-05 Sony International (Europe) GmbH Distance-aware service mechanism for determining the availability of remote services in wireless personal area networks
TW200532480A (en) * 2003-12-19 2005-10-01 Ibm Dynamic late binding of third party on demand services in an on-demand infrastructure
US7711780B1 (en) * 2004-07-20 2010-05-04 Oracle America, Inc. Method for distributed end-to-end dynamic horizontal scalability
JP4799419B2 (ja) * 2004-10-20 2011-10-26 富士通株式会社 設定プログラム、設定方法、および設定装置
US9084178B2 (en) * 2005-02-08 2015-07-14 Nokia Technologies Oy System and method for services access
US7483438B2 (en) * 2005-04-14 2009-01-27 Alcatel Lucent Systems and methods for managing network services between private networks
US20060265508A1 (en) * 2005-05-02 2006-11-23 Angel Franklin J System for administering a multiplicity of namespaces containing state information and services
WO2007064849A1 (en) * 2005-12-01 2007-06-07 Cassatt Corporation Automated deployment and configuration of applications in an autonomically controlled distributed computing system
CN100558038C (zh) * 2006-03-31 2009-11-04 国际商业机器公司 服务注册器以及相关系统和方法
CN100534047C (zh) * 2006-04-28 2009-08-26 国际商业机器公司 对Web服务资源的基于属性的索引和/或查询方法及系统
CN101090371B (zh) * 2006-06-14 2011-02-02 阿里巴巴集团控股有限公司 一种即时通讯系统中用户信息管理的方法及系统
US7519711B2 (en) * 2006-06-15 2009-04-14 International Business Machines Corporation Method for middleware assisted system integration in a federated environment
US7496893B2 (en) * 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
DE602006014831D1 (de) * 2006-09-13 2010-07-22 Alcatel Lucent Verkettung von Web Services
US20080091807A1 (en) * 2006-10-13 2008-04-17 Lyle Strub Network service usage management systems and methods
US8644820B2 (en) * 2006-11-13 2014-02-04 Samsung Electronics Co., Ltd. Apparatus and method for acquiring service information in wireless network
EP2009548A1 (en) * 2007-06-26 2008-12-31 Nxp B.V. Signal processing architecture and method
US20090089078A1 (en) * 2007-09-28 2009-04-02 Great-Circle Technologies, Inc. Bundling of automated work flow
US8473325B2 (en) * 2007-10-12 2013-06-25 Pie Digital, Inc. System and method for automatic configuration and management of home network devices using a hierarchical index model
US7987163B2 (en) * 2008-02-12 2011-07-26 Bae Systems Information And Electronic Systems Integration Inc. Apparatus and method for dynamic web service discovery
US9021083B2 (en) * 2008-11-26 2015-04-28 Red Hat, Inc. Service oriented architecture with dynamic policy enforcement points
US8448185B2 (en) * 2009-03-23 2013-05-21 Siemens Aktiengesellschaft Method and system for dynamic discovery of services in a communication framework
US20100332622A1 (en) 2009-06-25 2010-12-30 Sun Microsystems, Inc. Distributed Resource and Service Management System and Method for Managing Distributed Resources and Services
MY164485A (en) * 2009-07-20 2017-12-29 Mimos Berhad A method and system for an intelligent framework of a service orientated architecture
US8707171B2 (en) * 2009-08-04 2014-04-22 International Business Machines Corporation Service registry policy editing user interface
WO2011040695A1 (en) * 2009-10-01 2011-04-07 Lg Electronics Inc. Method and device for sharing objects in service groups of cpns enabler
US8856800B2 (en) * 2010-05-21 2014-10-07 Red Hat, Inc. Service-level enterprise service bus load balancing
US8904396B2 (en) 2010-07-27 2014-12-02 Ca, Inc. System and method of general service management
CN102377796B (zh) 2010-08-05 2015-06-10 中国人民解放军国防科学技术大学 基于OSGi的异构服务集成系统及方法
US9483312B2 (en) 2010-08-16 2016-11-01 International Business Machines Corporation Locating service endpoints from a service registry
US20120263103A1 (en) * 2010-10-04 2012-10-18 Yang Ju-Ting Method of Handling Zone Based Service Procedure
CN102063360A (zh) * 2010-11-29 2011-05-18 深圳市五巨科技有限公司 一种远程服务器监控报警的方法和装置
US8965957B2 (en) * 2010-12-15 2015-02-24 Sap Se Service delivery framework
US20120209903A1 (en) * 2011-02-14 2012-08-16 General Electric Company Method, system and computer program product for extensible service registry for service oriented architecture endpoints
US9389922B2 (en) * 2011-03-11 2016-07-12 International Business Machines Corporation Declarative service domain federation
US8966039B1 (en) * 2011-04-25 2015-02-24 Sprint Communications Company L.P. End-to-end communication service monitoring and reporting
US8930493B2 (en) * 2012-03-20 2015-01-06 International Business Machines Corporation Inter-domain replication of service information
CN104081381B (zh) * 2012-03-29 2017-08-04 企业服务发展公司有限责任合伙企业 用于实施概念服务的方法和装置
US9037678B2 (en) 2012-05-14 2015-05-19 Sap Se Distribution of messages in system landscapes
US9882787B2 (en) * 2014-01-09 2018-01-30 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Service management in appliance-based solutions
US9960964B2 (en) * 2014-02-18 2018-05-01 Cellos Software Ltd System, method and apparatus to manage services in a network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060235973A1 (en) * 2005-04-14 2006-10-19 Alcatel Network services infrastructure systems and methods
US20090077251A1 (en) * 2007-09-13 2009-03-19 International Business Machines Corporation Protocol for enabling dynamic and hierarchical interconnection of autonomous federations of enterprise service buses
US20110238795A1 (en) * 2010-03-26 2011-09-29 International Business Machines Corporation Semantic Matching of Federation Intents and Services Capabilities in a Planning System for Automatic Service Federation

Also Published As

Publication number Publication date
CN104935454A (zh) 2015-09-23
TW201543243A (zh) 2015-11-16
EP2921955A1 (en) 2015-09-23
CN104935454B (zh) 2019-10-15
KR20150108768A (ko) 2015-09-30
JP2015187859A (ja) 2015-10-29
US9705995B2 (en) 2017-07-11
EP2921955B1 (en) 2017-08-16
US20150271276A1 (en) 2015-09-24
TWI631475B (zh) 2018-08-01
JP6195860B2 (ja) 2017-09-13

Similar Documents

Publication Publication Date Title
KR101762237B1 (ko) 서비스 지향 아키텍쳐 내에서 능력을 모니터링하는 방법
US9860325B2 (en) Tunnel broker in a service oriented architecture
KR101604970B1 (ko) 서비스 지향 아키텍쳐 네트워크 내 서비스들의 검색 방법
US10547693B2 (en) Security device capability discovery and device selection
US9553831B2 (en) Adaptive publish/subscribe system
KR20180082555A (ko) M2m 서비스 계층에 대한 교차 리소스 가입
JP6599546B2 (ja) サービス層におけるアンルートリソース発見を可能にする方法
US11283638B1 (en) Determining the status of a node based on a distributed system
US20130304877A1 (en) System and method for dynamic configuration of isn store-based overlay network
CN106797319A (zh) 网络服务感知路由器及其应用
JP2017201776A (ja) 不均一ネットワークにまたがるコンテンツ配送
US10110423B2 (en) System and method for managing network connections
JP5664662B2 (ja) 管理システム、管理装置、管理方法および管理プログラム
KR20180034603A (ko) 서비스 요소 호스트 선택
JP2016100816A (ja) 仮想ネットワーク管理装置及び方法
Okathe et al. Middleware for Smart Heterogeneous Critical Infrastructure Networks Intercommunication
CN116366490A (zh) 一种骨干网络链路状态监控方法和系统
JP2013069146A (ja) バックアップ装置、バックアップ方法、及びバックアッププログラム

Legal Events

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