KR102522918B1 - Rpc 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체 - Google Patents

Rpc 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체 Download PDF

Info

Publication number
KR102522918B1
KR102522918B1 KR1020210034399A KR20210034399A KR102522918B1 KR 102522918 B1 KR102522918 B1 KR 102522918B1 KR 1020210034399 A KR1020210034399 A KR 1020210034399A KR 20210034399 A KR20210034399 A KR 20210034399A KR 102522918 B1 KR102522918 B1 KR 102522918B1
Authority
KR
South Korea
Prior art keywords
node
rpc
member list
cluster
list
Prior art date
Application number
KR1020210034399A
Other languages
English (en)
Other versions
KR20210038457A (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 KR20210038457A publication Critical patent/KR20210038457A/ko
Application granted granted Critical
Publication of KR102522918B1 publication Critical patent/KR102522918B1/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/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • 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
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • 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
    • 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/55Push-based network 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 개시는 클라우드 서비스에서 마이크로 서비스 기술분야에 관한 것으로, 서비스 RPC 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체를 제공하며, 그 중, 상기 방법은: RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하고, 상기 RPC 클러스터의 각 노드의 멤버 리스트가 동기화를 구현할 때까지, 상기 RPC 클러스터의 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 단계를 포함한다. 본 개시의 기술에 따라, RPC 클러스터의 각 노드의 멤버 리스트는 최종적으로 모두 수렴동기화를 구현할 수 있고, 각 노드는 최종적으로 모두 전체 RPC 멤버의 관련정보를 획득할 수 있고, 네트워크에서 고장이 발생하더라도, 고장을 제거한 후, 각 노드의 멤버 리스트는 최종적으로 모두 수렴동기화를 구현할 수 있다. 본 개시는 클라우드 플랫폼 및 사물인터넷에 응용될 수 있고, 전체 클라우드 서비스 시스템의 정상적이고 안정적인 작업을 확보할 수 있다.

Description

RPC 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체{METHOD AND APPARATUS FOR ACQUIRING RPC MEMBER INFORMATION, ELECTRONIC DEVICE AND STORAGE MEDIUM}
본 개시는 클라우드 서비스 중의 마이크로 서비스 기술분야에 관한 것으로, 특히 RPC 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체에 관한 것이다.
클라우드 서비스는 확장적인 요구를 만족시키기 위해, 점점 더 많은 마이크로 서비스의 아키텍처 방식을 채용하고 있으며, 각 마이크로 서비스마다 하나의 단일한 기능 세션을 책임지고 있고, 마이크로 서비스와 마이크로 서비스 사이에는 RPC(Remote-Procedure-Call, 원격 프로세스 호출)를 통해 통신 및 상호 호출을 진행한다.
전체 시스템의 정상적인 작업을 위해, 각 RPC 노드는 모두 RPC 멤버의 관련정보를 획득하여야 한다. 현재 통상적으로 중심화된 발견 메커니즘을 채용하여 RPC 멤버 정보의 획득을 구현하고 있으며, 즉 마이크로 서비스 외에 별도로"서비스 등록 센터"라는 컴포넌트를 도입하여, RPC 노드는 작동시 "서비스 등록 센터"에 자신을 등록하고, 기타 RPC 노드는 "서비스 등록 센터"를 통해 최신 RPC 멤버 정보를 동태적으로 획득한다. 그러나 별도로 "서비스 등록 센터"의 컴포넌트를 도입함으로서 클라우드 서비스의 시스템 복잡도 및 작업과 유지보수 복잡도를 증가시킬 뿐만 아니라, 잠재적인 단일 포인트 작업과 유지보수 위험을 수반하며, "서비스 등록 센터" 실효시, 전체 시스템은 사용될 수 없게 된다.
본 개시는 RPC 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체를 제공한다.
제1 측면에 있어서, 본 개시는 RPC 멤버 정보 획득 방법을 제공하며, 상기 방법은:
RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하고, 상기 RPC 클러스터의 각 노드의 멤버 리스트가 동기화를 구현할 때까지, 상기 RPC 클러스터의 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 단계를 포함한다.
제2 측면에 있어서, 본 개시는 RPC 멤버 정보 획득 장치를 제공하며, 상기 장치는:
RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하고, 상기 RPC 클러스터의 각 노드의 멤버 리스트가 동기화를 구현할 때까지, 상기 RPC 클러스터의 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하기 위한 제1 동기화 모듈을 포함한다.
제3 측면에 있어서, 본 개시는 전자 기기를 제공하며, 상기 전자 기기는:
적어도 하나의 프로세서; 및
적어도 하나의 프로세서와 통신 연결되는 메모리; 를 포함하며,
그 중, 상기 메모리에 상기 적어도 하나의 프로세서에 의해 실행가능한 명령이 저장되어 있으며, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서더러 제1 측면에서의 임의의 한 항에 따른 방법을 실행할 수 있도록 한다.
제4 측면에 있어서, 본 개시는 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체를 제공하고, 상기 컴퓨터 명령은 상기 컴퓨터더러 제1 측면에서의 임의의 한 항에 따른 방법을 실행할 수 있도록 한다.
본 개시의 기술에 따르면, RPC 클러스터의 각 노드는 각자의 로컬 멤버 리스트를 상호 푸시하는 것을 통해, 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하며, 이 과정은 RPC 클러스터의 각 노드의 멤버 리스트로 하여금 최종적으로 모두 수렴 및 동기화를 구현할 수 있도록 하며, 각 노드는 최종적으로 모두 전부의 RPC 멤버 정보의 관련정보를 획득할 수 있으며, 따라서, 전체 클라우드 서비스 시스템의 정상적이고 안정적인 작업을 확보할 수 있다. 본 개시는 RPC 멤버 정보를 획득하는 과정에서, 인공이 간섭할 필요 없고, 별도로 컴포넌트를 도입할 필요도 없으며, 네트워크에서 고장이 발생하더라도, 고장을 제거한 후, 각 노드의 멤버 리스트는 최종적으로 모두 수렴 및 동기화를 구현할 수 있다.
본문에서 설명되는 내용들은 본 개시의 실시예의 관건 또는 중요한 특징을 표시하는 것이 아니며, 또한 본 개시의 범위를 제한하기 위한 것이 아님을 이해할 수 있다. 본 개시의 기타 특징들은 아래와 같은 설명서를 통해 쉽게 이해할 수 있다.
도면들은 해당 기술방안에 대한 이해를 돕기 위한 것이지, 본 개시에 대한 한정을 구성하지 않는다.
도 1은 본 개시의 제1 실시예에 따른 RPC 멤버 정보 획득 방법의 흐름 예시도이다.
도 2는 본 개시의 제1 실시예에 따른 RPC 클러스터 중 멤버 정보의 예시도이다.
도 3은 본 개시의 제2 실시예에 따른 RPC 멤버 정보 획득 장치의 구조 예시도이다.
도 4는 본 개시의 실시예의 RPC 멤버 정보 획득 방법을 구현하기 위한 전자 기기의 블록도이다.
이하, 본 개시의 실시예에서의 도면을 결부시켜, 본 개시의 실시예에 따른 기술방안을 명확하고 완전하게 설명하기로 한다. 그 중에는 이해를 돕기 위한 본 개시의 실시예의 각종 디테일도 포함되어 있고, 전술한 실시예들은 단지 예시적인 것이며, 해당 기술분야에서 통상의 지식을 가진 자들은 본 개시의 실시예에 대해 본 개시의 정신 및 특허청구범위를 일탈하지 않고 다양한 개변 및 변형을 진행할 수 있다. 간단 명료하게 설명하기 위해, 아래에서는 해당 기술분야에 공지된 기능 및 구조에 대해 진일보하여 기술하지 않기로 한다.
본 개시는 RPC 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체를 제공하여, RPC 마이크로 서비스의 서비스 발견 문제를 해결하려 한다. 본 개시에 대해 설명을 진행하기 전에, 아래에서 먼저 RPC 마이크로 서비스 및 RPC 마이크로 서비스의 서비스 발견의 관련기술에 대해 간단한 소개와 설명을 진행하려 한다.
클라우드 서비스는 확장적인 요구를 만족시키기 위해, 점점 더 많은 마이크로 서비스의 아키텍처 방식을 채용하고 있으며, 각 마이크로 서비스마다 하나의 단일한 기능 세션을 책임지고 있고, 마이크로 서비스와 마이크로 서비스 사이에는 RPC(Remote-Procedure-Call, 원격 프로세스 호출)를 통해 통신 및 상호 호출을 진행한다. 즉 RPC 마이크로 서비스이다. RPC 마이크로 서비스는 로직상에서 RPC 클라이언트(RPC Client) 및 RPC 서버(RPC Server) 두 가지를 포함하며, 배치상에서 RPC 클라이언트 프로세스 실시예는 RPC 서버 프로세스 실시예의 프로세스 공간에서 실행된다.
RPC 마이크로 서비스 시스템의 실행과정에서, 프로세스 실시예의 수량, 실행 정보 등은 모두 변화가 발생할 수 있으며, 전체 시스템의 정상적인 작업을 위해, 각 RPC 클라이언트는 모두 RPC 서비스의 관건적인 실행 정보를 획득하여야 하는바, 예컨대: 서비스 주소, 포트 등이다. 이것은 RPC 마이크로 서비스의 서비스 발견에 관련된 것으로, 즉, 각 실행 중인 RPC 클라이언트 프로세스 실시예는 최신 실행 중인 RPC 서버 프로세스 실시예의 리스트를 실시간으로 획득하여야 한다.
관련기술에서, 인공을 통해 RPC 서버의 수량 변경에 대해 정적으로 배치한 동기화 업데이트를 진행할 수 있으며, 이는 규모가 비교적 작고, 클러스터 규모의 변경이 빈번하지 않고, SLA(Service Level Agreement,서비스 레벨 프로토콜)에 대해 요구가 높지 않은 시나리오에만 적용된다. 또한 중심화된 발견 메커니즘을 채용하여 RPC 클라이언트가 RPC 서버를 발견하는 서비스 발견 과정을 구현할 수 있으며, 해당 중심화된 발견 메커니즘은 마이크로 서비스 외에 별도로"서비스 등록 센터"라는 컴포넌트를 도입하여야 하고, RPC 클라이언트는 부팅 시 "서비스 등록 센터"에 자신을 등록하고, RPC 클라이언트는 "서비스 등록 센터"를 통해 최신 RPC 서버 리스트를 동적으로 획득한다. 그러나 별도로 컴포넌트를 도입함으로서 클라우드 서비스의 시스템 복잡도 및 작업과 유지보수 복잡도를 증가시킬 뿐만 아니라, 동시에 잠재적인 단일 포인트 작업과 유지보수 위험을 수반하며, 예를 들면 컴포넌트가 효력을 잃을 때, 전체 시스템을 사용할 수 없다.
이로서, 본 개시는 중심화를 제거하는 RPC 마이크로 서비스 동적 발견 메커니즘을 제공하여, RPC 클러스터 멤버의 동적인 발견을 구현하고, RPC 멤버 정보 획득을 구현하려 한다.
이하, 본 개시의 예시적인 실시예에 대해 설명을 진행하려 한다.
도 1에서 도시하다시피, 도 1은 RPC 멤버 정보 획득 방법이며, 상기 방법은:
단계 101: RPC 클러스터의 각 노드에서 각자의 로컬 멤버 리스트를 상호 푸시하고, 상기 RPC 클러스터의 각 노드의 멤버 리스트가 동기화를 구현할 때까지, 상기 RPC 클러스터의 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 단계(101)를 포함한다.
상술한 RPC 클러스터는 실행 중인 RPC 클라이언트 및 RPC 서버 프로세스 실시예를 포함하는 애플리케이션 노드 클러스터로 이해할 수 있다. 각 프로세스 실시예는, RPC 클라이언트이든지 아니면 RPC 서버이든지, RPC 클러스터 중에서 모두 하나의 노드(Node)이고, 각 노드는 모두 RPC 클러스터 중의 멤버이다.
상술한 멤버 리스트(MemberList)는 기존의 클러스터 멤버 현상을 매핑 또는 특성화하기 위한 멤버 정보의 집합으로 이해할 수 있고, 멤버 리스트에는 RPC 클러스터의 부분 멤버 또는 전체 멤버의 관련정보가 포함될 수 있다. 멤버 리스트의 표현 형태는 리스트 형태에 제한되지 않고, 토폴로지 그래프, 태그, 시퀀스 다이어그램 등과 같은 형태로 표현될 수도 있다.
RPC 클러스터의 각 노드 사이에는 호스트(Host)에 의해 제공되는 네트워크 비동기 통신(Peer-to-Peer Communication)을 통해, 로컬(Local)에서 기존의 클러스터 멤버 현상을 반영하는 멤버 리스트를 획득할 수 있다.
본 개시의 실시예에서, RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하고, 만약 기타 노드에서 푸시한 멤버 리스트의 노드를 수신하여 수신 노드로 확정하고, 기타 노드에 멤버 리스트를 푸시하는 노드를 송신 노드(또는 푸시 노드)로 확정한다면, RPC 클러스터의 각 노드는 멤버 리스트의 수신 노드 역할을 할 수 있고, 또한 멤버 리스트의 송신 노드 역할을 할 수도 있으며, 동일한 하나의 멤버 리스트는, 송신 노드에 있어서, 기존의 로컬 멤버 리스트(localMemberList)이고, 수신 노드에 있어서, 수신된 멤버 리스트(또는 원격 멤버 리스트로 칭함(remoteMemberList))이다.
노드는 수신 노드 역할을 할 때, 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합(merge)을 진행할 수 있고, 즉, 수신 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 병합을 진행하는 과정에서, 중복된 노드를 제거하고, 중복된 것을 제거하는 병합(merge)을 진행한 후 획득된 멤버 리스트를 수신 노드에서 기존에 업데이트한 로컬 멤버 리스트로 확정한다.
RPC 클러스터의 각 노드는 미리 배치된 푸시 규칙에 따라, 각자의 로컬 멤버 리스트를 상호 푸시할 수 있으며, 각 노드는 동시에 또는 나눠서 또는 하나씩 로컬 멤버 리스트 중의 노드에 로컬 멤버 리스트를 송신할 수 있다.
본 개시의 실시예에서, RPC 클러스터의 각 노드는 각자의 로컬 멤버 리스트를 상호 푸시하는 것을 통해, 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하며, 이 과정은 RPC 클러스터의 각 노드의 멤버 리스트로 하여금 최종적으로 모두 수렴동기화를 구현할 수 있도록 하며, 각 노드는 최종적으로 모두 전체 RPC 멤버의 관련정보를 획득할 수 있고, 즉 네트워크에서 네트워크 파티션(Network Partition)과 같은 비정상이 발생하더라도, 비정상이 제거된 후, 각 노드의 멤버 리스트는 최종적으로 모두 수렴동기화를 구현할 수 있으며, 이로 인하여, 전체 클라우드 서비스 시스템의 정상적이고 안정적인 작업을 확보할 수 있다. 본 개시는 클라우드 플랫폼 및 사물인터넷에 응용될 수 있다.
본 개시의 실시예는 상술한 RPC 멤버 정보 획득 과정에서, 인공이 간섭할 필요 없고, 별도로 컴포넌트를 도입할 필요도 없이, 중심화를 제거하는 RPC 마이크로 서비스의 동적인 발견을 구현하였고, 중심화된 RPC 마이크로 서비스 동적 발견 메커니즘에 비해, 시스템의 작업과 유지보수 난이도를 감소하고, 시스템 작업과 보수유지 위험을 감소하며, 시스템의 작업과 보수유지 효율을 향상시킬 수 있다.
선택적으로, 상기 RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하는 단계는:
RPC 클러스터의 각 노드가 각 기설정 시간 간격마다 랜덤으로 기존의 로컬 멤버 리스트 중의 임의의 하나의 노드에 각자의 로컬 멤버 리스트를 푸시하는 단계; 및
멤버 리스트를 수신한 노드가 대응되는 푸시 노드에 기존의 로컬 멤버 리스트를 피드백하는 단계; 를 포함한다.
상기 실시방식에서, RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하는 과정은 푸시 과정 및 피드백 과정으로 나눌 수 있으며, 푸시 과정에서, RPC 클러스터의 각 노드가 각 기설정 시간 간격마다 랜덤으로 기존의 로컬 멤버 리스트 중의 임의의 하나의 노드에 각자의 로컬 멤버 리스트를 푸시하고, 피드백 과정에서, 멤버 리스트를 수신한 노드가 대응되는 푸시 노드에 기존의 로컬 멤버 리스트를 피드백한다.
그 중, 푸시 과정은 주요 과정으로 볼 수 있고, 상기 과정은 무한으로 순환되는 과정일 수 있으며, 만약 즉시 실행(immediate)이 아니라면, 각 기설정 시간 간격마다, 예를 들면 T개의 시간 단위마다 한번의 로컬 멤버 리스트가 트리거되어 랜덤으로 선택(selectRemotePeer)된 원격 노드에 동작을 푸시하고, Push 메시지를 송신하는 것을 통해 로컬 멤버 리스트의 푸시를 구현할 수 있다.
노드는 기타 노드에서 푸시한 멤버 리스트를 수신하여, 푸시 멤버 리스트의 노드에 기존의 로컬 멤버 리스트를 피드백할 수 있고, 예를 들면, 노드는 푸시 메시지를 수신하였을 때, 하나의 풀(Pull) 메시지를 피드백할 수 있고, 상기 풀 메시지에는 자신의 기존의 로컬 멤버 리스트를 포함할 수 있으며, 또한 수신된 멤버 리스트를 로컬 멤버 리스트와 중복된 것은 제거하고 병합하여, 획득된 새로운 멤버 리스트를 상기 노드의 기존의 새로운 로컬 멤버 리스트로 할 수 있다. 노드는 풀 메시지를 수신하였을 때, 상술한 푸시와 일치한 중복된 것은 제거하고 병합하는 과정을 진행할 수 있다.
예시적으로, 상술한 멤버 리스트의 수렴 과정은 아래와 같은 프로그램 또는 알고니즘을 통해 구현될 수 있다.
[01] syncMain(localMemberList, immediate){
[02] do forever
[03] if !immediate then wait(T time units)
[04] remotePeer = selectRemotePeer(localMemberList)
[05] push(localMemberList, remotePeer)
[06] }
[07] onPush(remoteMemberList, remotePeer){
[08] pull(localMemberList, remotePeer)
[09] localMemberList = merge(localMemberList, remoteMemberList)
[10] }
[11] onPull(remoteMemberList, remotePeer){
[12] localMemberList = merge(localMemberList, remoteMemberList)
[13] }
이상의 과정을 통해, RPC 클러스터의 멤버 규모가 N일 때, T*Log2(N)를 경유하는 시간에 RPC 클러스터의 멤버 리스트의 수렴동기화를 완료할 수 있고, 상기 과정은 RPC 클러스터가 어떠한 네트워크 비정상이 나타나든지 물론하고, 비정상이 제거된 후, 각 노드의 멤버 리스트는 최종적으로 모두 수렴동기화를 구현할 수 있다.
RPC 클러스터 멤버 리스트의 수렴동기화 속도는 파라미터 T 및 N의 영향을 받으며, 대부분 경우 RPC 클러스터는 정상적으로 작업하고, T는 비교적 큰 값을 선택할 수 있는바, 예를 들면 몇 분이다.
선택적으로, 상기 RPC 클러스터의 각 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 과정에서, 만약 제4 노드의 노드 상태가 상이한 멤버 리스트에서 상이하다면, 우선 순위 레벨이 비교적 높은 노드 상태를 상기 제4 노드의 멤버 리스트에서의 노드 상태인 것으로 확정한다.
상술한 노드 상태는 노드가 처한 상태이고, 노드 상태는 예를 들면 생존 상태(Alive) 및 사망 상태(Dead)를 포함할 수 있다. 노드가 멤버 리스트에 대해 중복된 것을 제거하는 병합을 진행하는 과정에서, 상이한 멤버 리스트에서, 동일한 노드가 존재할 수 있고, 그러나, 동일한 노드가 처한 노드 상태는 동일할 수 있고 상이할 수도 있으며, 노드 상태가 동일한 경우, 상기 노드의 중복되는 항을 제거하고, 단지 하나의 노드만 보류하면 되며; 노드 상태가 동일하지 않을 경우, 노드 상태의 우선 순위 레벨에 따라 상기 노드의 노드 상태를 확정하여야 한다.
본 개시의 실시예에서, 노드 상태의 우선 순위 레벨의 높고 낮음은 단지 노드 상태에 의해 확정될 수 있으며, 또한 노드 상태의 업데이트 시간의 선후를 결부하여 확정될 수 있다.
예컨대, 제4 노드의 노드 상태는 로컬 멤버 리스트에서 사망 상태이고, 수신된 멤버 리스트에서 생존 상태이며, 생존 상태의 우선 순위 레벨은 사망 상태의 우선 순위 레벨보다 높다고 가설하면, 노드는 멤버 리스트에 대해 중복된 것을 제거하는 병합을 진행할 때, 로컬 멤버 리스트에서 제4 노드의 노드 상태를 생존 상태로 변경할 수 있으며; 사망 상태의 우선 순위 레벨은 생존 상태의 우선 순위 레벨보다 높다면, 노드는 멤버 리스트에 대해 중복된 것을 제거하는 병합을 진행할 때, 로컬 멤버 리스트에서 제4 노드의 노드 상태를 사망 상태로 유지할 수 있다.
노드는 생존 상태로부터 사망 상태로 전환될 수 있고, 일반적으로 사망 상태로부터 생존 상태로 전환되지 않기에, 노드 상태는 생존 상태 및 사망 상태를 포함하는 경우를 고려하여, 사망 상태의 우선 순위 레벨은 생존 상태의 우선 순위 레벨보다 높다. 이로서, 제4 노드의 노드 상태는 로컬 멤버 리스트에서 생존 상태이고, 수신된 멤버 리스트에서 사망 상태라면, 로컬 멤버 리스트에서 제4 노드의 노드 상태를 사망 상태로 변경할 수 있다.
본 개시의 실시예에서, 노드 상태가 상이한 경우, 우선 순위 레벨이 비교적 높은 노드 상태를 노드가 멤버 리스트에서의 노드 상태인 것으로 확정하는 것을 통해, 각 멤버 리스트 중의 노드 상태의 동기화를 구현할 수 있고, 또한 각 멤버 리스트 중 각 노드의 노드 상태를 더 정확하게 한다.
선택적으로, 상기 방법은:
상기 RPC 클러스터에 제1 노드를 새로 추가한 경우, 상기 제1 노드가 시드 노드와 멤버 리스트 동기화를 진행하는 단계;
상기 제1 노드에서 기존의 로컬 멤버 리스트 중의 각 노드에 활성화 메시지를 송신하는 단계; 및
상기 활성화 메시지를 수신한 노드에서 상기 제1 노드를 멤버 리스트 중에 추가하는 단계; 를 더 포함한다.
그 중, 시드 노드는 임의의 실행중인 RPC 클러스터의 멤버 노드로 이해할 수 있고, 제1 노드는 RPC 클러스터에서 하나의 노드를 랜덤으로 선택하여 시드 노드로 확정할 수 있고, 또한 시스템에서 제1 노드를 위해 하나의 노드를 지정하여 시드 노드로 확정할 수 있으며, 등등이다.
본 개시의 실시예에서, RPC 클러스터의 각 노드에서 각자의 로컬 멤버 리스트를 상호 푸시하는 과정을 통해 RPC 클러스터 멤버 리스트의 수렴을 구현하며, 상기 수렴 과정은 새로 추가된 노드의 동기에 있어서 비교적 느리며, 즉, RPC 클러스터 중에 노드를 새로 추가하면, 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하는 방식을 채용하여, 최종적으로 새로 추가한 노드가 각 노드의 로컬 멤버 리스트에서 동기화를 구현하는데, 이 과정은 일반적으로 비교적 느리다.
상기 실시방식은 더욱 신속하게 새로 추가한 노드를 동기화하는 방안을 제공한다. 상기 실시방식에서, RPC 클러스터에 제1 노드를 새로 추가하는 경우, 상기 제1 노드는 먼저 시드 노드와 멤버 리스트 동기화를 진행할 수 있으며, 이로서, 제1 노드는 시드 노드의 멤버 리스트를 획득할 수 있고, 즉, 제1 노드의 자신의 로컬 멤버 리스트는 시드 노드 멤버 리스트 중의 멤버 정보를 포함할 것이다. 그 후, 제1 노드는 기존의 로컬 멤버 리스트 중의 각 노드에 활성화 메시지(Alive 메시지)를 송신할 수 있고, 상기 활성화 메시지를 수신한 노드는 제1 노드를 각자의 로컬 멤버 리스트에 추가할 수 있다.
설명해야 할 것은, 전술한 RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하는 과정을 통해, RPC 클러스터 멤버 리스트의 수렴을 구현하고, 시드 노드의 멤버 리시트도 상응하게 수렴동기화를 구현하며, 시드 노드의 멤버 리스트에도 기존의 RPC 클러스터의 모든 멤버 리스트가 포함되어 있다. 이로 인하여, 제1 노드와 시드 노드가 멤버 리스트 동기화를 진행하는 것을 통해, 상응하게 기존의 RPC 클러스터의 모든 멤버 리스트를 획득하였다. 그러나, 제1 노드에서 송신한 활성화 메시지는 기존의 RPC 클러스터의 임의의 노드까지 전달되어, 기존의 RPC 클러스터의 임의의 노드더러 모두 제1 노드에 의해 송신된 활성화 메시지를 수신할 수 있도록 확보하며, 따라서 기존의 RPC 클러스터의 임의의 노드는 모두 제1 노드를 각자의 로컬 멤버 리스트에 추가할 수 있고, 새로운 멤버 리스트 수렴동기화를 구현한다.
상기 실시방식에서, 새로 추가한 노드의 추가 과정(joinMain)은 네트워크 비동기 통신의 Gossip 통신 알고니즘 틀 내에서 구축될 수 있고, 각 새로 추가한 노드는 먼저 시드 노드와 바로 멤버 리스트의 수렴 과정을 완료한 후, Gossip의 방향을 통해 RPC 클러스터의 각 노드에 활성화 메시지를 송신할 수 있다. Gossip 프로토콜은 유행병 전파방식인 노드 또는 프로세스 사이의 정보 교환을 토대로 한 프로토콜이고, Gossip 과정은 활성화 메시지가 보다 빠르게 확산되는 것을 보장하여, 멤버 리스트 업데이트의 실시간성을 확보할 수 있다.
상기 실시방식에서, 상술한 과정을 통해, 더욱 신속하게 새로 추가할 노드를 더욱 신속하게 추가하는 것을 구현할 수 있으며, 따라서 더욱 신속하게 멤버 리스트의 수렴동기화를 구현할 수 있다.
선택적으로, 상기 제1 노드가 시드 노드와 멤버 리스트 동기화를 진행하는 단계는:
상기 제1 노드가 자신 및 상기 시드 노드를 멤버 리스트에 추가하는 단계;
상기 시드 노드와 상기 제1 노드가 각자의 멤버 리스트를 상호 푸시하는 단계; 및
상기 제1 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 단계; 를 포함한다.
그 중, 제1 노드가 수신한 멤버 리스트는 즉 시드 노드의 로컬 멤버 리스트이고, 제1 노드의 기존의 로컬 멤버 리스트는 즉 제1 노드 및 시드 노드를 포함하는 멤버 리스트이다.
예시적으로, 상술한 노드를 새로 추가하는 과정은 아래와 같은 프로그램 또는 알고니즘을 통해 구현될 수 있다.
[01] joinMain(seed, localMemberList){
[02] add(localMemberList,self) //자신을 멤버 리스트로 추가
[03] add(localMemberList,seed) //시드 노드를 멤버 리스트로 추가
[04] syncMain(localMemberList, true) //시드 노드와 멤버 리스트를 동기화
[05] gossip(localMemberList, alive) //클러스터 멤버에 자신의 활성 정보를 확산
[06] }
[07] onAlive(alive) {
[08] add(localMemberList, alive)
[09] }
선택적으로, 상기 방법은:
상기 RPC 클러스터의 제2 노드가 제3 노드를 비정상 노드인 것으로 식별하는 경우, 기존의 로컬 멤버 리스트 중의 각 노드에 비정상 메시지를 송신하는 단계; 및
상기 비정상 메시지를 수신한 노드는 상기 제3 노드를 각자의 멤버 리스트 중에서 삭제하거나, 또는 각자의 멤버 리스트 중에서 상기 제3 노드를 비정상 노드로 라벨링하는 단계; 를 더 포함한다.
RPC 클러스터의 멤버는 수시로 고장 또는 비정상이 발생할 수 있으며, 고장 또는 비정상이 발생할 때, 건강한 노드는 실시간으로 감지하고 로컬 멤버 리스트를 제때에 업데이트하여야 한다.
노드와 노드 사이에는 일부 방식을 통해 상대방이 비정상 노드인지 여부를 식별할 수 있고, 상기 실시방식에서, RPC 클러스터의 제2 노드는 제3 노드를 비정상 노드인 것으로 식별하는 경우, 제2 노드는 기존의 로컬 멤버 리스트 중의 각 노드에 비정상 메시지(Dead 메시지)를 송신할 수 있고, 상기 비정상 메시지는 제3 노드가 비정상 노드라는 것을 지시하기 위한 것이며, 상기 비정상 메시지는 제3 노드의 관련정보를 포함할 수 있는바, 예컨대, 제3 노드의 유일한 표식, 제3 노드의 설명 정보, 제3 노드의 네트워크 접속 주소 등등이다. 그러나 상기 비정상 메시지를 수신한 노드는 제3 노드를 각자의 로컬 멤버 리시트에서 삭제할 수 있고, 각자의 로컬 멤버 리스트에서 제3 노드를 비정상 노드로 라벨링할 수도 있다.
비정상 노드는 식별된 후, 동일하게 Gossip 과정을 통해 전체 RPC 클러스터에 상기 비정상 노드에 관한 비정상 메시지를 확산할 수 있고, Gossip 과정은 비정상 메시지가 보다 빠르게 확산되는 것을 보장하여, 멤버 리스트 업데이트의 실시간성을 확보할 수 있다.
상기 실시방식에서, 상술한 과정을 통해, 더욱 신속하게 비정상 메시지의 확산을 구현할 수 있으며, 따라서 더욱 신속하게 멤버 리스트의 수렴동기화를 구현할 수 있다.
선택적으로, 상기 제2 노드가 상기 제3 노드가 비정상 노드인지 여부를 식별하는 단계는:
상기 제2 노드에서 상기 제3 노드에 심박 모니터링 요청 메시지를 송신하는 단계; 및
만약 상기 제2 노드가 기설정 시간내에 상기 제3 노드에서 송신한 심박 모니터링 피드백 메시지를 수신하지 않았다면, 상기 제2 노드는 상기 제3 노드를 비정상 노드인 것으로 식별하는 단계; 를 포함한다.
비정상 노드를 식별하는 문제는 분포식 환경에서의 고장 검출(Failure Detection) 문제에 속하고, 채용할 수 있는 방안은 다양하다. 상기 실시방식에서, 심박 모니터링 메시지(Heartbeat 메시지)를 통해 상대방의 노드의 존재를 확인할 수 있으며, 일정한 시간이 지나도 심박 모니터링 메시지를 수신하지 않았다면, 바로 상대방의 노드를 비정상 노드로 라벨링할 수 있다. 구체적으로, 제2 노드는 제3 노드가 비정상 노드인지 여부를 식별하는 방안은 아래와 같으며, 상기 방안은: 제2 노드는 제3 노드에 심박 모니터링 요청 메시지를 송신하고, 만약 제2 노드는 기설정 시간내에 제3 노드에서 송신한 심박 모니터링 피드백 메시지를 수신하지 않았다면, 제2 노드는 제3 노드를 비정상 노드로 라벨링한다. 여기서, 제3 노드는 제2 노드가 로컬 멤버 리스트에서 랜덤으로 선택한 임의의 노드일 수 있다.
예시적으로, 상술한 비정상 노드를 식별하는 과정은 아래와 같은 프로그램 또는 알고니즘을 통해 구현될 수 있다.
[10] detectMain(localMemberList){
[11] remotePeer = selectRemotePeer(localMemberList) //하나의 건강한 원격 노드를 랜덤으로 선택
[12] isDead = detect(remotePeer) //비정상 검출
[13] if isDead then
[14] markDead(localMemberList, remotePeer) //비정상 라벨링
[15] gossip(localMemberList, dead) //Gossip비정상 메시지
[16] }
[17] onDead(dead) {
[18] markDead(localMemberList, dead);
[19] }
상기 실시방식에서, 상술한 과정을 통해, 메시지 수량이 비교적 적게 소모되는 경우에 비정상 노드를 식별할 수 있고, 비정상 노드의 에러 보고율도 비교적 낮으며, 비정상 노드의 식별 효율 및 식별 정확도를 향상시킨다.
선택적으로, 상기 멤버 리스트 중의 각 노드의 정보는:
노드의 유일한 표식;
노드의 네트워크 접속 주소;
노드의 기존의 노드 상태; 및
노드의 설명 요소 정보; 중 적어도 한 항을 포함한다.
그 중, 노드의 유일한 표식은 NodeId로 표시할 수 있고, 노드의 네트워크 접속 주소는 Address로 표시할 수 있으며, 노드의 기존의 노드 상태는 예컨대 Alive, Dead 등과 같은 노드 상태는Status로 표시할 수 있고, 노드의 설명 요소 정보는 Metadata로 표시할 수 있다.
선택적으로, 상기 노드의 설명 요소 정보는 키-값 쌍에 의해 표시되고, 상기 키-값 쌍중의 키는 상기 노드가 속하는 대리 클러스터를 특성화하기 위한 것이고, 상기 키-값 쌍중의 값은 상기 노드가 속하는 대리 클러스터에서의 RPC 역할을 특성화하기 위한 것이며, 상기 RPC 역할은 RPC 클라이언트 또는 RPC 서버를 포함한다.
상기 실시방식에서, 노드 상에 부가된 설명 요소 정보를 정의하는 것을 통해, 실제 기능 정황에 따라 각 노드를 위해 노드의 작업 역할(즉 RPC 역할)을 확정할 수 있으며, RPC 역할은 RPC 클라이언트 또는 RPC 서버일 수 있다. 노드의 설명 요소 정보는 한 세트의 Key-Value 쌍(키-값 쌍)으로 나타낼 수 있고, Key가 동일한 한 세트의 노드는 서로 한 세트의 가상 대리 클라우드(AgentCluster)를 구성할 수 있으며, Value는 Value가 위치하는 노드가 대응하는 대리 클러스터에서의 RPC 역할을 표식할 수 있다. 실제 마이크로 서비스가 위치하는 프로세스 노드는 복수 개의 기타 마이크로 서비스의 RPC 클라이언트를 실행할 수도 있기에, 하나의 노드는 동시에 복수 개의 대리 클러스터에 멀티플렉싱될 수 있으며, 노드로 구성된 클러스터 상에서 동적으로 복수 개의 가상 대리 클러스터를 중첩 추가한 것과 같다.
예시적으로, 도 2는 RPC 클러스터 중 멤버 정보를 나타내는 예시도이다.
도 2에서 도시하다시피, RPC 클러스터는 노드 1 내지 노드 4까지 총 4개의 노드를 포함하고, 그 중, 노드 1 내지 노드 3은 생존 노드이고, 노드 4는 사망 노드이다. RPC 클러스터의 각 노드의 멤버 리스트는 수렴동기화를 구현하였을 때, 노드 1 내지 노드 3 중의 멤버 리스트에는 모두 노드 1 내지 노드 4가 있는 노드 상태 정보를 포함한다.
도 2에서 도시하다시피, 노드 1 내지 노드 3은 모두 동시에 3개의 대리 클러스터에 멀티플렉싱되며, 상기 3개의 대리 클러스터는: 마이크로 서비스 A, 마이크로 서비스 B, 마이크로 서비스 C이다. 상이한 대리 클러스터에서, 노드 1 내지 노드 3은 각각 대응되는 RPC 역할을 가지고, 노드 1 내지 노드 3의 설명 요소 정보에는 모두 키-값 쌍을 통해 각 노드가 대응되는 대리 클러스터에서의 RPC 역할을 표식한다.
설명해야 할 것은, 본 개시의 RPC 멤버 정보 획득 방법 중의 다양한 선택가능한 실시방식들은, 서로 상호 결합되어 구현될 수 있고, 단독으로 구현될 수도 있으며, 본 개시는 이에 대해 한정하지 않는다.
본 개시의 상술한 실시예는 적어도 아래와 같은 이점 또는 유익한 효과를 구비한다.
본 개시의 실시예에서, RPC 클러스터의 각 노드는 각자의 로컬 멤버 리스트를 상호 푸시하는 것을 통해, 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하며, 이 과정은 RPC 클러스터의 각 노드의 멤버 리스트로 하여금 최종적으로 모두 수렴동기화를 구현할 수 있도록 하며, 각 노드는 최종적으로 모두 전체 RPC 멤버의 관련정보를 획득할 수 있고, 즉 네트워크에서 비정상이 발생하더라도, 비정상이 제거된 후, 각 노드의 멤버 리스트는 최종적으로 모두 수렴동기화를 구현할 수 있으며, 이로 인하여, 전체 클라우드 서비스 시스템의 정상적이고 안정적인 작업을 확보할 수 있다. 본 개시의 실시예는 클라우드 플랫폼 및 사물인터넷에 응용될 수 있다.
본 개시의 실시예는 상술한 RPC 멤버 정보 획득 과정에서, 인공이 간섭할 필요 없고, 별도로 컴포넌트를 도입할 필요도 없이, 중심화를 제거하는 RPC 마이크로 서비스의 동적인 발견을 구현하였고, 중심화된 RPC 마이크로 서비스 동적 발견 메커니즘에 비해, 시스템의 작업과 유지보수 난이도를 감소하고, 시스템 작업과 보수유지 위험을 감소하며, 시스템의 작업과 보수유지 효율을 향상시킬 수 있다.
도 3에서 도시하다시피, 본 개시는 RPC 멤버 정보 획득 장치(200)를 제공하며, 상기 장치는:
RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하고, 상기 RPC 클러스터의 각 노드의 멤버 리스트가 동기화를 구현할 때까지, 상기 RPC 클러스터의 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하기 위한 제1 동기화 모듈(201)을 포함한다.
선택적으로, RPC 멤버 정보 획득 장치(200)는:
상기 RPC 클러스터에 제1 노드를 새로 추가한 경우, 상기 제1 노드가 시드 노드와 멤버 리스트 동기화를 진행하기 위한 제2 동기화 모듈;
상기 제1 노드에서 기존의 로컬 멤버 리스트 중의 각 노드에 활성화 메시지를 송신하기 위한 제1 송신 모듈; 및
상기 활성화 메시지를 수신한 노드에서 상기 제1 노드를 멤버 리스트 중에 추가하기 위한 추가 모듈; 을 더 포함한다.
선택적으로, 상기 제2 동기화 모듈은:
상기 제1 노드가 자신 및 상기 시드 노드를 멤버 리스트에 추가하기 위한 추가 서브 모듈;
상기 시드 노드와 상기 제1 노드가 각자의 멤버 리스트를 상호 푸시하기 위한 제1 푸시 서브 모듈; 및
상기 제1 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하기 위한 병합 서브 모듈; 을 포함한다.
선택적으로, RPC 멤버 정보 획득 장치(200)는:
상기 RPC 클러스터의 제2 노드가 제3 노드를 비정상 노드인 것으로 식별하는 경우, 기존의 로컬 멤버 리스트 중의 각 노드에 비정상 메시지를 송신하기 위한 제2 송신 모듈; 및
상기 비정상 메시지를 수신한 노드는 상기 제3 노드를 각자의 멤버 리스트 중에서 삭제하거나, 또는 각자의 멤버 리스트 중에서 상기 제3 노드를 비정상 노드로 라벨링하기 위한 비정상 처리 모듈; 을 더 포함한다.
선택적으로, RPC 멤버 정보 획득 장치(200)는:
상기 제2 노드에서 상기 제3 노드에 심박 모니터링 요청 메시지를 송신하기 위한 모니터링 모듈; 및
만약 상기 제2 노드가 기설정 시간내에 상기 제3 노드에서 송신한 심박 모니터링 피드백 메시지를 수신하지 않았다면, 상기 제2 노드는 상기 제3 노드를 비정상 노드인 것으로 식별하기 위한 식별 모듈; 을 더 포함한다.
선택적으로, 상기 제1 동기화 모듈은:
RPC 클러스터의 각 노드가 각 기설정 시간 간격마다 랜덤으로 기존의 로컬 멤버 리스트 중의 임의의 하나의 노드에 각자의 로컬 멤버 리스트를 푸시하기 위한 제2 푸시 서브 모듈; 및
멤버 리스트를 수신한 노드가 대응되는 푸시 노드에 기존의 로컬 멤버 리스트를 피드백하기 위한 피드백 서브 모듈; 을 포함한다.
선택적으로, 상기 제1 동기화 모듈은:
상기 RPC 클러스터의 각 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 과정에서, 만약 제4 노드의 노드 상태가 상이한 멤버 리스트에서 상이하다면, 우선 순위 레벨이 비교적 높은 노드 상태를 상기 제4 노드가 멤버 리스트에서의 노드 상태인 것으로 확정하기 위한 것이다.
선택적으로, 상기 노드 상태는 생존 상태 및 사망 상태를 포함하고, 상기 사망 상태의 우선 순위 레벨은 상기 생존 상태의 우선 순위 레벨보다 높다.
선택적으로, 상기 멤버 리스트 중의 각 노드의 정보는:
노드의 유일한 표식;
노드의 네트워크 접속 주소;
노드의 기존의 노드 상태; 및
노드의 설명 요소 정보; 중 적어도 한 항을 포함한다.
선택적으로, 상기 노드의 설명 요소 정보는 키-값 쌍에 의해 표시되고, 상기 키-값 쌍중의 키는 상기 노드가 속하는 대리 클러스터를 특성화하기 위한 것이고, 상기 키-값 쌍중의 값은 상기 노드가 속하는 대리 클러스터에서의 RPC 역할을 특성화하기 위한 것이며, 상기 RPC 역할은 RPC 클라이언트 또는 RPC 서버를 포함한다.
본 개시에서 제공하는 RPC 멤버 정보 획득 장치(200)는 상술한 RPC 멤버 정보 획득 방법 실시예에서의 각각의 과정을 구현할 수 있으며, 동일한 유익한 효과를 달성할 수 있는바, 중복되는 설명을 피하기 위해, 여기서 더 이상 상세하게 기술하지 않기로 한다.
본 개시의 실시예에 따라, 본 개시는 전자 기기 및 판독 가능 저장 매체를 더 제공한다.
도 4에서 도시하다시피, 도 4는 본 개시의 실시예의 RPC 멤버 정보 획득 방법에 따른 전자 기기의 블록도이다. 전자 기기는 예를 들면 랩탑 컴퓨터, 데스크톱 컴퓨터, 워킹 테이블, 개인용 디지털 보조기, 서버, 블레이드 서버, 대형 컴퓨터, 및 기타 적합한 컴퓨터와 같이 다양한 형태의 디지털 컴퓨터를 나타낸다. 전자 기기는 또한 다양한 형태의 이동 장치를 나타낼 수 있으며, 예컨대, 개인용 디지털 처리, 셀룰러 휴대폰, 스마트 휴대폰, 웨어러블 기기 및 기타 유사한 컴퓨팅 장치이다. 본문에서 나타내는 컴포넌트, 그들의 연결 및 관계, 및 그들의 기능은 단지 예시적인 것이지, 본 명세서에 설명된 및/또는 요구하는 본 개시의 구현을 제한하기 위함이 아님은 자명한 것이다.
도 4에서 도시하다시피, 상기 전자 기기는: 하나 또는 복수 개의 프로세서(601), 메모리(602), 및 각 컴포넌트들을 연결하기 위한 인터페이스를 포함하고, 고속 인터페이스 및 저속 인터페이스를 포함한다. 각 컴포넌트들은 상이한 버스를 이용하여 서로 연결되고, 코먼 메인 플레이트 상에 설치되거나 또는 수요에 따라 기타 방식으로 설치될 수 있다. 프로세서는 전자 기기내에서 수행하는 명령에 대해 처리를 진행할 수 있으며, 메모리에 저장되거나 또는 메모리상에 외부 입력/출력 장치(예컨대, 인터페이스에 연결되는 표시 기기)상에서 GUI의 그래픽 정보를 나타내는 명령을 포함한다. 기타 실시방식에 있어서, 필요하다면, 복수 개의 프로세서 및/또는 복수 개의 버스를 복수 개의 메모리 및 복수 개의 메모리와 함께 사용할 수 있다. 동일하게, 복수 개의 전자 기기를 연결할 수 있으며, 각 기기들은 부분적으로 필요한 조작을 제공한다(예컨대, 서버 어레이, 블레이드 서버, 또는 멀티 프로세서 시스템). 도 4에서는 하나의 프로세서(601)를 예로 들었다.
메모리(602)는 본 개시에서 제공하는 비일시적 컴퓨터 판독 가능 저장 매체이다. 그 중, 상기 메모리에 적어도 하나의 프로세서에 의해 실행되는 명령이 저장되어 있으며, 상기 적어도 하나의 프로세서더러 본 개시에서 제공하는 RPC 멤버 정보 획득 방법을 수행하도록 한다. 본 개시의 비일시적 컴퓨터 판독 가능 저장 매체에 컴퓨터 명령이 저장되어 있으며, 상기 컴퓨터 명령은 컴퓨터더러 본 개시에서 제공하는 RPC 멤버 정보 획득 방법을 수행하도록 하기 위한 것이다.
메모리(602)는 하나의 비일시적 컴퓨터 판독 가능 저장 매체로서, 비일시적 소프트웨어 프로그램, 비일시적 컴퓨터가 실행가능한 프로그램 및 모듈을 저장하기 위한 것이며, 예를 들면 본 개시의 실시예에서의 RPC 멤버 정보 획득 방법에 대응되는 프로그램 명령/모듈(예컨대, 도 3에서 도시된 제1 동기화 모듈(201))이다. 프로세서(601)는 메모리(602) 중의 비일시적 소프트웨어 프로그램, 명령 및 모듈을 실행하는 것을 통해, 따라서 RPC 멤버 정보 획득 장치의 각종 기능 애플리케이션 및 데이터 처리를 수행하며, 즉 상술한 방법 실시예에서의 RPC 멤버 정보 획득 방법을 구현한다.
메모리(602)는 프로그램 저장 영역 및 데이터 저장 영역을 포함할 수 있으며, 그 중, 프로그램 저장 영역은 작업 시스템, 적어도 하나의 기능에 필요한 애플리케이션 등을 저장할 수 있으며; 데이터 저장 영역은 RPC 멤버 정보 획득 방법의 전자 기기의 사용에 따라 작성된 데이터 등을 저장할 수 있다. 또한, 메모리(602)는 고속 랜덤 액세스 메모리를 포함할 수도 있고, 비일시적 메모리를 포함할 수도 있으며, 예컨대 적어도 하나의 자기 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 기타 비일시적 솔리드 스테이트 저장 디바이스를 더 포함할 수 있다. 일부 실시예에서, 메모리(602)는 선택적으로 프로세서(601)와 상대적으로 원격 설치된 메모리를 포함할 수 있으며, 이러한 원격 메모리는 네트워크를 통해 RPC 멤버 정보 획득 방법에 따른 전자 기기에 연결될 수 있다. 상술한 네트워크의 실시예는 인터넷, 기업 내부 네트워크, 로컬 영역 네트워크, 이동 통신망 및 이들의 조합을 포함할 수 있으나 이에 한정되지 않는다.
RPC 멤버 정보 획득 방법에 따른 전자 기기는: 입력 장치(603) 및 출력 장치(604)를 더 포함할 수 있다. 프로세서(601), 메모리(602), 입력 장치(603) 및 출력 장치(604)는 버스 또는 기타 방식을 통해 연결될 수 있고, 도 4에서는 버스를 통해 연결된 것으로 예를 들었다.
입력 장치(603)는 입력된 숫자 또는 문자 부호 정보를 수신하고, RPC 멤버 정보 획득 방법에 따른 전자 기기의 사용자 설정 및 기능 제어와 관련된 키 신호 입력을 산생시킬 수 있는바. 예컨대, 입력 장치는 터치 패널, 기능키, 마우스, 트랙패널, 터치 패널, 표시 로드, 하나 또는 복수 개의 마우스 버튼, 트랙볼, 조이스틱 등 입력 장치이다. 출력 장치(604)는 표시 기기, 보조 조명 장치(예컨대, LED) 및 촉각 피드백 장치(예컨대, 진동 전기) 등을 포함할 수 있다. 상기 표시 기기는 액정 디스플레이(LCD), 유기 발광 다이오드(OLED) 디스플레이 및 플라즈마 디스플레이를 포함할 수 있으나, 이에 한정되지 않는다. 표시 기기는 터치 스크린일 수 있다.
여기서 설명되는 시스템 및 기술의 각종 실시방식들은 디지털 전기 회로 시스템, 집적 회로 시스템, 전용 ASIC(전용 집적 회로), 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합에서 구현될 수 있다. 이러한 각종 실시방식은: 하나 또는 복수 개의 컴퓨터 프로그램에서 구현하는 방식을 포함할 수 있으며, 상기 하나 또는 복수 개의 컴퓨터 프로그램은 적어도 하나의 프로그램 가능한 프로세서를 포함하는 프로그램 시스템에서 실행 및/또는 해석될 수 있으며, 상기 프로그램 가능한 프로세서는 전용 또는 범용으로 프로그램 가능한 프로세서일 수 있고, 저장 시스템, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신할 수 있으며, 데이터 및 명령을 상기 저장 시스템, 상기 적어도 하나의 입력 장치, 및 상기 적어도 하나의 출력 장치로 전송한다.
이러한 컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 또는 코드로도 칭할 수 있음)은 프로그램 가능한 프로세서의 기계 명령을 포함하며, 고급 과정 및/또는 대상을 향한 프로그램 언어 및/또는 어셈블링/기계 언어를 이용하여 이러한 컴퓨팅 프로그램을 구현할 수 있다. 본문에서 사용되는 용어 “기계 판독 가능 매체” 및 “컴퓨터 판독 가능 매체”는 기계 판독 가능 신호로서 기계 명령을 수신하는 기계 판독 가능한 매체를 포함하는, 기계 명령 및/또는 데이터를 프로그램 가능한 프로세서의 임의의 컴퓨터 프로그램 제품, 기기, 및/또는 장치(예컨대, 자기 디스크, 광 디스크, 메모리, 프로그램 가능한 로직 장치(PLD))를 의미한다. 용어 “기계 판독 가능 신호”는 기계 명령 및/또는 데이터를 프로그램 가능한 프로세서에 제공하기 위한 임의의 신호를 의미한다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 설명된 시스템 및 기술을 컴퓨터에서 실시할 수 있으며, 상기 컴퓨터는: 사용자에게 정보를 디스플레이하기 위한 디스플레이 장치(예컨대, CRT (칼라 음극선관) 또는 LCD(액정 디스플레이) 모니터); 및 키보드 및 포인팅 장치(예컨대, 마우스 또는 트랙볼)를 구비하고, 사용자는 상기 키보드 및 포인팅 장치를 통해 입력하여 컴퓨터에 제공할 수 있다. 기타 타입의 장치는 사용자와의 인터렉션을 제공할 수 있으며; 예컨대, 사용자에게 제공된 피드백은 임의의 형태의 센싱 피드백(예컨대, 시각적 피드백, 청각적 피드백, 또는 촉각 피드백)일 수 있으며; 그리고 임의의 형태(음향 입력, 음성 입력, 또는 촉각 입력)를 사용하여 사용자로부터의 입력을 수신할 수 있다.
여기서 설명된 시스템 및 기술을 백스테이지 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 데이터 서버), 또는 중간 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 애플리케이션 서버), 또는 전방 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 그래픽 사용자 인터페이스 또는 네트워크 브라우저를 구비한 사용자 컴퓨터, 사용자는 상기 그래픽 사용자 인터페이스 또는 상기 네트워크 브라우저를 통해 여기에서 설명된 시스템 및 기술의 실시방식을 인터렉션할 수 있음), 또는 이런 백스테이지 컴포넌트, 중간 컴포넌트, 또는 전방 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 임의의 형태 또는 매체의 디지털 데이터 통신(예컨대, 통신 네트워크)에 의해 서로 연결될 수 있다. 통신 네트워크의 예는 로컬 네트워크(LAN), 광역 네트워크(WAN), 인터넷 및 블록 체인을 포함한다.
컴퓨터 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있고, 통상적으로 통신 네트워크를 통해 서로 인터렉션을 진행한다. 상응한 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 구비한 컴퓨터 프로그램을 통해 클라이언트와 서버의 관계가 생성된다. 서버는 클라우드 서버일 수 있고, 클라우드 서버 또는 클라우드 호스트라고 칭할 수도 있으며, 클라우드 컴퓨팅 서비스 체계 중의 하나의 호스트 제품으로, 전통적인 물리적 호스트와 가상 전용 서버(VPS,Virtual Private Server) 서비스에 존재하는 관리 난이도가 크고, 업무 확장성이 약한 결함을 해결한다.
본 개시의 실시예의 기술방안에 따라, RPC 클러스터의 각 노드는 각자의 로컬 멤버 리스트를 상호 푸시하는 것을 통해, 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하며, 이 과정은 RPC 클러스터의 각 노드의 멤버 리스트로 하여금 최종적으로 모두 수렴동기화를 구현할 수 있도록 하며, 각 노드는 최종적으로 모두 전체 RPC 멤버의 관련정보를 획득할 수 있고, 즉 네트워크에서 비정상이 발생하더라도, 비정상이 제거된 후, 각 노드의 멤버 리스트는 최종적으로 모두 수렴동기화를 구현할 수 있으며, 이로 인하여, 전체 클라우드 서비스 시스템의 정상적이고 안정적인 작업을 확보할 수 있다.
위에서 나타내는 다양한 형태의 절차를 사용하여, 단계를 재 정렬, 추가 또는 삭제할 수 있다는 것을 이해할 수 있다. 예컨대, 본 개시에서 기재된 각 단계는 병렬적으로 실행할 수 있고, 순차적으로 실행할 수도 있으며, 또한 상이한 순서로 실행할 수도 있으며, 단지 본 개시에 따른 공개된 기술방안이 의도한 결과를 실현할 수만 있다면, 본문에서는 이에 대해 제한하지 않는다.
상술한 구체적인 실시방식은, 본 개시의 보호 범위의 제한을 구성하지 않는다. 해당 기술분야에서 통상의 지식을 가진 자들은 본 개시의 실시예에의 설계 요구 및 기타 요소에 따라, 다양한 개변, 조합, 서브 조합 및 교체를 진행할 수 있다. 본 개시의 정신 및 특허청구범위를 일탈하지 않고, 이러한 개변, 교체 및 변형은 본 개시의 청구범위 및 그와 동등한 기술 범위 내에 속하며, 본 개시에서는 이러한 개변 및 변형을 청구범위 내에 귀속 시키고자 한다.

Claims (23)

  1. RPC 멤버 정보 획득 장치에 의해 실행되는 RPC 멤버 정보 획득 방법에 있어서,
    상기 방법은:
    RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하고, 상기 RPC 클러스터의 각 노드의 멤버 리스트가 동기화를 구현할 때까지, 상기 RPC 클러스터의 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 단계를 포함하며;
    상기 RPC 클러스터의 각 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 과정에서, 만약 제4 노드의 노드 상태가 상이한 멤버 리스트에서 상이하다면, 우선 순위 레벨이 높은 노드 상태를 상기 제4 노드의 멤버 리스트에서의 노드 상태인 것으로 확정하며;
    상기 노드 상태는 생존 상태 및 사망 상태를 포함하고, 상기 사망 상태의 우선 순위 레벨은 상기 생존 상태의 우선 순위 레벨보다 높은 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  2. 제1 항에 있어서,
    RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시한 후, 상기 방법은:
    상기 RPC 클러스터에 제1 노드를 새로 추가한 경우, 상기 제1 노드가 시드 노드와 멤버 리스트 동기화를 진행하는 단계;
    상기 제1 노드에서 기존의 로컬 멤버 리스트 중의 각 노드에 활성화 메시지를 송신하는 단계; 및
    상기 활성화 메시지를 수신한 노드에서 상기 제1 노드를 멤버 리스트 중에 추가하는 단계;
    를 더 포함하는 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  3. 제2 항에 있어서,
    상기 제1 노드가 시드 노드와 멤버 리스트 동기화를 진행하는 단계는:
    상기 제1 노드가 자신 및 상기 시드 노드를 멤버 리스트에 추가하는 단계;
    상기 시드 노드와 상기 제1 노드가 각자의 멤버 리스트를 상호 푸시하는 단계; 및
    상기 제1 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 단계;
    를 포함하는 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  4. 제1 항에 있어서,
    RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시한 후, 상기 방법은:
    상기 RPC 클러스터의 제2 노드가 제3 노드를 비정상 노드인 것으로 식별하는 경우, 기존의 로컬 멤버 리스트 중의 각 노드에 비정상 메시지를 송신하는 단계; 및
    상기 비정상 메시지를 수신한 노드는 상기 제3 노드를 각자의 멤버 리스트 중에서 삭제하거나, 또는 각자의 멤버 리스트 중에서 상기 제3 노드를 비정상 노드로 라벨링하는 단계;
    를 더 포함하는 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  5. 제4 항에 있어서,
    상기 제2 노드가 상기 제3 노드가 비정상 노드인지 여부를 식별하는 단계는:
    상기 제2 노드에서 상기 제3 노드에 심박 모니터링 요청 메시지를 송신하는 단계; 및
    만약 상기 제2 노드가 기설정 시간내에 상기 제3 노드에서 송신한 심박 모니터링 피드백 메시지를 수신하지 않았다면, 상기 제2 노드는 상기 제3 노드를 비정상 노드인 것으로 식별하는 단계;
    를 포함하는 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  6. 제1 항에 있어서,
    상기 RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하는 단계는:
    RPC 클러스터의 각 노드가 각 기설정 시간 간격마다 랜덤으로 기존의 로컬 멤버 리스트 중의 임의의 하나의 노드에 각자의 로컬 멤버 리스트를 푸시하는 단계; 및
    멤버 리스트를 수신한 노드가 대응되는 푸시 노드에 기존의 로컬 멤버 리스트를 피드백하는 단계;
    를 포함하는 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  7. 제1 항에 있어서,
    상기 멤버 리스트 중의 각 노드의 정보는:
    노드의 유일한 표식;
    노드의 네트워크 접속 주소;
    노드의 기존의 노드 상태; 및
    노드의 설명 요소 정보;
    중 적어도 한 항을 포함하는 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  8. 제7 항에 있어서,
    상기 노드의 설명 요소 정보는 키-값 쌍에 의해 표시되고, 상기 키-값 쌍중의 키는 상기 노드가 속하는 에이전트 클러스터(agent cluster)를 표시하기 위한 것이고, 상기 키-값 쌍중의 값은 상기 노드가 속하는 에이전트 클러스터에서의 RPC 역할을 표시하기 위한 것이며, 상기 RPC 역할은 RPC 클라이언트(client) 또는 RPC 서버(server)를 포함하는 것을 특징으로 하는 RPC 멤버 정보 획득 방법.
  9. RPC 멤버 정보 획득 장치에 있어서,
    상기 장치는:
    RPC 클러스터의 각 노드가 각자의 로컬 멤버 리스트를 상호 푸시하고, 상기 RPC 클러스터의 각 노드의 멤버 리스트가 동기화를 구현할 때까지, 상기 RPC 클러스터의 각 노드는 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하기 위한 제1 동기화 모듈을 포함하며;
    상기 제1 동기화 모듈은:
    상기 RPC 클러스터의 각 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하는 과정에서, 만약 제4 노드의 노드 상태가 상이한 멤버 리스트에서 상이하다면, 우선 순위 레벨이 높은 노드 상태를 상기 제4 노드의 멤버 리스트에서의 노드 상태인 것으로 확정하기 위한 것이며;
    상기 노드 상태는 생존 상태 및 사망 상태를 포함하고, 상기 사망 상태의 우선 순위 레벨은 상기 생존 상태의 우선 순위 레벨보다 높은 것을 특징으로 하는 장치.
  10. 제9 항에 있어서,
    상기 장치는:
    상기 RPC 클러스터에 제1 노드를 새로 추가한 경우, 상기 제1 노드가 시드 노드와 멤버 리스트 동기화를 진행하기 위한 제2 동기화 모듈;
    상기 제1 노드에서 기존의 로컬 멤버 리스트 중의 각 노드에 활성화 메시지를 송신하기 위한 제1 송신 모듈; 및
    상기 활성화 메시지를 수신한 노드에서 상기 제1 노드를 멤버 리스트 중에 추가하기 위한 추가 모듈;
    을 더 포함하는 것을 특징으로 하는 장치.
  11. 제10 항에 있어서,
    상기 제2 동기화 모듈은:
    상기 제1 노드가 자신 및 상기 시드 노드를 멤버 리스트에 추가하기 위한 추가 서브 모듈;
    상기 시드 노드와 상기 제1 노드가 각자의 멤버 리스트를 상호 푸시하기 위한 제1 푸시 서브 모듈; 및
    상기 제1 노드가 수신된 멤버 리스트를 기존의 로컬 멤버 리스트와 중복된 것을 제거하는 병합을 진행하기 위한 병합 서브 모듈;
    을 포함하는 것을 특징으로 하는 장치.
  12. 제9 항에 있어서,
    상기 장치는:
    상기 RPC 클러스터의 제2 노드가 제3 노드를 비정상 노드인 것으로 식별하는 경우, 기존의 로컬 멤버 리스트 중의 각 노드에 비정상 메시지를 송신하기 위한 제2 송신 모듈; 및
    상기 비정상 메시지를 수신한 노드는 상기 제3 노드를 각자의 멤버 리스트 중에서 삭제하거나, 또는 각자의 멤버 리스트 중에서 상기 제3 노드를 비정상 노드로 라벨링하기 위한 비정상 처리 모듈;
    을 더 포함하는 것을 특징으로 하는 장치.
  13. 제12 항에 있어서,
    상기 장치는:
    상기 제2 노드에서 상기 제3 노드에 심박 모니터링 요청 메시지를 송신하기 위한 모니터링 모듈; 및
    만약 상기 제2 노드가 기설정 시간내에 상기 제3 노드에서 송신한 심박 모니터링 피드백 메시지를 수신하지 않았다면, 상기 제2 노드는 상기 제3 노드를 비정상 노드인 것으로 식별하기 위한 식별 모듈;
    을 더 포함하는 것을 특징으로 하는 장치.
  14. 제9 항에 있어서,
    상기 제1 동기화 모듈은:
    RPC 클러스터의 각 노드가 각 기설정 시간 간격마다 랜덤으로 기존의 로컬 멤버 리스트 중의 임의의 하나의 노드에 각자의 로컬 멤버 리스트를 푸시하기 위한 제2 푸시 서브 모듈; 및
    멤버 리스트를 수신한 노드가 대응되는 푸시 노드에 기존의 로컬 멤버 리스트를 피드백하기 위한 피드백 서브 모듈;
    을 포함하는 것을 특징으로 하는 장치.
  15. 제9 항에 있어서,
    상기 멤버 리스트 중의 각 노드의 정보는:
    노드의 유일한 표식;
    노드의 네트워크 접속 주소;
    노드의 기존의 노드 상태; 및
    노드의 설명 요소 정보;
    중 적어도 한 항을 포함하는 것을 특징으로 하는 장치.
  16. 제15 항에 있어서,
    상기 노드의 설명 요소 정보는 키-값 쌍에 의해 표시되고, 상기 키-값 쌍중의 키는 상기 노드가 속하는 에이전트 클러스터(agent cluster)를 표시하기 위한 것이고, 상기 키-값 쌍중의 값은 상기 노드가 속하는 에이전트 클러스터에서의 RPC 역할을 표시하기 위한 것이며, 상기 RPC 역할은 RPC 클라이언트(client) 또는 RPC 서버(server)를 포함하는 것을 특징으로 하는 장치.
  17. 전자 기기에 있어서,
    상기 전자 기기는:
    적어도 하나의 프로세서; 및
    상기 적어도 하나의 프로세서와 통신 연결되는 메모리; 를 포함하며,
    그 중, 상기 메모리에 상기 적어도 하나의 프로세서에 의해 실행가능한 명령이 저장되어 있으며, 상기 명령은 상기 적어도 하나의 프로세서에 의해 실행되어, 상기 적어도 하나의 프로세서더러 제1 항 내지 제8 항 중 어느 한 항에 따른 방법을 실행하는 것을 특징으로 하는 전자 기기.
  18. 컴퓨터 명령이 저장되어 있는 비일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 컴퓨터 명령은 컴퓨터더러 청구항 제1 항 내지 제8 항 중 어느 한 항에 따른 방법을 실행하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 저장 매체.
  19. 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 컴퓨터 프로그램은 적어도 하나의 프로세서에 의해 실행될 경우, 청구항 제1항 내지 제8항 중 어느 한 항에 따른 상기 방법을 구현하는 것인,
    컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
KR1020210034399A 2020-09-24 2021-03-17 Rpc 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체 KR102522918B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011014305.X 2020-09-24
CN202011014305.XA CN112202746B (zh) 2020-09-24 2020-09-24 Rpc成员信息获取方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
KR20210038457A KR20210038457A (ko) 2021-04-07
KR102522918B1 true KR102522918B1 (ko) 2023-04-18

Family

ID=74016185

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210034399A KR102522918B1 (ko) 2020-09-24 2021-03-17 Rpc 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체

Country Status (5)

Country Link
US (1) US11228664B2 (ko)
EP (1) EP3817338B1 (ko)
JP (1) JP7083416B2 (ko)
KR (1) KR102522918B1 (ko)
CN (1) CN112202746B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质
CN112910796B (zh) * 2021-01-27 2022-12-16 北京百度网讯科技有限公司 流量管理方法、装置、设备、存储介质以及程序产品
CN113163016B (zh) * 2021-05-12 2023-08-04 北京阳光云视科技有限公司 网络长连接服务集群化部署系统及控制流程

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014197266A (ja) 2013-03-29 2014-10-16 富士通株式会社 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
EP2946541A1 (en) 2013-01-18 2015-11-25 Apple Inc. Keychain synchronization
JP2015535970A (ja) 2012-09-07 2015-12-17 アビジロン コーポレイション 複数のサーバノードを有する物理的セキュリティシステム
US20170099347A1 (en) * 2015-10-02 2017-04-06 Google Inc. Peer-to-peer syncable storage system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57201945A (en) * 1981-06-03 1982-12-10 Omron Tateisi Electronics Co Fault diagnosing method for multiple cpu system
US6490693B1 (en) * 1999-08-31 2002-12-03 International Business Machines Corporation Dynamic reconfiguration of a quorum group of processors in a distributed computing system
EP1323040A4 (en) * 2000-09-08 2005-08-03 Goahead Software Inc SYSTEM AND METHOD FOR MANAGING CLUSTERS WITH MULTIPLE NODES
JP2002351855A (ja) * 2001-05-28 2002-12-06 Mitsubishi Electric Corp 計算機異常処理システムおよび、計算機異常処理方法および、計算機で動作する計算機異常処理プログラムおよび、コンピュータにより読み取り可能な記録媒体に記録された計算機異常処置プログラム
US9141449B2 (en) * 2009-10-30 2015-09-22 Symantec Corporation Managing remote procedure calls when a server is unavailable
US8381017B2 (en) * 2010-05-20 2013-02-19 International Business Machines Corporation Automated node fencing integrated within a quorum service of a cluster infrastructure
WO2017045079A1 (en) * 2015-09-18 2017-03-23 Avigilon Corporation Physical security system having multiple server nodes configured to implement a conditionally triggered rule
CN105515759B (zh) * 2015-11-27 2018-11-09 国网信息通信产业集团有限公司 一种微服务注册方法及系统
CN106357744A (zh) * 2016-08-29 2017-01-25 浪潮(北京)电子信息产业有限公司 Smb客户端重连集群的方法、系统及smb客户端
CN110120961B (zh) * 2018-02-06 2022-04-26 北京京东尚科信息技术有限公司 一种分布式服务集群及其路由同步的方法
KR102038527B1 (ko) * 2018-03-28 2019-11-26 주식회사 리얼타임테크 분산 클러스터 관리 시스템 및 그 방법
CN109302448B (zh) * 2018-08-27 2020-10-09 华为技术有限公司 一种数据处理方法及装置
JP2020113924A (ja) * 2019-01-15 2020-07-27 富士通株式会社 モニタリングプログラム,プログラマブルデバイス及びモニタリング方法
CN110768914B (zh) 2019-10-23 2022-03-29 上海交通大学 基于语义场景实例迁移的去中心化物联网关系统
CN111262918A (zh) * 2020-01-13 2020-06-09 中孚安全技术有限公司 一种跨平台分布式一致性框架系统及其实现方法
CN111309375B (zh) * 2020-02-11 2023-07-04 北京字节跳动网络技术有限公司 生成远程过程调用工具包的方法、装置、介质和电子设备
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015535970A (ja) 2012-09-07 2015-12-17 アビジロン コーポレイション 複数のサーバノードを有する物理的セキュリティシステム
EP2946541A1 (en) 2013-01-18 2015-11-25 Apple Inc. Keychain synchronization
JP2014197266A (ja) 2013-03-29 2014-10-16 富士通株式会社 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
US20170099347A1 (en) * 2015-10-02 2017-04-06 Google Inc. Peer-to-peer syncable storage system

Also Published As

Publication number Publication date
CN112202746A (zh) 2021-01-08
KR20210038457A (ko) 2021-04-07
JP2021108139A (ja) 2021-07-29
CN112202746B (zh) 2023-04-21
JP7083416B2 (ja) 2022-06-10
EP3817338A3 (en) 2021-09-08
US11228664B2 (en) 2022-01-18
US20210203754A1 (en) 2021-07-01
EP3817338B1 (en) 2023-09-13
EP3817338A2 (en) 2021-05-05

Similar Documents

Publication Publication Date Title
KR102522918B1 (ko) Rpc 멤버 정보 획득 방법, 장치, 전자 기기 및 저장 매체
US10657012B2 (en) Dynamically changing members of a consensus group in a distributed self-healing coordination service
US10623486B2 (en) Methods, systems, and media for providing distributed database access during a network split
US9800515B2 (en) Mechanism for controlling a process on a computing node based on the participation status of the computing node
JP2022008781A (ja) 分散型トレーニング方法、システム、デバイス、記憶媒体、及びプログラム
CN112069265B (zh) 配置数据的同步方法、业务数据系统、计算机系统和介质
US9960964B2 (en) System, method and apparatus to manage services in a network
CN110795503A (zh) 分布式存储系统的多集群数据同步方法及相关装置
CN109245908B (zh) 一种主从集群切换的方法和装置
US9128902B2 (en) Systems and methods for managing disaster recovery in a storage system
EP3567803A1 (en) Strategy management method, device, and system
WO2019041930A1 (zh) 巡检方法、装置、系统、计算机设备和存储介质
US11012306B2 (en) Autonomous datacenter management plane
US11709853B2 (en) Database-based management method, platform, electronic device and storage medium
CN111966651A (zh) 数据同步方法、装置、电子设备和存储介质
US20210311914A1 (en) Transaction processing method and device, electronic device and readable storage medium
CA3159291A1 (en) Virtual workspace experience visualization and optimization
WO2021082868A1 (zh) 分布式存储系统的数据处理方法、装置及电子设备
US20220407771A1 (en) Method and apparatus for updating instance configuration, device, storage medium, and program product
CN116346834A (zh) 一种会话同步方法、装置、计算设备及计算机存储介质
US20210226704A1 (en) Optical domain controller of a telecommunications network
US10257026B1 (en) System and method to manage interrelated devices in a computing infrastructure
US20230131871A1 (en) Method, system and apparatus for forwarding data in virtual network and program product
US9489269B2 (en) Global backup lock manager
KR101463468B1 (ko) OMG 표준 DDS(Data Distribution Service)와 호환 가능한 OMG 표준 미들웨어 기반의 클러스터 구조

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