JP7083416B2 - Rpcメンバー情報取得方法、装置、電子機器、記憶媒体及びコンピュータプログラム製品 - Google Patents

Rpcメンバー情報取得方法、装置、電子機器、記憶媒体及びコンピュータプログラム製品 Download PDF

Info

Publication number
JP7083416B2
JP7083416B2 JP2021041564A JP2021041564A JP7083416B2 JP 7083416 B2 JP7083416 B2 JP 7083416B2 JP 2021041564 A JP2021041564 A JP 2021041564A JP 2021041564 A JP2021041564 A JP 2021041564A JP 7083416 B2 JP7083416 B2 JP 7083416B2
Authority
JP
Japan
Prior art keywords
node
member list
rpc
cluster
state
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2021041564A
Other languages
English (en)
Other versions
JP2021108139A (ja
Inventor
郁 ▲ハオ▼
飛 馬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021108139A publication Critical patent/JP2021108139A/ja
Application granted granted Critical
Publication of JP7083416B2 publication Critical patent/JP7083416B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/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/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)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Description

本願は、クラウドサービスにおけるマイクロサービスの技術分野に関し、特にRPCメンバー情報取得方法、装置、電子機器、記憶媒体及びコンピュータプログラム製品に関する。
クラウドサービスでは、拡張性の要求を満たすために、マイクロサービスのアーキテクチャがますます多く使用され、各マイクロサービスが1つの単一の機能部分を担当し、マイクロサービス同士がRPC(Remote-Procedure-Call、遠隔手続き呼出し)によって通信し互に呼び出される。
各RPCノードは、システム全体が正常に動作できるように、RPCメンバーの関連情報を取得する必要がある。現在、一般的には、集中的なディスカバリーメカニズムを使用してRPCメンバー情報の取得を実現し、即ち、マイクロサービスに加えて「サービスレジストリセンタ」というコンポーネントが追加的に導入され、RPCノードは起動時に「サービスレジストリセンタ」で自分をレジストし、他のRPCノードは、「サービスレジストセンタ」を介して最新のRPCメンバ情報を動的に取得する。しかしながら、「サービスレジストリセンタ」のコンポーネントが追加的に導入されると、クラウドサービスのシステム複雑度及び運用保守の複雑度を増加させるだけでなく、潜在的な単一運用保守のリスクをももたらし、「サービスレジストリセンタ」が失効した場合、システム全体が利用不可になる。
本願はRPCメンバー情報取得方法、装置、電子機器及び記憶媒体を提供する。
第1の態様では、本願に係るRPCメンバー情報取得方法は、
RPCクラスターの各ノードが、それぞれのローカルメンバーリストを互いにプッシュし、前記RPCクラスターの各ノードのメンバーリストが同期するまで、受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージすることを含む。
第2の態様では、本願に係るRPCメンバー情報取得装置は、
RPCクラスターの各ノードが、それぞれのローカルメンバーリストを互いにプッシュし、前記RPCクラスターの各ノードのメンバーリストが同期するまで、受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージするための第1の同期モジュールを含む。
第3の態様では、本願に係る電子機器は、
少なくとも1つのプロセッサと、
少なくとも1つのプロセッサと通信接続されるメモリとを含み、
前記メモリには、少なくとも1つのプロセッサによって実行可能で、少なくとも1つのプロセッサによって実行されると、第1の態様におけるいずれか1項の方法を少なくとも1つのプロセッサに実行させる命令が記憶されている。
第4の態様では、本願に係る非一時的なコンピュータ読み取り可能な記憶媒体は、第1の態様におけるいずれか1項の方法をコンピュータに実行させるコンピュータ命令を記憶している。
本願の技術によれば、RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュし、各ノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージすることにより、RPCクラスターの各ノードのメンバーリストが最終的に収束同期を実現することができ、各ノードがいずれも最終的に全てのRPCメンバーの関連情報を取得することができるため、クラウドサービスシステム全体が正常に安定して動作することを確保することができる。本願は、RPCメンバー情報取得過程において、人間介入を必要とせず、追加的にコンポーネントを導入する必要もなく、ネットワーク障害が発生しても、障害消去後、各ノードのメンバーリストがいずれも最終的に収束同期を実現することができる。
なお、本部分に記述された内容は、本願の実施例の主要な又は重要な特徴を表示することを意図するものではなく、本願の範囲を限定するものでもない。本願の他の特徴は、以下の明細書により容易に理解されるであろう。
図面は、本方案をさらによく理解するためのものであり、本願を限定するものではない。
本願の第1の実施例に係るRPCメンバー情報取得方法のフローチャートである。 本願の第1の実施例に係るRPCクラスター中のメンバー情報の概略図である。 本願の第2の実施例に係るRPCメンバー情報取得装置の概略構成図である。 本願の実施例に係るRPCメンバー情報取得方法を実現する電子機器のブロック図である。
以下、図面を参照しながら、本願の例示的な実施例を説明し、理解を容易にするために本願の実施例の様々な詳細を含み、それらを例示的なものと考えるべきである。したがって、当業者によって認識されるように、本願の範囲及び要旨から逸脱することなく、本明細書で説明された実施例に対して様々な変更及び修正を行うことができる。同様に、以下の記述では、明瞭さと簡潔さのために、公知の機能及び構造についての記述が省略される。
本願は、RPCマイクロサービスのサービスディスカバリ問題を解決するために、RPCメンバー情報取得方法、装置、電子機器及び記憶媒体を提供する。本願を説明する前、以下では、RPCマイクロサービス及びRPCマイクロサービスのサービスディスカバリの関連技術について簡単に紹介し説明する。
クラウドサービスでは、拡張性の要求を満たすために、マイクロサービスのアーキテクチャがますます多く使用され、各マイクロサービスが1つの単一の機能部分を担当し、マイクロサービス同士が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に示すように、RPCメンバー情報取得方法は、以下のステップ101を含む。
ステップ101では、RPCクラスターの各ノードは、それぞれのローカルメンバーリストを互いにプッシュし、前記RPCクラスターの各ノードのメンバーリストが同期するまで、前記RPCクラスターの各ノードは、受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージする。
上記RPCクラスターは、動作中のRPCクライアントプロセスインスタンス及びRPCサーバプロセスインスタンスを含むアプリケーションノードクラスターとして理解することができる。各プロセスインスタンスでは、RPCクライアントであってもRPCサーバであっても、RPCクラスターでは1つのノード(Node)であり、各ノードがRPCクラスター中のメンバーである。
上記メンバーリスト(MemberList)は、現在のクラスターメンバーの現状を反映するか又は表すメンバー情報集合として理解されてよく、RPCクラスターの一部のメンバー又は全てのメンバーの関連情報を含んでよい。メンバーリストの表現形式は、リストの形式に限らず、トポロジー図、タグ、シーケンス図などの形式であってもよい。
RPCクラスターの各ノード同士は、ホスト(Host)が提供するネットワーク非同期通信(Peer-to-Peer Communication)により、現在のクラスターメンバーの現状を反映するメンバーリストをローカル(Local)で取得することができる。
本願の実施例では、RPCクラスターの各ノードはそれぞれのローカルメンバーリストを互いにプッシュし、他のノードがプッシュするメンバーリストを受信したノードを受信ノードとし、他のノードにメンバーリストをプッシュするノードを送信ノード(又はプッシュノード)とすれば、RPCクラスターの各ノードは、メンバーリストの受信ノードとして機能してもよく、メンバーリストの送信ノードとして機能してもよい。同一のメンバーリストは、送信ノードにとって現在のローカルメンバーリスト(localMemberList)であり、受信ノードにとっては受信したメンバーリスト(又は遠隔メンバーリスト(remoteMemberList)という)である。
受信ノードとなる場合、ノードは、受信したメンバーリストを現在のローカルメンバーリストと重複排除しマージ(merge)することができ、即ち、受信ノードは、受信したメンバーリストとその現在のローカルメンバーリストとをマージする過程において、重複したノードを排除する必要があり、重複排除しマージされたメンバーリストが受信ノードの現在更新しているローカルメンバーリストとなる。
RPCクラスターの各ノードは、予め設定されたプッシュルールにしたがって、それぞれのローカルメンバーリストを互にプッシュすることができ、例えば、各ノードは、ローカルメンバーリスト中のノードにローカルメンバーリストを同時に又はバッチ式で又は1つずつ送信することができる。
本願の実施例では、RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュし、各ノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージすることにより、RPCクラスターの各ノードのメンバーリストはいずれも収束同期を最終的に実現することができ、各ノードはいずれも全てのRPCメンバーの関連情報を最終的に取得することができ、ネットワークパーティション(Network Partition)のようなネットワーク異常が発生しても、異常が解消された後、各ノードのメンバーリストが収束同期を最終的に実現することができ、このように、クラウドサービスシステム全体が正常に安定して動作するよう保証することができる。本願は、クラウドプラットフォーム及びモノのインターネットに適用することができる。
本願の実施例は、上記RPCメンバー情報取得過程において、人間介入を必要とせず、追加的にコンポーネントを導入する必要もなく、非集中的なRPCマイクロサービスの動的ディスカバリーを実現し、集中的なRPCマイクロサービス動的ディスカバリーメカニズムと比較して、システム運用保守の難しさを低減し、システムの運用保守のリスクを低減し、システムの運用保守の効率を向上させることができる。
好ましくは、前記RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュすることは、
RPCクラスターの各ノードが所定の時間間隔ごとに現在のローカルメンバーリスト中のいずれかのノードにそれぞれのローカルメンバーリストをランダムにプッシュすることと、
メンバーリストを受信したノードが、対応するプッシュノードに現在のローカルメンバーリストをフィードバックすることとを含む。
該実施形態では、RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュする過程はプッシュ過程とフィードバック過程に分けることができ、プッシュ過程において、RPCクラスターの各ノードが所定の時間間隔ごとに現在のローカルメンバーリスト中のいずれかのノードにそれぞれのローカルメンバーリストをランダムにプッシュし、フィードバック過程において、メンバーリストを受信したノードが、対応するプッシュノードに現在のローカルメンバーリストをフィードバックする。
プッシュプロセスは、メインプロセスとみなすことができ、該プロセスが無限循環するプロセスであってよく、即時実行(immediate)でなければ、所定の時間間隔ごとに例えばT個の時間単位ごとに、ローカルメンバーリストをランダムに選択された(selector Remote Peer)リモートノードにプッシュする動作が1回トリガされ、Pushメッセージを送信することでローカルメンバーリストのプッシュを実現することができる。
ノードが他のノードからプッシュされたメンバーリストを受信した場合、メンバーリストをプッシュしたノードに現在のローカルメンバーリストをフィードバックすることができ、例えば、ノードがPushメッセージを受信した場合、自分の現在のローカルメンバーリストを含んでよいPullメッセージをフィードバックすることができ、受信したメンバーリストをローカルメンバーリストと重複排除しマージし、得られた新たなメンバーリストを該ノードの現在の新たなローカルメンバーリストとすることもできる。ノードは、Pullメッセージを受信した場合、上記Pushと一致する重複排除マージ過程を行うことができる。
例として、上記メンバーリストの収束過程は、以下のプログラム又はアルゴリズムにより実現することができる。
syncMain(localMemberList, immediate){
do forever
if !immediate then wait(T time units)
remotePeer = selectRemotePeer(localMemberList)
push(localMemberList, remotePeer)

onPush(remoteMemberList, remotePeer){
pull(localMemberList, remotePeer)
localMemberList = merge(localMemberList, remoteMemberList)

onPull(remoteMemberList, remotePeer){
localMemberList = merge(localMemberList, remoteMemberList)
以上の過程により、RPCクラスターのメンバ規模がNの場合、時間T*Log2(N)が経過すると、RPCクラスターメンバーリストの収束同期を完了することができ、該過程は、RPCクラスターにどのようなネットワーク異常が発生しても、異常解消後、各ノードのメンバーリストがいずれも最終的に収束同期が実現されるよう保証することができる。
RPCクラスターメンバーリストの収束同期速度は、パラメータT及びNの影響を受け、多くの場合、RPCクラスターが正常に動作し、Tは比較的大きな値、例えば、数分間であってよい。
好ましくは、前記RPCクラスターの各ノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージする過程において、第4のノードのノード状態がメンバーリストによって異なる場合、優先度の高いノード状態を前記第4のノードのメンバーリストにおけるノード状態とする。
上記ノード状態は、即ちノードのなっている状態であり、例えば、有効状態(Alive)及び無効状態(Dead)を含んでよい。ノードがメンバーリストに対して重複排除マージを行う過程において、異なるメンバーリストに同一のノードが存在する可能性があるが、同一のノードのノード状態が同一であるか、もしくは異なっている可能性がある。ノードの状態が同一である場合、該ノードの重複項を除去し、1つのノードのみを残すようにすればよく、一方、ノードの状態が異なる場合、ノードの状態の優先度により該ノードのノード状態を決定する必要がある。
本願の実施例では、ノード状態の優先度は、ノード状態のみで決定してもよく、ノード状態の更新時間の先後を合わせて決定してもよい。
例えば、第4のノードのローカルメンバーリストにおける状態が無効状態であるが、受信されたメンバーリストにおける状態が有効状態であり、有効状態の優先度が無効状態の優先度より高いと仮定すると、ノードは、メンバーリストを重複排除しマージするとき、ローカルメンバーリストにおける第4のノードのノード状態を有効状態に変更することができ、無効状態の優先度が有効状態の優先度より高いと仮定すると、ノードは、メンバーリストを重複排除しマージするとき、ローカルメンバーリストにおける第4のノードのノード状態を無効状態に維持することができる。
ノードが有効状態から無効状態に変更することがあり、無効状態から有効状態に変更することが一般的ないため、ノード状態が有効状態と無効状態を含む場合、無効状態の優先度は、有効状態の優先度より高いようにしてよい。このように、第4のノードのローカルメンバーリストにおける状態が有効状態であるが、受信されたメンバーリストにおける状態が無効状態である場合、ローカルメンバーリストにおける第4のノードのノード状態を無効状態に変更することができる。
本願の実施例では、ノード状態が異なる場合、優先度の高いノード状態をノードのメンバリストにおけるノード状態とすることにより、各メンバーリストにおけるノードの状態を同期させるとともに、各メンバリストにおける各ノードのノード状態をより正確にすることができる。
好ましくは、前記方法は、
前記RPCクラスターに第1のノードが新規に追加された場合、前記第1のノードがシードノードとメンバーリスト同期を行うことと、
前記第1のノードが、現在のローカルメンバーリスト中の各ノードに活性化メッセージを送信することと、
前記活性化メッセージを受信したノードが前記第1のノードをメンバーリストに追加することと、をさらに含む。
シードノードは、任意の動作中のRPCクラスターのメンバのノードとして理解してよい。第1のノードがRPCクラスターからランダムに1つのノードをシードノードとして選択してもよく、システムによって第1のノードのために1つのノードをシードノードとして指定してもよい。
本願の実施例では、RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュする過程によりRPCクラスターのメンバーリストの収束を実現することができ、また該収束過程では、新規追加ノードの同期が比較的遅く、即ち、RPCクラスターにノードが新規に追加された場合、各ノードがそれぞれのローカルメンバーリストを互いにプッシュすることで、各ノードのローカルメンバーリストでの新規追加ノードの同期を最終的に実現することができるが、該過程は、一般的に遅い。
これに鑑みて、該実施形態は、より迅速な、新規追加ノードを同期する解決手段を提供する。該実施形態では、RPCクラスターに第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のノード及びシードノードを含むメンバーリストである。
例として、上記ノードの新規追加プロセスは、以下のプログラム又はアルゴリズムにより実現することができる。
joinMain(seed, localMemberList){
add(localMemberList,self) //メンバーリストに自分を追加
add(localMemberList,seed) //メンバーリストにシードノードを追加
syncMain(localMemberList, true) //シードノードとのメンバーリスト同期
gossip(localMemberList, alive) //クラスターメンバーに自分のalive情報を拡散

onAlive(alive) {
add(localMemberList, alive)
好ましくは、前記方法は、
前記RPCクラスターの第2のノードが第3のノードが異常ノードであると識別した場合、現在のローカルメンバーリスト中の各ノードに異常メッセージを送信することと、
前記異常メッセージを受信したノードが前記第3のノードをそれぞれのメンバーリストから削除するか、又はそれぞれのメンバーリストにおいて前記第3のノードを異常ノードとしてマークすることとをさらに含む。
RPCクラスターのメンバーは、故障又は異常が随時発生する可能性があり、故障又は異常が発生したとき、健康なノードは、リアルタイムに感知してローカルメンバーリストをタイムリーに更新する必要がある。
ノード同士は、相手が異常ノードであるか否かを何らかの方法で識別することができる。該実施形態では、RPCクラスターの第2のノードは、第3のノードが異常ノードであると識別した場合、現在のローカルメンバーリスト中の各ノードに異常メッセージ(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のノードにハートビート監視要求メッセージを送信し、第3のノードから送信されたハートビート監視フィードバックメッセージを所定の時間内に受信していなければ、前記第3のノードを異常ノードとして識別することができることである。ここで、第3のノードは、第2のノードがローカルメンバーリストからランダムに選択した任意のノードであってよい。
例として、上記異常ノード識別のプロセスは、以下のプログラム又はアルゴリズムにより実現することができる。
detectMain(localMemberList){
remotePeer = selectRemotePeer(localMemberList) //1つの健康な遠隔ノードをランダムに選択
isDead = detect(remotePeer) //異常検出
if isDead then
markDead(localMemberList, remotePeer) //異常マーク
gossip(localMemberList, dead) //Gossip異常メッセージ

onDead(dead) {
markDead(localMemberList, dead);
該実施形態では、上記過程により、少ない消費メッセージで異常ノードを識別することができ、かつ異常ノードの誤報率も低く、異常ノードの識別効率と識別精度を向上させることができる。
好ましくは、前記メンバーリスト中の各ノードの情報は、
ノードの一意識別子と、
ノードのネットワークアクセスアドレスと、
ノードの現在のノード状態と、
ノードの記述メタ情報と、のうちの少なくとも1つを含む。
ノードの一意識別子はNodeId、ノードのネットワークアクセスアドレスはAddress、ノードの現在のノード状態は(例えば、Alive、Deadなどのようなノード状態)Status、ノードの記述メタ情報はMetadataとして表すことができる。
好ましくは、前記ノードの記述メタ情報は、キーが前記ノードの属するエージェントクラスターを表し、値が前記ノードの属するエージェントクラスターにおける、RPCクライアント又はRPCサーバを含むRPC役割を表すキー/値ペアで表される。
該実施形態では、ノードに付加される記述メタ情報を定義することにより、実際の機能に応じて各ノードに対してノードの動作役割(即ち、RPC役割)を決定することができ、RPC役割はRPCクライアント又はRPCサーバであってよい。ノードの記述メタ情報は、1組のKey-Valueペア(キー/値ペア)により表され、Keyが同じな1組のノードは、互いに1組の仮想のエージェントクラスター(AgentCluster)を構成することができ、Valueは、その位置するノードの対応するエージェントクラスターにおけるRPC役割を標識することができる。実際のマイクロサービスが存在するプロセスノードが複数の他のマイクロサービスのRPCクライアントを動作する可能性があるため、1つのNodeは、複数のエージェントクラスターに同時に多重され、ノードからなるクラスターに複数の仮想のエージェントクラスターが動的に重畳されることに相当する。
例として、図2は、RPCクラスター中のメンバー情報の概略図である。
図2に示すように、RPCクラスターがノード1~ノード4の4つのノードを含み、ノード1~ノード3が有効ノードであり、ノード4が無効ノードであるとする。RPCクラスターの各ノードのメンバーリストが収束同期を実現した場合、ノード1~ノード3におけるメンバーリストには、いずれもノード1~ノード4のノード状態情報が含まれる。
図2に示すように、ノード1~ノード3は、いずれもマイクロサービス(A)、マイクロサービス(B)及びマイクロサービスCという3つのエージェントクラスターに同時に多重される。異なるエージェントクラスターでは、ノード1~ノード3は、それぞれ対応するRPC役割を有し、ノード1~ノード3の記述メタ情報は、いずれもKey-Valueペアにより各ノードの対応するエージェントクラスターにおけるRPC役割を認識している。
なお、本願のRPCメンバー情報取得方法における様々な好ましい実施形態は、互いに組み合わせて実現してもよく、単独で実現してもよく、これに対して本願は限定しない。
本願の上記実施例は、少なくとも以下の利点又は有益な効果を有する。
本願の実施例では、RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュし、各ノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージする過程により、RPCクラスターの各ノードのメンバーリストはいずれも収束同期を最終的に実現することができ、各ノードはいずれも全てのRPCメンバーの関連情報を最終的に取得することができ、ネットワーク異常が発生しても、異常が解消された後、各ノードのメンバーリストが収束同期を最終的に実現することができ、このように、クラウドサービスシステム全体が正常に安定して動作するよう保証することができる。本願の実施例は、クラウドプラットフォーム及びモノのインターネットに適用することができる。
本願の実施例は、上記RPCメンバー情報取得過程において、人間介入を必要とせず、追加的にコンポーネントを導入する必要もなく、非集中的なRPCマイクロサービスの動的ディスカバリーを実現し、集中的なRPCマイクロサービス動的ディスカバリーメカニズムと比較して、システム運用保守の難しさを低減し、システムの運用保守のリスクを低減し、システムの運用保守の効率を向上させることができる。
図3に示すように、本願に係るRPCメンバー情報取得装置200は、
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のノードのメンバーリストにおけるノード状態とする。
好ましくは、前記ノード状態は有効状態及び無効状態を含み、前記無効状態の優先度は有効状態の優先度より高い。
好ましくは、前記メンバーリスト中の各ノードの情報は、
ノードの一意識別子と、
ノードのネットワークアクセスアドレスと、
ノードの現在のノード状態と、
ノードの記述メタ情報と、のうちの少なくとも1つを含む。
好ましくは、前記ノードの記述メタ情報は、キーが前記ノードの属するエージェントクラスターを表し、値が前記ノードの属するエージェントクラスターにおける、RPCクライアント又はRPCサーバを含むRPC役割を表すキー/値ペアによって表される。
本願に係るRPCメンバー情報取得装置200は、上記RPCメンバー情報取得方法の実施例における各プロセスを実現し、かつ同じ有益な効果を達成することができ、重複を避けるために、ここでは説明を省略する。
本願の実施例によれば、本願は、電子機器及び読み取り可能な記憶媒体をさらに提供する。
図4は、本願の実施例に係るRPCメンバー情報取得方法の電子機器のブロック図である。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及びその他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを意図する。電子機器は、パーソナルデジタル処理、携帯電話、スマートフォン、ウェアラブル機器及びその他の類似のコンピューティング装置などの様々な形態のモバイル装置を表してもよい。本明細書で示された部材、それらの接続及び関係、並びにそれらの機能は、単なる例に過ぎず、本明細書で記述及び/又は要求された本願の実現を限定することを意図しない。
図4に示すように、該電子機器は、1つ又は複数のプロセッサ601と、メモリ602と、各部材を接続する、高速インタフェース及び低速インタフェースを含むインタフェースとを含む。各部材は、異なるバスを用いて互いに接続され、かつ共通のマザーボードに取り付けられ、又は必要に応じて他の方式で取り付けられてよい。プロセッサは、電子機器内で実行される、外部入力/出力装置(例えば、インタフェースに結合された表示機器)にGUIのグラフィック情報を表示するようにメモリ内又はメモリ上に記憶された命令を含む命令を処理することができる。他の実施形態では、必要があれば、複数のプロセッサ及び/又は複数のバスを、複数のメモリと共に使用してよい。同様に、一部の必要な動作を提供する複数の電子機器(例えば、サーバアレイ、1組のブレードサーバ、又はマルチプロセッサシステム)を接続することができる。図4において、1つのプロセッサ601を例とする。
メモリ602は、本願に係る非一時的なコンピュータ読み取り可能な記憶媒体である。メモリには、少なくとも1つのプロセッサによって実行可能で、本願に係るRPCメンバー情報取得方法を少なくとも1つのプロセッサに実行させる命令が記憶されている。本願の非一時的なコンピュータ読み取り可能な記憶媒体は、本願に係るRPCメンバー情報取得方法をコンピュータに実行させるコンピュータ命令を記憶している。
メモリ602は、非一時的なコンピュータ読み取り可能な記憶媒体として、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能なプログラム及びモジュール、例えば、本願の実施例におけるRPCメンバー情報取得方法に対応するプログラム命令/モジュール(例えば、図3に示す第1の同期モジュール201)を記憶する。プロセッサ601は、メモリ602内に記憶された非一時的なソフトウェアプログラム、命令及びモジュールを実行することにより、RPCメンバー情報取得装置の様々な機能アプリケーション及びデータ処理を実行して、上記方法の実施例におけるRPCメンバー情報取得方法を実現する。
メモリ602は、オペレーティングシステム、少なくとも1つの機能に必要なアプリケーションプログラムを記憶可能なプログラム記憶領域と、RPCメンバー情報取得方法に係る電子機器の使用により作成されたデータなどを記憶可能なデータ記憶領域とを含んでよい。また、メモリ602は、高速ランダムアクセスメモリを含んでよく、少なくとも1つの磁気ディスクメモリ素子、フラッシュメモリ素子、又は他の非一時的な固体メモリ素子などの非一時的なメモリを含んでもよい。いくつかの実施例では、メモリ602は、好ましくは、プロセッサ601に対して遠隔に配置されたメモリを含み、これらのリモートメモリは、ネットワークを介してRPCメンバー情報取得方法の電子機器に接続されてよい。上記ネットワークの例は、インターネット、イントラネット、ローカルエリアネットワーク、移動通信ネットワーク及びそれらの組み合わせを含むが、これらに限定されない。
RPCメンバー情報取得方法の電子機器は、入力装置603及び出力装置604をさらに含んでよい。プロセッサ601、メモリ602、入力装置603及び出力装置604は、バス又は他の方式で接続されてよく、図4において、バスによる接続を例とする。
入力装置603は、入力された数字又は文字情報を受信し、RPCメンバー情報取得方法に係る電子機器のユーザ設定及び機能制御に関連するキー信号入力を生成することができ、例えば、タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、ポインティングスティック、1つ又は複数のマウスボタン、トラックボール、ジョイスティックなどの入力装置である。出力装置604は、表示機器、補助照明装置(例えば、LED)及び触覚フィードバック装置(例えば、振動モータ)などを含んでよい。該表示機器は、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ及びプラズマディスプレイなどを含んでよいが、これらに限定されない。いくつかの実施形態では、表示機器は、タッチスクリーンであってよい。
本明細書で説明されたシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、専用ASIC(専用集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせにおいて実現されてよい。これらの様々な実施形態は、記憶システム、少なくとも1つの入力装置及び少なくとも1つの出力装置からデータと命令を受信し、かつデータと命令を該記憶システム、該少なくとも1つの入力装置及び該少なくとも1つの出力装置に伝送することができる専用又は汎用のプログラマブルプロセッサを1つ以上含むプログラマブルシステム上で実行可能及び/又は解釈可能な1つまたは複数のコンピュータプログラムにおける実装を含むことが可能である。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼ばれる)は、プログラマブルプロセッサの機械語命令を含み、高レベル手続き言語及び/又はオブジェクト指向プログラミング言語、及び/又はアセンブリ言語/機械言語で実装することができる。本明細書において使用されるように、「機械読み取り可能な媒体」及び「コンピュータ読み取り可能な媒体」という用語は、機械語命令及び/又はデータをプログラマブルプロセッサに供給する任意のコンピュータプログラム製品、機器、及び/又は装置(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジック装置(PLD))を意味し、機械読み取り可能な信号としての機械語命令を受信する機械読み取り可能な媒体を含む。「機械読み取り可能な信号」という用語は、機械語命令及び/又はデータをプログラマブルプロセッサに供給する任意の信号を意味する。
ユーザとのインタラクションを行うために、本明細書で説明されたシステム及び技術をユーザに情報を表示する表示デバイス(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、ユーザがそれにより入力をコンピュータに提供することができるキーボード及びポインティングデバイス(例えば、マウス又はトラックボール)とを有するコンピュータ上で実装することができる。他のタイプの装置は、ユーザとのインタラクションをさらに提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形式の感覚的なフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック))であってよく、また、任意の形式(音響入力、音声入力、又は触覚入力を含む)でユーザからの入力を受信することができる。
本明細書で説明されたシステム及び技術を、バックオフィスコンポーネントを含むコンピュータシステム(例えば、データサーバ)、ミドルウェアコンポーネントを含むコンピュータシステム(例えば、アプリケーションサーバ)、フロントエンドコンポーネントを含むコンピュータシステム(例えば、グラフィカルユーザインタフェース又はウェブブラウザを有するユーザコンピュータであり、ユーザは、該グラフィカルユーザインタフェース又は該ウェブブラウザにより本明細書で説明されたシステム及び技術の実施形態とインタラクティブすることができる)、又はこのようなバックオフィスコンポーネント、ミドルウェアコンポーネント又はフロントエンドコンポーネントの任意の組み合わせを含むコンピュータシステムにおいて実装することができる。任意の形式又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によりシステムの部材を互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット及びブロックチェーンネットワークが挙げられる。
コンピュータシステムは、クライアント及びサーバを含んでよい。クライアントとサーバは、一般的に、互いに離れ、かつ通信ネットワークを介してインタラクションを行う。クライアントとサーバの関係は、対応するコンピュータ上で実行され、互いにクライアント-サーバの関係を有するコンピュータプログラムによって生成される。サーバは、クラウドサーバであってよく、クラウドコンピューティングサーバ又はクラウドホストとも呼ばれ、従来の物理ホストと仮想専用サーバ(VPS,VirtualPrivateServer)によるサービスに存在する高い管理難易度、低いサービス拡張性の欠陥を解決するためのクラウドコンピューティングサービスシステムのうちの1つのホスト製品である。
本願の実施例の技術的解決手段に基づいて、RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュし、各ノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージすることにより、RPCクラスターの各ノードのメンバーリストはいずれも収束同期を最終的に実現することができ、各ノードはいずれも全てのRPCメンバーの関連情報を最終的に取得することができ、ネットワーク異常が発生しても、異常が解消された後、各ノードのメンバーリストが収束同期を最終的に実現することができ、このように、クラウドサービスシステム全体が正常に安定して動作するよう保証することができる。
なお、上記様々な形態のフローを用いて、ステップを並べ替えたり、追加したり、削除したりすることができる。例えば、本願で開示されている技術手段の所望の結果を実現する限り、本願に記載された各ステップは、並列して実行されてもよく、順次実行されてもよく、異なる順序で実行されてもよく、本明細書はここで限定しない。
上記発明を実施するための形態は、本願の保護範囲を限定するものではない。設計要件及びその他の要因に応じて、様々な修正、組み合わせ、サブコンビネーション及び置換を行うことができることは、当業者に理解されるところである。本願の精神及び原則内で行われるいかなる修正、同等置換、改善などは、いずれも本願の保護範囲に含まれるべきである。

Claims (19)

  1. RPCクラスターの各ノードが、それぞれのローカルメンバーリストを互いにプッシュし、前記RPCクラスターの各ノードのメンバーリストが同期するまで、受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージすることを含み、
    前記メンバーリスト中の各ノードの情報は、
    ノードの記述メタ情報を含み、
    又は、
    前記メンバーリスト中の各ノードの情報は、
    ノードの一意識別子と、
    ノードのネットワークアクセスアドレスと、
    ノードの現在のノード状態と、
    のうちの少なくとも1つ、及び、ノードの記述メタ情報の組み合わせを含み、
    前記ノードの記述メタ情報は、キーが前記ノードの属するエージェントクラスターを表し、値が前記ノードの属するエージェントクラスターにおける、RPCクライアント又はRPCサーバを含むRPC役割を表すキー/値ペアによって表される、RPCメンバー情報取得方法。
  2. 前記RPCクラスターに第1のノードが新規に追加された場合、前記第1のノードがシードノードとメンバーリスト同期を行うことと、
    前記第1のノードが現在のローカルメンバーリスト中の各ノードに活性化メッセージを送信することと、
    前記活性化メッセージを受信したノードが前記第1のノードをメンバーリストに追加することと、をさらに含む、請求項1に記載の方法。
  3. 第1のノードがシードノードとメンバーリスト同期を行うことは、
    前記第1のノードが自分と前記シードノードをメンバーリストに追加することと、
    前記シードノードと前記第1のノードがそれぞれのメンバーリストを互いにプッシュすることと、
    前記第1のノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージすることとを含む、請求項2に記載の方法。
  4. 前記RPCクラスターの第2のノードが第3のノードが異常ノードであると識別した場合、現在のローカルメンバーリスト中の各ノードに異常メッセージを送信することと、
    前記異常メッセージを受信したノードが前記第3のノードをそれぞれのメンバーリストから削除するか、又はそれぞれのメンバーリストにおいて前記第3のノードを異常ノードとしてマークすることとをさらに含む、請求項1に記載の方法。
  5. 前記第2のノードが前記第3のノードが異常ノードであるか否かを識別する方法は、
    前記第2のノードが前記第3のノードにハートビート監視要求メッセージを送信することと、
    前記第2のノードが前記第3のノードから送信されるハートビート監視フィードバックメッセージを所定の時間内に受信していなければ、前記第2のノードが前記第3のノードを異常ノードとして識別することとを含む、請求項4に記載の方法。
  6. 前記RPCクラスターの各ノードがそれぞれのローカルメンバーリストを互いにプッシュすることは、
    RPCクラスターの各ノードが所定の時間間隔ごとに現在のローカルメンバーリスト中のいずれかのノードにそれぞれのローカルメンバーリストをランダムにプッシュすることと、
    メンバーリストを受信したノードが、対応するプッシュノードに現在のローカルメンバーリストをフィードバックすることとを含む、請求項1に記載の方法。
  7. 前記RPCクラスターの各ノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージする過程において、第4のノードのノード状態がメンバーリストによって異なる場合、優先度の高いノード状態を前記第4のノードのメンバーリストにおけるノード状態とする、請求項1に記載の方法。
  8. 前記ノード状態は有効状態及び無効状態を含み、前記無効状態の優先度は前記有効状態の優先度より高い、請求項7に記載の方法。
  9. RPCクラスターの各ノードが、それぞれのローカルメンバーリストを互いにプッシュし、前記RPCクラスターの各ノードのメンバーリストが同期するまで、受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージするための第1の同期モジュールを含
    前記メンバーリスト中の各ノードの情報は、
    ノードの記述メタ情報を含み、
    又は、
    前記メンバーリスト中の各ノードの情報は、
    ノードの一意識別子と、
    ノードのネットワークアクセスアドレスと、
    ノードの現在のノード状態と、
    のうちの少なくとも1つ、及び、ノードの記述メタ情報の組み合わせを含み、
    前記ノードの記述メタ情報は、キーが前記ノードの属するエージェントクラスターを表し、値が前記ノードの属するエージェントクラスターにおける、RPCクライアント又はRPCサーバを含むRPC役割を表すキー/値ペアによって表される、RPCメンバー情報取得装置。
  10. 前記RPCクラスターに第1のノードが新規に追加された場合、前記第1のノードがシードノードとメンバーリスト同期を行うための第2の同期モジュールと、
    前記第1のノードが現在のローカルメンバーリスト中の各ノードに活性化メッセージを送信するための第1の送信モジュールと、
    前記活性化メッセージを受信したノードが前記第1のノードをメンバーリストに追加するための追加モジュールと、をさらに含む、請求項に記載の装置。
  11. 前記第2の同期モジュールは、
    前記第1のノードが自分と前記シードノードをメンバーリストに追加するための追加サブモジュールと、
    前記シードノードと前記第1のノードがそれぞれのメンバーリストを互いにプッシュするための第1のプッシュサブモジュールと、
    前記第1のノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージするためのマージサブモジュールとを含む、請求項10に記載の装置。
  12. 前記RPCクラスターの第2のノードが第3のノードが異常ノードであると識別した場合、現在のローカルメンバーリスト中の各ノードに異常メッセージを送信するための第2の送信モジュールと、
    前記異常メッセージを受信したノードが前記第3のノードをそれぞれのメンバーリストから削除するか、又はそれぞれのメンバーリストにおいて前記第3のノードを異常ノードとしてマークするための異常処理モジュールとをさらに含む、請求項に記載の装置。
  13. 前記第2のノードが前記第3のノードにハートビート監視要求メッセージを送信するための監視モジュールと、
    前記第2のノードが前記第3のノードから送信されたハートビート監視フィードバックメッセージを所定の時間内に受信していなければ、前記第2のノードが前記第3のノードを異常ノードとして識別するための識別モジュールとをさらに含む、請求項12に記載の装置。
  14. 前記第1の同期モジュールは、
    RPCクラスターの各ノードが所定の時間間隔ごとに現在のローカルメンバーリスト中のいずれかのノードにそれぞれのローカルメンバーリストをランダムにプッシュするための第2のプッシュサブモジュールと、
    メンバーリストを受信したノードが、対応するプッシュノードに現在のローカルメンバーリストをフィードバックするためのフィードバックサブモジュールとを含む、請求項に記載の装置。
  15. 前記第1の同期モジュールは、さらに
    前記RPCクラスターの各ノードが受信したメンバーリストと現在のローカルメンバーリストを重複排除しマージする過程において、第4のノードのノード状態がメンバーリストによって異なる場合、優先度の高いノード状態を前記第4のノードのメンバーリストにおけるノード状態とする、請求項に記載の装置。
  16. 前記ノード状態は有効状態及び無効状態を含み、前記無効状態の優先度は前記有効状態の優先度より高い、請求項15に記載の装置。
  17. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサと通信接続されるメモリとを含み、
    前記メモリには、前記少なくとも1つのプロセッサによって実行可能で、前記少なくとも1つのプロセッサによって実行されると、請求項1~のいずれか1項に記載の方法を前記少なくとも1つのプロセッサに実行させる命令が記憶されている、電子機器。
  18. 請求項1~のいずれか1項に記載の方法をコンピュータに実行させるコンピュータ命令を記憶している、非一時的なコンピュータ読み取り可能な記憶媒体。
  19. プロセッサによって実行されると、請求項1~のいずれか1項に記載の方法が実現されるコンピュータプログラム
JP2021041564A 2020-09-24 2021-03-15 Rpcメンバー情報取得方法、装置、電子機器、記憶媒体及びコンピュータプログラム製品 Active JP7083416B2 (ja)

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
JP2021108139A JP2021108139A (ja) 2021-07-29
JP7083416B2 true JP7083416B2 (ja) 2022-06-10

Family

ID=74016185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021041564A Active JP7083416B2 (ja) 2020-09-24 2021-03-15 Rpcメンバー情報取得方法、装置、電子機器、記憶媒体及びコンピュータプログラム製品

Country Status (5)

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

Families Citing this family (4)

* 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 北京阳光云视科技有限公司 网络长连接服务集群化部署系统及控制流程
CN114745387A (zh) * 2022-04-20 2022-07-12 浙江立昂数智科技有限公司 一种多集群管控方法和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001109726A (ja) 1999-08-31 2001-04-20 Internatl Business Mach Corp <Ibm> 分散コンピュータ・システム内のプロセッサを再構成する方法、システム、および、記憶装置
JP2002351855A (ja) 2001-05-28 2002-12-06 Mitsubishi Electric Corp 計算機異常処理システムおよび、計算機異常処理方法および、計算機で動作する計算機異常処理プログラムおよび、コンピュータにより読み取り可能な記録媒体に記録された計算機異常処置プログラム
JP2004519024A (ja) 2000-09-08 2004-06-24 ゴー アヘッド ソフトウェア インコーポレイテッド 多数のノードを含むクラスタを管理するためのシステム及び方法
US20110289344A1 (en) 2010-05-20 2011-11-24 International Business Machines Corporation Automated node fencing integrated within a quorum service of a cluster infrastructure
JP2014197266A (ja) 2013-03-29 2014-10-16 富士通株式会社 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
JP2015535970A (ja) 2012-09-07 2015-12-17 アビジロン コーポレイション 複数のサーバノードを有する物理的セキュリティシステム
CN111309375A (zh) 2020-02-11 2020-06-19 北京字节跳动网络技术有限公司 生成远程过程调用工具包的方法、装置、介质和电子设备
JP2020113924A (ja) 2019-01-15 2020-07-27 富士通株式会社 モニタリングプログラム,プログラマブルデバイス及びモニタリング方法

Family Cites Families (13)

* 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
US9141449B2 (en) * 2009-10-30 2015-09-22 Symantec Corporation Managing remote procedure calls when a server is unavailable
US9197700B2 (en) * 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
WO2017045079A1 (en) * 2015-09-18 2017-03-23 Avigilon Corporation Physical security system having multiple server nodes configured to implement a conditionally triggered rule
EP3356961B1 (en) * 2015-10-02 2020-05-27 Google LLC Peer-to-peer syncable storage system
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 华为技术有限公司 一种数据处理方法及装置
CN110768914B (zh) 2019-10-23 2022-03-29 上海交通大学 基于语义场景实例迁移的去中心化物联网关系统
CN111262918A (zh) * 2020-01-13 2020-06-09 中孚安全技术有限公司 一种跨平台分布式一致性框架系统及其实现方法
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001109726A (ja) 1999-08-31 2001-04-20 Internatl Business Mach Corp <Ibm> 分散コンピュータ・システム内のプロセッサを再構成する方法、システム、および、記憶装置
JP2004519024A (ja) 2000-09-08 2004-06-24 ゴー アヘッド ソフトウェア インコーポレイテッド 多数のノードを含むクラスタを管理するためのシステム及び方法
JP2002351855A (ja) 2001-05-28 2002-12-06 Mitsubishi Electric Corp 計算機異常処理システムおよび、計算機異常処理方法および、計算機で動作する計算機異常処理プログラムおよび、コンピュータにより読み取り可能な記録媒体に記録された計算機異常処置プログラム
US20110289344A1 (en) 2010-05-20 2011-11-24 International Business Machines Corporation Automated node fencing integrated within a quorum service of a cluster infrastructure
JP2015535970A (ja) 2012-09-07 2015-12-17 アビジロン コーポレイション 複数のサーバノードを有する物理的セキュリティシステム
JP2014197266A (ja) 2013-03-29 2014-10-16 富士通株式会社 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
JP2020113924A (ja) 2019-01-15 2020-07-27 富士通株式会社 モニタリングプログラム,プログラマブルデバイス及びモニタリング方法
CN111309375A (zh) 2020-02-11 2020-06-19 北京字节跳动网络技术有限公司 生成远程过程调用工具包的方法、装置、介质和电子设备

Also Published As

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

Similar Documents

Publication Publication Date Title
JP7083416B2 (ja) Rpcメンバー情報取得方法、装置、電子機器、記憶媒体及びコンピュータプログラム製品
CN106331098B (zh) 一种服务器集群系统
US20170344443A1 (en) Dynamically changing members of a consensus group in a distributed self-healing coordination service
CN109245908B (zh) 一种主从集群切换的方法和装置
CN112532729B (zh) 用于边缘设备和云端的数据同步方法和装置
CN113572831B (zh) Kubernetes集群间的通信方法、计算机设备及介质
WO2019061720A1 (zh) 一种数据同步的方法和系统
US10069942B2 (en) Method and apparatus for changing configurations
Tiderko et al. The ROS multimaster extension for simplified deployment of multi-robot systems
US11095742B2 (en) Query proxy for delivery of dynamic system state
CN112527520A (zh) 一种部署消息中间件的方法和装置
CN110120961B (zh) 一种分布式服务集群及其路由同步的方法
CN113656147B (zh) 一种集群部署方法、装置、设备及存储介质
EP3304304B1 (en) Cloud computing infrastructure
CN111510480B (zh) 一种请求发送方法、装置以及第一服务器
JP6304499B2 (ja) 相互接続ネットワークを管理する方法およびシステム
CN107071189B (zh) 一种通讯设备物理接口的连接方法
CN109639777B (zh) 数据同步的方法、装置、系统和非易失性存储介质
JP2010086137A (ja) メッセージキューイング方法及びプログラム
US20150244780A1 (en) System, method and computing apparatus to manage process in cloud infrastructure
CN108701035B (zh) 应用属性的管理
JP2021141609A (ja) ピアツーピア接続方法、装置、電子デバイス、記憶媒体、及びプログラム
US20200089585A1 (en) Distributed processing system and method for management of distributed processing system
CN111338647A (zh) 一种大数据集群管理方法和装置
CN116582542A (zh) 一种主节点确定方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210427

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220422

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220531

R150 Certificate of patent or registration of utility model

Ref document number: 7083416

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150