(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-23
(45)【発行日】2024-05-31
(54)【発明の名称】ネットワークデバイスを監視するシステムおよび方法
(51)【国際特許分類】
G06F 11/30 20060101AFI20240524BHJP
【FI】
G06F11/30 155
G06F11/30 140A
【外国語出願】
(21)【出願番号】P 2023117548
(22)【出願日】2023-07-19
(62)【分割の表示】P 2021564604の分割
【原出願日】2019-12-05
【審査請求日】2023-08-18
(32)【優先日】2019-04-30
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ナバニオク,イゴール
(72)【発明者】
【氏名】クナーベン,アンドレ
【審査官】坂庭 剛史
(56)【参考文献】
【文献】米国特許出願公開第2013/0173784(US,A1)
【文献】米国特許出願公開第2008/0259922(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
方法であって、
サーバにおいて、ハッシュ関数を適用することによって複数のデバイスの各々についてのそれぞれの一意識別子を対応するデバイスハッシュキーに変換するステップを含み、前記複数のデバイスは、通信ネットワークを介して前記サーバおよび互いに通信可能に結合され、前記方法さらに、
前記サーバにおいて、前記複数のデバイスのデバイスハッシュキーの範囲を所与の数のほぼ等しいセクタに分割するステップを含み、各セクタは前記所与の数のほぼ等しいセクタに
反比例する数の前記デバイスハッシュキーを含み、前記方法さらに、
前記サーバにおいて、それぞれの前記デバイスハッシュキーに基づいた順序で前記複数のデバイスを監視するためにK個の監視ワーカーを設けるステップを含み、Kは1よりも大きい整数である、方法。
【請求項2】
前記K個の監視ワーカーのうち少なくとも1つによって、前記所与の数のほぼ等しいセクタのうち少なくとも1つに含まれる1つ以上のデバイスのステータスチェックを実行するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記複数のデバイスのうち現在のデバイスが前記通信ネットワークを介してアクセスできないと判定された場合、または予め定められた閾値未満で応答すると判定された場合、前記現在のデバイスのステータスチェックの完了前に、前記所与の数のほぼ等しいセクタのうちの1つのセクタにおける次のデバイスのステータスチェックを開始するステップをさらに含む、請求項2に記載の方法。
【請求項4】
前記通信ネットワークに通信可能に結合されたデータベースシステムにおいて、前記1つ以上のデバイスの判定された状態が予め格納された状態から変化したと判定することに応じて、前記判定された状態を格納するステップをさらに含む、請求項2または3に記載の方法。
【請求項5】
前記K個の監視ワーカーのうちの1つを用いて、前記所与の数のほぼ等しいセクタのうちどのセクタが前記ステータスチェックを実行するかを判定するステップをさらに含む、請求項2~4のいずれかに記載の方法。
【請求項6】
前記所与の数のほぼ等しいセクタは、Nとして表わされ、0からN-1の範囲である(前記所与の数のほぼ等しいセクタのうちj番目のセクタはハッシュキー(2**64)/N*j+min(j,(2**64)%N)から始まる)とともに、(2**64)/N+(j<(2**64)%N)ハッシュキーを含み、
前記デバイスハッシュキーは64ビット整数である、請求項5に記載の方法。
【請求項7】
前記所与の数のほぼ等しいセクタのうち最大のセクタと最小のセクタとの大きさの差が1以下である、請求項6に記載の方法。
【請求項8】
前記複数のデバイスの各デバイスのためにK個の監視ワーカーのうちの1つによって実行される前記ステータスチェックの頻度は、時間の尺度であるPである、請求項5~7のいずれかに記載の方法。
【請求項9】
前記K個の監視ワーカーは0からK-1まで番号付けされ、前記方法はさらに、
ワーカー番号0である所与の時間tにおいて、セクタ番号(t%(P*K))*N/(P*K)のデバイスの前記ステータスチェックを実行し、Nは前記所与の数のほぼ等しいセクタを表わしている、請求項8に記載の方法。
【請求項10】
ワーカー番号0以外のワーカーを用いて、セクタ番号(t%((P*i)*K))*N/((P*i)*K)に対して前記ステータスチェックを実行するステップをさらに含み、iは0からK-1の間のワーカー番号である、請求項9に記載の方法。
【請求項11】
システムであって、
通信ネットワークを介して互いに通信可能に結合される複数のデバイスを含み、前記複数のデバイスのうち少なくとも1つのデバイスはハードウェアデバイスであり、前記システムはさらに、
サーバを含み、前記サーバは、前記通信ネットワークに通信可能に結合されて、
前記複数のデバイスの各々に一意識別子を割当て、
ハッシュ関数を適用することによって各々の一意識別子をデバイスハッシュキーに変換し、
前記複数のデバイスのデバイスハッシュキーの範囲を所与の数のほぼ等しいセクタに分割し、各セクタは前記所与の数のほぼ等しいセクタに
反比例する数の前記デバイスハッシュキーを含み、さらに、
それぞれの前記デバイスハッシュキーに基づいた順序で前記複数のデバイスを監視するためにK個の監視ワーカーを提供し、Kは1よりも大きい整数である、システム。
【請求項12】
前記K個の監視ワーカーのうち少なくとも1つは、前記所与の数のほぼ等しいセクタのうち少なくとも1つに含まれる1つ以上のデバイスのステータスチェックを実行する、請求項11に記載のシステム。
【請求項13】
前記複数のデバイスのうち現在のデバイスが前記通信ネットワークを介してアクセスできないと判定された場合、または予め定められた閾値未満で応答すると判定された場合、前記現在のデバイスのステータスチェックの完了前に、前記所与の数のほぼ等しいセクタのうちの1つのセクタにおける次のデバイスのステータスチェックを開始することをさらに含む、請求項12に記載のシステム。
【請求項14】
前記通信ネットワークに通信可能に結合されて、前記1つ以上のデバイスの判定された状態を格納するデータベースシステムをさらに含み、前記複数のデバイスの各デバイスの前記判定された状態は、前記判定された状態が予め格納された状態から変化したと判定することに応じて、前記データベースシステムに格納される、請求項12または13に記載のシステム。
【請求項15】
前記K個の監視ワーカーのうちの1つは、前記所与の数のほぼ等しいセクタのうちどのセクタが前記ステータスチェックを実行するかを判定する、請求項12~14のいずれかに記載のシステム。
【請求項16】
前記所与の数のほぼ等しいセクタは、Nとして表わされ、0からN-1の範囲である(前記所与の数のほぼ等しいセクタのうちj番目のセクタはハッシュキー(2**64)/N*j+min(j,(2**64)%N)から始まる)とともに、(2**64)/N+(j<(2**64)%N)ハッシュキーを含み、
前記デバイスハッシュキーは64ビット整数である、請求項15に記載のシステム。
【請求項17】
前記所与の数のほぼ等しいセクタのうち最大のセクタと最小のセクタとの大きさの差が1以下である、請求項16に記載のシステム。
【請求項18】
前記複数のデバイスの各デバイスのためにK個の監視ワーカーのうちの1つによって実行される前記ステータスチェックの頻度は、時間の尺度であるPである、請求項16または17に記載のシステム。
【請求項19】
前記K個の監視ワーカーは0からK-1まで番号付けされ、所与の時間tにおいて、ワーカー番号0がセクタ番号(t%(P*K))*N/(P*K)のデバイスの前記ステータスチェックを実行し、Nは前記所与の数のほぼ等しいセクタを表わしている、請求項18に記載のシステム。
【請求項20】
ワーカー番号0以外のワーカーが、セクタ番号(t%((P*i)*K))*N/((P*i)*K)に対して前記ステータスチェックを実行し、iは0からK-1の間のワーカー番号である、請求項19に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
本システムでは、デバイスの動作ステータスを判定することができるように、定期的メッセージが、デバイスから通信ネットワークを介して中央ロケーションに送信される。特定のデバイスからのメッセージが予め定められた期間にわたって受信されないということは、そのデバイスまたは通信ネットワークに問題があることを示している。いくつかのシステムでは、ネットワークの各デバイスの動作ステータスを定期的に要求するために中央ロケーションによってポーリングが用いられ、中央の記録はポーリング結果に基づいて更新される。
【発明の概要】
【0002】
概要
開示される主題の一実現例に従うと、サーバにおいて、通信ネットワークを介して当該サーバおよび互いに通信可能に結合された複数のデバイスの各々に一意識別子を割当てるステップを含む方法が提供される。当該方法は、サーバにおいて、ハッシュ関数を適用することによって各々の一意識別子をデバイスハッシュキーに変換するステップを含み得る。サーバにおいて、複数のデバイスのデバイスハッシュキーの範囲は、N個のほぼ等しいセクタに分割され得る。ここで、Nは素数であり、各セクタは複数のデバイスのデバイスハッシュキーの1/Nを含む。当該方法は、サーバにおいて、それぞれのデバイスハッシュキーに基づいた順序で複数のデバイスを監視するためにK個の監視ワーカーを提供するステップを含み得る。ここで、Kは整数である。
【0003】
開示される主題の一実現例に従うと、通信ネットワークを介して互いに通信可能に結合された複数のデバイスを含むシステムが提供される。当該システムはサーバを含み得る。当該サーバは、通信ネットワークに通信可能に結合されて、複数のデバイスの各々に一意識別子を割当て、ハッシュ関数を適用することによって各々の一意識別子をデバイスハッシュキーに変換し、複数のデバイスのデバイスハッシュキーの範囲をN個のほぼ等しいセクタに分割し、ここで、Nは素数であり、各セクタは複数のデバイスのデバイスハッシュキーの1/Nを含んでおり、さらに、それぞれのデバイスハッシュキーに基づいた順序で複数のデバイスを監視するためにK個の監視ワーカーを提供し得る。ここで、Kは整数である。
【0004】
開示される主題の一実現例に従うと、通信ネットワークを介してサーバおよび互いに通信可能に結合された複数のデバイスの各々に一意識別子を割当てるための手段を含む、ネットワークのデバイスを監視するための手段が提供される。ハッシュ関数を適用することによって各々の一意識別子をデバイスハッシュキーに変換するための手段が提供され得る。複数のデバイスのデバイスハッシュキーの範囲は、N個のほぼ等しいセクタに分割され得る。ここで、Nは素数であり、各セクタは複数のデバイスのデバイスハッシュキーの1/Nを含む。それぞれのデバイスハッシュキーに基づいた順序で複数のデバイスを監視するためにK個の監視ワーカーが提供され得る。ここで、Kは整数である。
【0005】
開示される主題の追加の特徴、利点、および実施形態は、以下の詳細な説明、添付の図面、および添付の特許請求の範囲を検討することによって定義され得るかまたは明らかになり得る。さらに、上述の概要および以下の詳細な説明はともに例示的なものであり、添付の特許請求の範囲を限定することなくさらなる説明を提供することを意図したものであることを理解されたい。
【0006】
図面の簡単な説明
添付の図面は、開示される主題のさらなる理解を提供するために含まれるものであって、本明細書に組込まれるとともにその一部を構成している。添付の図面はまた、開示される主題の実施形態を例示するとともに、詳細な説明と合わせて、開示される主題の実施形態の原理を説明する役割を果たすものである。開示される主題の基本的な理解およびそれが実施され得るさまざま方法のために必要となり得る構造的詳細をより詳しく示す試みはなされていない。
【図面の簡単な説明】
【0007】
【
図1A】開示される主題の実現例に従った、通信ネットワークにおけるデバイスを監視する例示的な方法を示す図である。
【
図1B】開示される主題の実現例に従った、通信ネットワークにおけるデバイスを監視する例示的な方法を示す図である。
【
図2】開示される主題の一実現例に従ったコンピューティングデバイスを示す図である。
【
図3】開示される主題の一実現例に従ったネットワーク構成を示す図である。
【発明を実施するための形態】
【0008】
詳細な説明
通信ネットワークに通信可能に結合されたデバイスは信頼できない可能性がある。ネットワークの大きさに応じて、数百、数千、または数百万の潜在的に信頼できないデバイスがネットワークに結合されている可能性がある。サーバなどの1つ以上のコンピュータがネットワークの各デバイスのステータスの最新情報を有することが望ましい場合もある。たとえば、デバイスステータスは、健全性、利用可能性、ビジー状態、アクセス不能状態などを含み得る。
【0009】
開示される主題の実現例では、ネットワークの1つ以上のデバイスに関するデバイスステータス情報は、単一のサーバロケーションで収集され得る。デバイスステータス情報の収集は、選択された数のワーカーによって実行され得る。各ワーカーは、ソフトウェア、ハードウェア、またはそれらの組合わせであり得る。いくつかの実現例では、ワーカーは、サーバによって(たとえば、ワーカーがソフトウェアを含む場合には)生成されてもよく、および/または、(たとえば、ワーカーがハードウェアデバイスを含む場合には)割当てられてもよい。デバイスステータス情報を収集するために配分されたワーカーの数は、ネットワークデバイスの数に基づいていてもよい。ネットワークデバイスの数は、新しいデバイスがネットワークに追加されるのに応じて、またはデバイスがネットワークから除去されるのに応じて、変化し得る。この構成は、デバイスステータスを収集する個々のワーカーのいずれか、および/または集中型サーバに悪影響を及ぼすことなく、集中型で大規模なデバイス管理を提供し得る。
【0010】
集中型サーバ構成は、全体的なシステム統計を判定し得るとともに、各デバイスの所望の状態をその実際の状態と比較し得る。ネットワークに通信可能に結合されたデバイスは、コンピュータ、インターネットサーバ、ネットワーキングハードウェア、モノのインターネット(Internet-of-Things)デバイスもしくはノード、タブレット、ラップトップ、携帯電話、スマートウォッチ、および/または、スマートデバイス、および/または、遠隔でアクセスされ得るとともにその現在の状態について探索され得る他の任意のデバイスであり得る。いくつかの実現例では、ネットワークに結合されたデバイスのうち少なくともいくつかは、1つ以上のサーバ上の(たとえば、信頼できないソフトウェアを実行させる)仮想マシンであり得る。
【0011】
開示される主題の実現例は、デバイスの現在のステータスを得るのに十分なほど頻繁に
ネットワークの各デバイスと通信することと、通信トラフィックおよびその使用またはネットワークリソースを減らすためにデバイス間の通信の量を減らすこと、との間のバランスを取る際の問題に対処し得る。開示される構成は、デバイスステータス収集タスクを分散させることによって、典型的には現在のシステムの中央サーバにおいて見出される、ネットワークにおける通信ボトルネックの発生を回避し得る。
【0012】
たとえば、いくつかの現在のシステムでは、定期的なチェックインメッセージ(たとえば、「心拍」)が、各デバイスによって中央ロケーションに送信される。各メッセージは、単一のデバイスの現在の状態を含む。中央ロケーションが予め定められた期間後に特定のデバイスから心拍を受信しない場合、デバイスまたは通信媒体(たとえば、通信ネットワークの一部)が問題を有する可能性がある。このような現在のシステムでは、中央ロケーションがこれらのメッセージを受信し、システム全体の最新の健全性を判定する。このアプローチは、ある最大数のデバイス(たとえば、数万個)または最大心拍周波数(たとえば、デバイスごとに1分当たり1回)に対処し得る。しかしながら、中央システムは、たとえば最大数のデバイスまたは最大数の心拍周波数に達するかまたはそれを超えると、受信した心拍メッセージの数を処理するのに支障をきたすボトルネックとなる。さらに、中央サーバが信頼できないものである場合、本システムは停電してしまう傾向がある。
【0013】
本システムにおいて用いられる別のアプローチはポーリングであり、この場合、中央ロケーション(たとえば、中央健全性監視サービスなど)は、ネットワークの各デバイスに対してその現在の状態についての要求を定期的に発行し、受信された状態情報に基づいて中央記録を更新する。このシステムは、単一のノードが着信メッセージ(すなわち、ファンイン(fan-in))で過負荷になってしまうという問題を回避する。このシステムの不利点は、中央ロケーションが発信メッセージの送信(すなわち、ファンアウト(fan-out))
で過負荷になってしまう可能性がある点である。すなわち、システムは、通常、何百万ものデバイスを監視するのに十分なステータスチェック要求を中央ロケーションから送出することができない。この構成の別の不利点は、中央ロケーションの障害がシステム全体を無効化してしまうこと(すなわち、単一障害点の問題)である。したがって、中央ロケーションは、障害を最小限にするために過剰に機能を持たせるように設計されなければならず、費用が高くなる可能性がある。
【0014】
開示される主題の実現例は、収集データを互換性のある部分に分割し得ることで、全体的なシステムの信頼性および一貫性を高め得る。開示される構成は、分散型ワーカーを用いて、中央サーバに格納され得るネットワークデバイスのデバイスステータス情報を収集する負荷に対処し得る。すなわち、現在のシステムとは異なり、開示される主題の実現例では、過度のファンイン、ファンアウト、または単一障害点が生じない。
【0015】
図1Aおよび
図1Bは、開示される主題の実施形態に従った通信ネットワーク内のデバイスを監視する例示的な方法100を示す。動作102において、サーバ(たとえば、
図3に示すサーバ13および/またはリモートプラットフォーム17)は、通信ネットワーク(たとえば、
図3に示すネットワーク7)を介してサーバおよび互いに通信可能に結合された複数のデバイス(たとえば、
図2および
図3に示すデバイス10、11)の各々に一意識別子を割当て得る。ネットワークに通信可能に結合された各デバイスは、サーバによって割当てられ得るグローバル一意識別子または名前を有し得る。
【0016】
通信ネットワークに通信可能に結合される各デバイスは、デバイスの動作状態に関する問合せを受信するように構成され得る。問合せは、たとえば、ハイパーテキスト転送プロトコル(hypertext transfer protocol:HTTP)、転送制御プロトコル/インターネ
ットプロトコル(transfer control protocol/internet protocol:TCP/IP)など
のネットワーキングプロトコルを介して受信されてもよい。いくつかの実現例では、プロ
キシサービスを用いて、ネットワークに結合されたデバイスの各々との持続的な通信チャネルを維持してもよい。プロキシサービスは、ネットワークのうち1つ以上のデバイスのステータスを判定するために、以下において詳細に説明される複数のワーカーを用い得る。
図3に示すサーバ13および/またはリモートプラットフォーム17などのコンピュータまたはサーバはプロキシサービスを提供し得る。いくつかの実現例では、ワーカーはプロキシサービスのサーバによって制御され得る。このサービスは、たとえば、ネットワークを介したデバイスへの対応する通信接続が開かれている(すなわち、動作可能である)場合はいつでも、デバイスが健全であると判定し得る。
【0017】
動作104において、各々の識別子および/または名前は、ハッシュ関数を適用することによって、サーバ(たとえば、
図3に示すサーバ13および/またはリモートプラットフォーム17)によって、デバイスハッシュキーと称される整数に変換され得る。いくつかの実現例では、MD5、SHA-1などのハッシュ関数が用いられてもよい。いくつかの実現例では、デバイスハッシュキーは、64ビット長または他の任意の適切なビット長であってもよい。
【0018】
動作106において、サーバは、複数のデバイスのデバイスハッシュキーの範囲をN個のほぼ等しいセクタ(すなわち、サブ範囲)に分割し得る。この場合、Nは素数であり得るとともに、各セクタは、複数のデバイスのデバイスハッシュキーの1/Nを含む。いくつかの事例においては、ハッシュキーの数は、Nで厳密に割り切れない可能性があるため、いくつかのセクタは他のセクタよりも大きい1つのキーであり得る。すなわち、いくつかのセクタは、デバイスの1/N分が切り上げられる可能性がある一方で、他のセクタは、デバイスの1/N分が切り捨てられる可能性がある。いくつかの実現例では、Nの値は101または他の任意の適切な素数であり得る。Nについての大きな素数(たとえば、101)を選択することにより、後に詳細に説明するように、サーバによって操作されるプロキシサービスの2個のワーカーが、同じセクタを或るデータベース(たとえば、
図3に示すデータベース15)から同時に読取ること、または、状態更新を同じデバイスのためのデータベースに書込むこと、がないようにし得る。
【0019】
複数のK個の監視ワーカー(Kは整数である)は、ネットワークに通信可能に結合された複数のデバイスを監視するために、サーバによって展開されてもよく、生成されてもよく、および/または割当てられてもよい。
図1Aに示されるように、サーバは、動作108において、それぞれのデバイスハッシュキーに基づいた順序で複数のデバイスを監視するためにK個の監視ワーカーを提供し得る。いくつかの実現例では、Kは、9の値を有していてもよく、または、任意の好適な整数値を有していてもよい。各ワーカーは、連続的に操作され得るソフトウェア、ハードウェアまたはそれらの組合わせであり得る。
【0020】
図1Bに示されるように、例示的な方法100は、動作110において、K個の監視ワーカーのうち少なくとも1つによって、N個のセクタのうち少なくとも1つに含まれる1つ以上のデバイスのステータスチェックを実行するステップを含み得る。各ワーカーは、ハッシュキーの順に各デバイスの状態を1つずつ監視してもよい。或るデバイスが一時的にアクセス不能である場合、またはネットワークを介したデバイスとの通信が予め定められたデータレート未満である場合、現在のデバイスの状態チェックが完了する前に或るワーカーが次のデバイスの状態チェックを開始し得る。N個のセクタのうち1つのセクタにおける次のデバイスのステータスチェックは、複数のデバイスのうち現在のデバイスが通信ネットワークを介してアクセス不能であると判定された場合、または予め定められた閾値未満で応答すると判定された場合、当該現在のデバイスのステータスチェックの完了前に開始されてもよい。
【0021】
すなわち、或るワーカーが複数のデバイスの動作状態を判定し得る。いくつかの実現例
では、複数のデバイスの動作状態は同時に判定されてもよい。システムは、各デバイスについて直近に判定された動作状態を記録する中央データベース(たとえば、
図3に示すデータベース15)を含み得る。
【0022】
データベースシステム(たとえば、
図3に示すデータベース15)は、動作120において、1つ以上のデバイスの判定された状態を格納し得る。複数のデバイスの各々の判定された状態は、判定された状態が以前に格納された状態から変化したときにデータベースシステムに格納されてもよい。すなわち、開示される主題の実現例では、システムのデータベースには、各デバイスについて直近に検証された動作状態が格納されてもよい。ワーカーは、現在判定されているデバイスの動作状態がデータベースに記録された動作状態から変更していない限り、デバイスのステータスデータをデータベースに書込む可能性はない。
【0023】
いくつかの実現例では、各ワーカーは、複数ハッシュキーの1セクタを一度に処理し得る。ワーカーは、データベースからセクタに関するデータを読取り得るとともに、セクタ内の複数のデバイスに問合わせて、各デバイスの現在の動作状態を判定し得る。ワーカーは、判定されたいずれかの動作状態の変化をデータベースに書込み得る。各セクタは、ネットワークに対してすべてのデバイスのうち約1/N分を含み得る。Nの値は、データベース読取りの頻度(すなわち、データベースが受信するデータ検索の要求)を予め定められたレートに制限するように選択され得る。このレートは、データベースが要求されたデータを読取って提供し得る場合のレートであり得るとともに、予め定められた時間遅延量よりも長い遅延をもたらすように当該要求によって悪影響を受けないようなレートであり得る。
【0024】
データベースへの書込み動作の頻度(たとえば、データベースへのデータの書込み要求)は、ネットワークに結合されたデバイスの実際の状態変化の数に基づいていてもよい。開示される主題の実現例では、各ワーカーは、特定の時点でどのセクタを処理すべきかを判定し得る。具体的な例では、デバイスハッシュキーは64ビットの整数であってもよい。すなわち、デバイスハッシュキーの整数は、64マイナス1の累乗(すなわち、0~264-1)に対して0から2の間(0および2を含む)整数であり得る。
【0025】
デバイスハッシュキー番号を有するデバイスの範囲は、0からN-lの番号が付されたN個のセクタに分割され得る(ここで、j番目のセクタはハッシュキー(2**64)/N*j+min(j,(2**64)%N)から始まる)とともに、(2**64)/N+(j<(2**64)%N))ハッシュキーを含み得る。この数式では、**は演算子の塁乗であり、min(x,y)は2つの整数の最小値であり、%演算子は除算後の残余であり、/演算子は切り捨て整数除算であり、<演算子は未満であり、0または1になる。
【0026】
開示される主題の実現例では、最大セクタと最小セクタとの間の大きさの差は1であり得る。いくつかの実現例では、各デバイスについての動作状態を判定する所望の周波数は、時間の尺度であるPであり得る。システムは、Pごとに1回、各デバイスの動作状態を判定し得る。
【0027】
一例では、K個のワーカーは、0からK-1まで番号付けされ得る。任意の所与の時間tにおいて、ワーカー番号0はセクタ番号(t%(P*K))*N/(P*K)を処理し得る。演算子*は乗算である。この例では、他のワーカーは、それらのクロックを(P*i)だけ前進させるように調整し得ることを除いて、ワーカー番号0と同様に動作し得る。ここで、iはワーカー番号(0からK-1の間(0およびK-1を含む))である。これにより、ワーカーがデバイスキーハッシュの範囲にわたって均等に分散されることが確
実にされ得る。これにより、ワーカーに負荷をかけ過ぎないようにネットワークのデバイスの動作状態を判定するためにワーカー間の作業負荷が均等に分散され得る。
【0028】
開示される主題の実現例は、上述のように、心拍または集中型ポーリングを用い得る本システムに勝る利点を提供する。開示される主題のシステムは、障害および/または変化に対するレジリエンスを高め得る。ワーカーは、システム全体に悪影響を及ぼすことなく、ワーカー自体を故障させ(すなわち、デバイスのステータスをチェックすることができない)、ワーカー自体を一時停止させ(すなわち、デバイスのステータスのチェックを一時的に停止させる)、および/またはワーカー自体を再始動させることが可能となり得る。開示される主題の実現例では、ワーカーの障害は、1セットのデバイスに対する動作状態チェック期間を単に2倍にするだけであるかもしれず、これは、Pの値を小さくすることによって容易に軽減され得る。ハッシングは新しい作業負荷をすべてのワーカーにわたって均一に分散させ得るので、監視されるデバイスの数が増えても単一のワーカーに過負荷がかかる可能性は低くなり得る。同様に、多数のデバイスに影響を与える可能性のある広範な動作状態変化は、すべてのワーカーにわたって均等に分散され得る。
【0029】
Nに関する大きな素数(たとえば、101)を選択することにより、2個のワーカーが同時にデータベースから同じセクタを読取ること、および/または、或るデバイスについての動作状態変化をそのデバイスのためのデータベースに書込むこと、はなくなり得る。
【0030】
P、K、および/またはNについての値などのシステムパラメータは、システム全体を不安定にすることなく、および/またはクラッシュさせることなく、変更され得る(すなわち、システムは引き続き動作可能なままであり得る)。システムは、一度に1つのワーカーを再始動させてもよく、複数のワーカー間でシステムパラメータ同士を一時的に不一致にすることも可能であり得る。ワーカーは、データベース以外に、いずれの種類の集中型制御または共有状態にも依存しない可能性がある。ワーカーは、同期されたクロックを有し得る(たとえば、数秒よりも長くオフになることはない)。
【0031】
一例では、サーバ(たとえば、
図3に示すサーバ13および/またはデータベース15)は、クラウドベースおよび/またはサーバベースのゲーミングシステム(たとえば、
図3に示すリモートプラットフォーム17)のゲームレット(gamelet)のステータスを監
視するためにワーカーを生成、割当て、および/または配分してもよい。ゲームレットは、ネットワーク(たとえば、
図3に示すネットワーク7)に通信可能に結合されたユーザデバイス(たとえば、
図2および
図3に示されるデバイス10、11)上で実行される仮想マシンであってもよい。ゲームレット内で実行されるゲームは、グラフィックスドライバ、ゲームレットを制御するカーネル、通信インターフェイスなどの動作能力に負荷をかけ過ぎることなどによって、ゲームレットを不安定にする可能性がある。
図1Aおよび
図1Bに関連付けて上述した方法を用いて、サーバおよびワーカーは、ネットワークのデバイスによって実行されるすべてのゲームレットのステータスを監視してもよい。デバイスが追加されるかまたはネットワークから削除されるのに応じて、ワーカーの数を変更してもよく、これにより、ワーカー同士の間で監視活動のバランスを取り得る。ゲームレットを実行する1つ以上のデバイスにステータスの変化がある場合、その変化は、データベースに対する負荷を制限するためにサーバによってアクセス可能にされ得るおよび/または制御され得るデータベース(たとえば、
図3に示すデータベース15)に書込まれてもよい。この構成は、デバイスステータスを収集するサーバおよび/または個々のワーカーのいずれかに悪影響を及ぼすことなく、ゲーム環境のためのデバイス管理を提供し得る。
【0032】
ここに開示される主題の実施形態は、さまざまコンポーネントおよびネットワークアーキテクチャにおいて実現および使用され得る。
図2は、ここに開示される主題の実施形態を実現するのに適した例示的なコンピューティングデバイス10、11である。デバイス
10、11は、たとえば、デスクトップもしくはラップトップコンピュータ、または、スマートフォン、スマートウォッチ、スマートデバイス、タブレットなどのモバイルコンピューティングデバイス、サーバ、ネットワーキングハードウェア、モノのインターネット(Internet-of-Things)デバイスもしくはノード、および/または、遠隔でアクセスされて現在の状態について探索され得る他の任意のデバイスであり得る。
【0033】
デバイス10、11はバス21を含み得る。バス21は、中央プロセッサ24、ランダムアクセスメモリ(Random Access Memory:RAM)、読取り専用メモリ(Read Only Memory:ROM)、フラッシュRAMなどのメモリ27、ディスプレイスクリーンなどのユーザディスプレイ22、1つ以上のコントローラと、キーボード、マウス、タッチスクリーンなどの関連するユーザ入力デバイスとを含み得るユーザ入力インターフェイス26など、ハードドライブ、フラッシュストレージなどの固定ストレージ23、光ディスク、フラッシュドライブなどを制御および受信するように動作するリムーバブル媒体コンポーネント25、ならびに、好適なネットワーク接続を介して1つ以上のリモートデバイスと通信するように動作可能であるネットワークインターフェイス29などの、デバイス10、11の主要コンポーネントを相互接続するものである。
【0034】
バス21は、中央プロセッサ24と、上述のとおりRAM、ROM、および他のメモリを含み得る1つ以上のメモリコンポーネントとの間のデータ通信を可能にする。典型的には、RAMは、オペレーティングシステムおよびアプリケーションプログラムがロードされる主メモリである。ROMまたはフラッシュメモリコンポーネントは、中でも、周辺コンポーネントとの相互作用などの基本的なハードウェア動作を制御する基本入出力システム(Basic Input-Output system:BIOS)を含み得る。デバイス10、11に常駐す
るアプリケーションは、一般に、ハードディスクドライブ(たとえば、固定ストレージ23)、光学ドライブ、フロッピー(登録商標)ディスク、または他の記憶媒体などのコンピュータ可読媒体上に格納されるとともに当該コンピュータ可読媒体を介してアクセスされる。
【0035】
固定ストレージ23は、デバイス10、11と一体型であってもよく、または、別個のものであって他のインターフェイスを介してアクセスされてもよい。ネットワークインターフェイス29は、有線接続または無線接続を介して遠隔サーバに直接接続してもよい。ネットワークインターフェイス29は、デジタルセルラー電話、WiFi(登録商標)、Bluetooth(登録商標)、近距離場等を含む、当業者によって容易に理解されるであろう
任意の適切な技術およびプロトコルを用いて、このような接続を提供し得る。たとえば、ネットワークインターフェイス29は、以下でさらに詳細に説明されるように、コンピュータが1つ以上のローカルネットワーク、ワイドエリアネットワーク、または他の通信ネットワークを介して他のコンピュータと通信することを可能にし得る。
【0036】
他の多くのデバイスまたはコンポーネント(図示せず)が、同様の態様(たとえば、文書スキャナ、デジタルカメラなど)で接続されてもよい。逆に、本開示を実施するために、
図2に示されるコンポーネントの全てが存在する必要はない。これらのコンポーネントは、図示される方法とは異なる方法で相互接続可能である。
図2に示すようなコンピュータの動作は、当技術分野で容易に公知であり、本願では詳細には説明しない。本開示を実現するためのコードは、メモリ27、固定ストレージ23、リムーバブル媒体25のうちの1つ以上などのコンピュータ可読記憶媒体に、または遠隔ストレージ位置に格納することができる。
【0037】
図3は、開示される主題の実施形態に従った例示的なネットワーク構成を示す。ローカルコンピュータ、スマートフォン、タブレットコンピューティングデバイスなどの1つ以上のデバイス10、11は、1つ以上のネットワーク7を介して他のデバイスに接続され
得る。各デバイスは、上述のようなコンピューティングデバイスであり得る。ネットワークは、ローカルネットワーク、ワイドエリアネットワーク、インターネット、または他の任意の適切な通信ネットワークもしくは複数のネットワークであってもよく、有線ネットワークおよび/または無線ネットワークを含む任意の好適なプラットフォーム上で実現されてもよい。デバイスは、サーバ13および/またはデータベース15などの1つ以上のリモートデバイスと通信し得る。データベース15は、MySQL(TM)、PostgreSQL、Oracle(TM)、またはSpanner(TM)データベースなどであってよい。リモートデバイスはデバイス10、11によって直接アクセス可能であってもよく、または、1つ以上の他のデバイスが中間アクセスを提供してもよく、この場合、たとえば、サーバ13がデータベース15に格納されたリソースへのアクセスを提供する。デバイス10、11はまた、リモートプラットフォーム17にアクセスし得るか、または、クラウドコンピューティング構成およびサービスなどのリモートプラットフォーム17によって提供されるサービスにアクセスし得る。リモートプラットフォーム17は、1つ以上のサーバ13および/またはデータベース15を含み得る。
【0038】
より一般的には、本開示の主題のさまざまな実施形態は、コンピュータで実施されるプロセスおよびプロセスを実行するための装置を含んでもよく、またはコンピュータで実施されるプロセスおよびプロセスを実行するための装置として具現化されてもよい。また、実施形態は、フロッピー(登録商標)ディスク、CD-ROM、ハードドライブ、ユニバーサルシリアルバス(universal serial bus:USB)ドライブ、または他の任意の機械可読記憶媒体などの非一時的な媒体および/または有形媒体において具体化された命令を含むコンピュータプログラムコードを有するコンピュータプログラム製品の形態で具現化されてもよい。これによって、コンピュータプログラムコードがコンピュータにロードされ、コンピュータによって実行されると、コンピュータは、本開示の主題の実施形態を実施するための装置となる。また、実施形態は、記憶媒体に格納されていようとも、コンピュータによってロードおよび/または実行されていようとも、何らかの伝送媒体、例えば、電気配線または電気ケーブル、光ファイバ、または電磁波を介して伝送されていようとも、コンピュータプログラムコードの形態で具現化され得る。このため、コンピュータプログラムコードがコンピュータにロードされてコンピュータによって実行されると、当該コンピュータは、本開示の主題の実施形態を実施するための装置となる。汎用マイクロプロセッサ上で実装される場合、コンピュータプログラムコードセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。
【0039】
いくつかの構成では、コンピュータ可読記憶媒体に格納されたコンピュータ可読命令のセットは、汎用プロセッサによって実現され得るものであって、汎用プロセッサまたは汎用プロセッサを含む装置を、命令を実現または実施するように構成された専用装置に変換し得る。実施形態は、ハードウェアおよび/またはファームウェアで本開示の主題の実施形態に係る技術の全体または一部を具体化する汎用マイクロプロセッサおよび/または特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)などのプ
ロセッサを含み得るハードウェアを用いて実現されてもよい。プロセッサは、メモリ、たとえば、RAM、ROM、フラッシュメモリ、ハードディスク、または電子情報を格納することができる他の任意の装置などに結合されてもよい。メモリは、開示される主題の実施形態に係る技術を実行するために、プロセッサによって実行されるように適合された命令を格納し得る。
【0040】
説明を目的として、特定の実施形態を参照して上記の説明を行なった。しかしながら、上記の例示的な説明は、網羅的であることを意図しておらず、または本開示の主題の実施形態を開示した厳密な形態に限定することを意図していない。上記の教示を参照することで多くの修正および変形が可能である。実施形態は、開示される主題の実施形態の原理およびその実用的な用途を説明するために選択および説明されてきた。これにより、当業者
は、これらの実施形態と、意図された特定の用途に適し得るさまざまな修正を含むさまざまな実施形態とを利用することができる。