(57)【特許請求の範囲】
【請求項１】
分散データベースの負荷を平準化するための方法であって、
分散データベースの負荷を平準化するための装置によって、
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ個のサーバを高負荷サーバとして決定し、ランク下位ｎ個のサーバを低負荷サーバとして決定するステップであって、ｎは正の整数である、ステップと、
前記高負荷サーバおよび前記低負荷サーバを横断して動作を実行するステップとを含み、前記動作は、
最高から最低に向かって第ｉ位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて前記第ｉ位にランク付けされた高負荷サーバ上の前記それぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第ｉ位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて前記逆順で第ｉ位にランク付けされた低負荷サーバ上の前記それぞれのデータスライスをランク付けするステップであって、ｉは正の整数であり、ｉはｎ以下である、ステップと、
前記第ｉ位にランク付けられている高負荷サーバ上で最高負荷割合を有するデータスライスを第ｉ位ソースデータスライスとして決定し、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第ｉ位ターゲットデータスライスとして決定し、前記第ｉ位ターゲットデータスライスと前記第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、事前決定された負荷割合閾値以下になると決定したことに応じて、前記第ｉ位ソースデータスライスと前記第ｉ位ターゲットデータスライスとを交換するステップとを含む方法。
【請求項２】
前記第ｉ位にランク付けられている高負荷サーバ上で最高負荷割合を有するデータスライスを第ｉ位ソースデータスライスとして決定し、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第ｉ位ターゲットデータスライスとして決定することは、
前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定するステップと、
前記第ｉ位にランク付けられている高負荷サーバ上で第ｊ位のランク付け負荷割合を有するデータスライスを前記第ｉ位ソースデータスライスとして決定するステップであって、ｊは正の整数であり、ｊの初期値は１であり、ｊは前記第ｉ位にランク付けされた高負荷サーバ上のデータスライスの数以下である、ステップと、
前記第ｉ位ターゲットデータスライスと前記第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップと、
前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいと決定した場合、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの前記全体の負荷割合が前記事前決定された負荷割合閾値以下になるまで、前記第ｉ位にランク付けされた高負荷サーバ上で前記第ｊ位のランク付け負荷割合を有する前記データスライスの次のデータスライスを新たな第ｉ位ソースデータスライスとし、前記第ｉ位ターゲットデータスライスと前記新たな第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの前記全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップとを含む請求項１に記載の方法。
【請求項３】
前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定する前記ステップの前に、前記方法は、
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップと、
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値よりも大きいと決定した場合、前記第ｉ位にランク付けされた高負荷サーバ上のデータスライスを使用して交換動作を実行することを拒否するか、または
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値以下であると決定した場合、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定する前記ステップを実行するステップとをさらに含む請求項２に記載の方法。
【請求項４】
前記高負荷サーバおよび前記低負荷サーバを横断して前記動作を実行する前記ステップの後に、前記方法は、
現在の統計期間として次の統計期間に入り、前記現在の統計期間の間にすべての前記サーバの負荷をカウントするステップと、
最高から最低に向かって前記それぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、前記現在の統計期間内でランク上位ｎ個のサーバを高負荷サーバとして決定するステップと、
前記現在の統計期間内の前記ｎ個の高負荷サーバが、前の統計期間における前記ｎ個の高負荷サーバと同じであるかどうかを決定するステップと、
前記現在の統計期間内の前記ｎ個の高負荷サーバが、前の統計期間における前記ｎ個の高負荷サーバと同じであると決定した場合、前記事前決定された負荷割合閾値を増やし、前記現在の統計期間内のすべての前記高負荷サーバを再平準化する、すなわち、高負荷サーバおよび低負荷サーバを再び横断し、対応する動作を実行するステップとをさらに含む請求項２または３に記載の方法。
【請求項５】
最高から最低に向かってそれぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ個のサーバを高負荷サーバとして決定し、ランク下位ｎ個のサーバを低負荷サーバとして決定する前記ステップは、
最高から最低に向かって前記それぞれのサーバのＣＰＵ負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ１個のサーバを高負荷サーバの第１のグループとして決定し、ランク下位ｎ１個のサーバを低負荷サーバの第１のグループとして決定するステップであって、ｎ１はｎよりも小さい正の整数である、ステップと、
高負荷サーバの前記第１のグループおよび低負荷サーバの前記第１のグループを前記それぞれのサーバから除外し、最高から最低に向かって前記ランク付けで残っているサーバのトラフィック負荷に応じて残っているサーバをランク付けし、ランク上位ｎ２個のサーバを高負荷サーバの第２のグループとして決定し、ランク下位ｎ２個のサーバを低負荷サーバの第２のグループとして決定するステップであって、ｎ２はｎよりも小さい正の整数であり、ｎ１＋ｎ２＝ｎである、ステップとを含む請求項１から３のいずれか一項に記載の方法。
【請求項６】
前記第ｉ位ソースデータスライスと前記第ｉ位ターゲットデータスライスとを交換する前記ステップは、
前記分散データベースシステムからアイドル状態のサーバの情報を取得するステップと、
前記第ｉ位にランク付けされた高負荷サーバから前記第ｉ位ソースデータスライスを前記アイドル状態のサーバに転送するステップと、
前記逆順で第ｉ位にランク付けされた低負荷サーバから前記第ｉ位ターゲットデータスライスを前記第ｉ位にランク付けされた高負荷サーバに転送するステップと、
前記アイドル状態のサーバに転送された前記第ｉ位ソースデータスライスを前記逆順で第ｉ位にランク付けされた低負荷サーバに転送するステップとを含む請求項１から３のいずれか一項に記載の方法。
【請求項７】
プロセッサとメモリとを備える、分散データベースの負荷を平準化するための装置であって、前記メモリは前記プロセッサによって実行可能な命令を記憶し、前記命令は前記プロセッサに、
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ個のサーバを高負荷サーバとして決定し、ランク下位ｎ個のサーバを低負荷サーバとして決定するステップであって、ｎは正の整数である、ステップと、
前記高負荷サーバおよび前記低負荷サーバを横断して動作を実行するステップとを実行し、前記動作は、
最高から最低に向かって第ｉ位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて前記第ｉ位にランク付けされた高負荷サーバ上の前記それぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第ｉ位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて前記逆順で第ｉ位にランク付けされた低負荷サーバ上の前記それぞれのデータスライスをランク付けするステップであって、ｉは正の整数であり、ｉはｎ以下である、ステップと、
前記第ｉ位にランク付けられている高負荷サーバ上で最高負荷割合を有するデータスライスを第ｉ位ソースデータスライスとして決定し、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第ｉ位ターゲットデータスライスとして決定し、前記第ｉ位ターゲットデータスライスと前記第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、事前決定された負荷割合閾値以下になると決定したことに応じて、前記第ｉ位ソースデータスライスと前記第ｉ位ターゲットデータスライスとを交換するステップとを実行させる装置。
【請求項８】
前記第ｉ位にランク付けられている高負荷サーバ上で最高負荷割合を有するデータスライスを第ｉ位ソースデータスライスとして決定し、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第ｉ位ターゲットデータスライスとして決定する前記ステップは、
前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定するステップと、
前記第ｉ位にランク付けられている高負荷サーバ上で第ｊ位のランク付け負荷割合を有するデータスライスを前記第ｉ位ソースデータスライスとして決定するステップであって、ｊは正の整数であり、ｊの初期値は１であり、ｊは前記第ｉ位にランク付けされた高負荷サーバ上のデータスライスの数以下である、ステップと、
前記第ｉ位ターゲットデータスライスと前記第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップと、
前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいと決定した場合、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの前記全体の負荷割合が前記事前決定された負荷割合閾値以下になるまで、前記第ｉ位にランク付けされた高負荷サーバ上で前記第ｊ位のランク付け負荷割合を有する前記データスライスの次のデータスライスを新たな第ｉ位ソースデータスライスとし、前記第ｉ位ターゲットデータスライスと前記新たな第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの前記全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップとを含む請求項７に記載の装置。
【請求項９】
前記命令は前記プロセッサに、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定する前記ステップの前に、
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップと、
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値よりも大きいと決定した場合、前記第ｉ位にランク付けされた高負荷サーバ上のデータスライスを使用して交換動作を実行することを拒否するか、または
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値以下であると決定した場合、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定する前記ステップを実行するステップとを実行させる請求項８に記載の装置。
【請求項１０】
前記命令は前記プロセッサに、前記高負荷サーバおよび前記低負荷サーバを横断して動作を実行する前記ステップの後に、
現在の統計期間として次の統計期間に入り、前記現在の統計期間の間にすべての前記サーバの負荷をカウントするステップと、
最高から最低に向かって前記それぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、前記現在の統計期間内でランク上位ｎ個のサーバを高負荷サーバとして決定するステップと、
前記現在の統計期間内の前記ｎ個の高負荷サーバが、前の統計期間における前記ｎ個の高負荷サーバと同じであるかどうかを決定するステップと、
前記現在の統計期間内の前記ｎ個の高負荷サーバが、前の統計期間における前記ｎ個の高負荷サーバと同じであると決定した場合、前記事前決定された負荷割合閾値を増やし、前記現在の統計期間内のすべての前記高負荷サーバを再平準化する、すなわち、高負荷サーバおよび低負荷サーバを再び横断し、対応する動作を実行するステップとを実行させる請求項８または９に記載の装置。
【請求項１１】
最高から最低に向かってそれぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ個のサーバを高負荷サーバとして決定し、ランク下位ｎ個のサーバを低負荷サーバとして決定する前記ステップは、
最高から最低に向かって前記それぞれのサーバのＣＰＵ負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ１個のサーバを高負荷サーバの第１のグループとして決定し、ランク下位ｎ１個のサーバを低負荷サーバの第１のグループとして決定するステップであって、ｎ１はｎよりも小さい正の整数である、ステップと、
高負荷サーバの前記第１のグループおよび低負荷サーバの前記第１のグループを前記それぞれのサーバから除外し、最高から最低に向かって前記ランク付けで残っているサーバのトラフィック負荷に応じて残っているサーバをランク付けし、ランク上位ｎ２個のサーバを高負荷サーバの第２のグループとして決定し、ランク下位ｎ２個のサーバを低負荷サーバの第２のグループとして決定するステップであって、ｎ２はｎよりも小さい正の整数であり、ｎ１＋ｎ２＝ｎである、ステップとを含む請求項７から９のいずれか一項に記載の装置。
【請求項１２】
前記第ｉ位ソースデータスライスと前記第ｉ位ターゲットデータスライスとを交換する前記ステップは、
前記分散データベースシステムからアイドル状態のサーバの情報を取得するステップと、
前記第ｉ位にランク付けされた高負荷サーバから前記第ｉ位ソースデータスライスを前記アイドル状態のサーバに転送するステップと、
前記逆順で第ｉ位にランク付けされた低負荷サーバから前記第ｉ位ターゲットデータスライスを前記第ｉ位にランク付けされた高負荷サーバに転送するステップと、
前記アイドル状態のサーバに転送された前記第ｉ位ソースデータスライスを前記逆順で第ｉ位にランク付けされた低負荷サーバに転送するステップとを含む請求項７から９のいずれか一項に記載の装置。
【請求項１３】
コンピュータ命令を記憶する非一時的記憶媒体であって、前記コンピュータ命令はコンピュータに、
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ個のサーバを高負荷サーバとして決定し、ランク下位ｎ個のサーバを低負荷サーバとして決定するステップであって、ｎは正の整数である、ステップと、
前記高負荷サーバおよび前記低負荷サーバを横断して動作を実行するステップとを実行するようにプロセッサによって実行可能であり、前記動作は、
最高から最低に向かって第ｉ位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて前記第ｉ位にランク付けされた高負荷サーバ上の前記それぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第ｉ位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて前記逆順で第ｉ位にランク付けされた低負荷サーバ上の前記それぞれのデータスライスをランク付けするステップであって、ｉは正の整数であり、ｉはｎ以下である、ステップと、
前記第ｉ位にランク付けられている高負荷サーバ上で最高負荷割合を有するデータスライスを第ｉ位ソースデータスライスとして決定し、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第ｉ位ターゲットデータスライスとして決定し、前記第ｉ位ターゲットデータスライスと前記第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、事前決定された負荷割合閾値以下になると決定したことに応じて、前記第ｉ位ソースデータスライスと前記第ｉ位ターゲットデータスライスとを交換するステップとを実行させる非一時的記憶媒体。
【請求項１４】
前記第ｉ位にランク付けられている高負荷サーバ上で最高負荷割合を有するデータスライスを第ｉ位ソースデータスライスとして決定し、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第ｉ位ターゲットデータスライスとして決定することは、
前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定するステップと、
前記第ｉ位にランク付けられている高負荷サーバ上で第ｊ位のランク付け負荷割合を有するデータスライスを前記第ｉ位ソースデータスライスとして決定するステップであって、ｊは正の整数であり、ｊの初期値は１であり、ｊは前記第ｉ位にランク付けされた高負荷サーバ上のデータスライスの数以下である、ステップと、
前記第ｉ位ターゲットデータスライスと前記第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップと、
前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいと決定した場合、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの前記全体の負荷割合が前記事前決定された負荷割合閾値以下になるまで、前記第ｉ位にランク付けされた高負荷サーバ上で前記第ｊ位のランク付け負荷割合を有する前記データスライスの次のデータスライスを新たな第ｉ位ソースデータスライスとし、前記第ｉ位ターゲットデータスライスと前記新たな第ｉ位ソースデータスライスとを交換すると仮定し、当該交換をした場合のサーバの全体の負荷割合を計算し、前記それぞれのサーバの中で前記逆順で第ｉ位にランク付けされた低負荷サーバの前記全体の負荷割合が、前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップとを含む請求項１３に記載の非一時的記憶媒体。
【請求項１５】
前記コンピュータ命令はコンピュータに、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定する前記ステップの前に、
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値よりも大きいかどうかを決定するステップと、
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値よりも大きいと決定した場合、前記第ｉ位にランク付けされた高負荷サーバ上のデータスライスを使用して交換動作を実行することを拒否するか、または
前記第ｉ位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が前記事前決定された負荷割合閾値以下であると決定した場合、前記逆順で第ｉ位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを前記第ｉ位ターゲットデータスライスとして決定する前記ステップを実行するステップとを実行させる請求項１４に記載の非一時的記憶媒体。
【請求項１６】
前記コンピュータ命令はコンピュータに、前記高負荷サーバおよび前記低負荷サーバを横断して動作を実行する前記ステップの後に、
現在の統計期間として次の統計期間に入り、前記現在の統計期間の間にすべての前記サーバの負荷をカウントするステップと、
最高から最低に向かって前記それぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、前記現在の統計期間内でランク上位ｎ個のサーバを高負荷サーバとして決定するステップと、
前記現在の統計期間内の前記ｎ個の高負荷サーバが、前の統計期間における前記ｎ個の高負荷サーバと同じであるかどうかを決定するステップと、
前記現在の統計期間内の前記ｎ個の高負荷サーバが、前の統計期間における前記ｎ個の高負荷サーバと同じであると決定した場合、前記事前決定された負荷割合閾値を増やし、前記現在の統計期間内のすべての前記高負荷サーバを再平準化する、すなわち、高負荷サーバおよび低負荷サーバを再び横断し、対応する動作を実行するステップとを実行させる請求項１４または１５に記載の非一時的記憶媒体。
【請求項１７】
最高から最低に向かってそれぞれのサーバの負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ個のサーバを高負荷サーバとして決定し、ランク下位ｎ個のサーバを低負荷サーバとして決定する前記ステップは、
最高から最低に向かって前記それぞれのサーバのＣＰＵ負荷に応じて前記それぞれのサーバをランク付けし、ランク上位ｎ１個のサーバを高負荷サーバの第１のグループとして決定し、ランク下位ｎ１個のサーバを低負荷サーバの第１のグループとして決定するステップであって、ｎ１はｎよりも小さい正の整数である、ステップと、
高負荷サーバの前記第１のグループおよび低負荷サーバの前記第１のグループを前記それぞれのサーバから除外し、最高から最低に向かって前記ランク付けで残っているサーバのトラフィック負荷に応じて残っているサーバをランク付けし、ランク上位ｎ２個のサーバを高負荷サーバの第２のグループとして決定し、ランク下位ｎ２個のサーバを低負荷サーバの第２のグループとして決定するステップであって、ｎ２はｎよりも小さい正の整数であり、ｎ１＋ｎ２＝ｎである、ステップとを含む請求項１３から１５のいずれか一項に記載の非一時的記憶媒体。
【請求項１８】
前記第ｉ位ソースデータスライスと前記第ｉ位ターゲットデータスライスとを交換する前記ステップは、
前記分散データベースシステムからアイドル状態のサーバの情報を取得するステップと、
前記第ｉ位にランク付けされた高負荷サーバから前記第ｉ位ソースデータスライスを前記アイドル状態のサーバに転送するステップと、
前記逆順で第ｉ位にランク付けされた低負荷サーバから前記第ｉ位ターゲットデータスライスを前記第ｉ位にランク付けされた高負荷サーバに転送するステップと、
前記アイドル状態のサーバに転送された前記第ｉ位ソースデータスライスを前記逆順で第ｉ位にランク付けされた低負荷サーバに転送するステップとを含む請求項１３から１５のいずれか一項に記載の非一時的記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、2015年7月29日に出願した、発明の名称を「分散データベースの負荷を平準化するための方法および装置」とする中国特許出願第201510456585.2号の優先権の利益を主張するものであり、その開示は、参照によりその全体が本明細書に組み込まれる。
【０００２】
本開示は、インターネット技術に関し、特に、分散データベースの負荷を平準化するための方法および装置に関する。
【背景技術】
【０００３】
近年、データ量の急速な増大に伴って、分散データベース技術も急速に発展してきた。分散データベース技術は、元の集中データベース内のデータを多数のデータスライスに分割し、それらを複数の独立したデータストレージノード上に分散して記憶し、物理的に分散された複数のデータストレージユニットを接続して論理的に統一されたデータベースを形成する。分散データベース技術では、ストレージ負荷を共有するために複数のサーバが使用されるスケーラブルなシステムアーキテクチャを使用しており、これは、システムの信頼性、可用性、およびアクセス効率を改善するだけでなく、拡張もしやすい。データスライスのバランスの取れた分散を維持するために、分散データベースシステム全体にわたるサーバ上のデータスライスの数がマイグレーション閾値に達したときに、最大数のデータスライスを記憶しているサーバ上のデータスライスをより少ない数のデータスライスを記憶しているサーバに移動する必要がある。たとえば、データセットがサーバA上に100個のデータスライスを、サーバB上に50個のデータスライスを有している場合、サーバA上のデータスライスをサーバBに、2つのサーバ上のデータセットのデータスライスの数が近い値になるか、または等しくなるまで移動する必要がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の実施形態は、分散データベースの負荷を平準化して分散データベースシステム全体の負荷を効果的に低減するための方法および装置を実現する。
【０００５】
本開示の実施形態は、分散データベースの負荷を平準化するための方法を提供し、この方法は、
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けし、ランク上位n個のサーバを高負荷サーバとして決定し、ランク下位n個のサーバを低負荷サーバとして決定するステップであって、nは正の整数である、ステップと、
高負荷サーバおよび低負荷サーバを横断して動作を実行するステップとを含み、この動作は、
最高から最低に向かって第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスをランク付けするステップであって、iは正の整数であり、iはn以下である、ステップと、
第i位にランク付けられている高負荷サーバ上で高負荷割合を有するデータスライスを第i位ソースデータスライスとして決定し、逆順で第i位にランク付けられている低負荷サーバ上で低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定し、第i位ソースデータスライスと第i位ターゲットデータスライスとを交換するステップとを含む。
【０００６】
本開示の実施形態は、プロセッサとメモリとを備える、分散データベースの負荷を平準化するための装置を実現するものであり、このメモリはプロセッサによって実行可能な命令を記憶し、これらの命令は実行されると、
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けし、ランク上位n個のサーバを高負荷サーバとして決定し、ランク下位n個のサーバを低負荷サーバとして決定するステップであって、nは正の整数である、ステップと、
高負荷サーバおよび低負荷サーバを横断して動作を実行するステップとを実行し、前記動作は、
最高から最低に向かって第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスをランク付けするステップであって、iは正の整数であり、iはn以下である、ステップと、
第i位にランク付けられている高負荷サーバ上で高負荷割合を有するデータスライスを第i位ソースデータスライスとして決定し、逆順で第i位にランク付けられている低負荷サーバ上で低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定し、第i位ソースデータスライスと第i位ターゲットデータスライスとを交換するステップとを含む。
【０００７】
本開示の実施形態は、コンピュータ命令を記憶する非一時的記憶媒体を実現し、コンピュータ命令は、
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けし、ランク上位n個のサーバを高負荷サーバとして決定し、ランク下位n個のサーバを低負荷サーバとして決定するステップであって、nは正の整数である、ステップと、
高負荷サーバおよび低負荷サーバを横断して動作を実行するステップとを実行するようにプロセッサによって実行可能であり、前記動作は、
最高から最低に向かって第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスをランク付けするステップであって、iは正の整数であり、iはn以下である、ステップと、
第i位にランク付けられている高負荷サーバ上で高負荷割合を有するデータスライスを第i位ソースデータスライスとして決定し、逆順で第i位にランク付けられている低負荷サーバ上で低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定し、第i位ソースデータスライスと第i位ターゲットデータスライスとを交換するステップとを含む。
【０００８】
本開示の実施形態による分散データベースシステムは、サーバの負荷に応じてサーバをランク付けし、高負荷サーバおよび低負荷サーバをそれぞれフィルタ処理で取り除き、高負荷サーバ上で高負荷割合を有するデータスライスと低負荷サーバ上で低負荷割合を有するデータスライスとを交換し、それによって、一方では、高負荷サーバの負荷を効果的に低減し、他方では、低負荷サーバの負荷圧力の一部を低減し、低負荷サーバ上のデータスライスの一部が交換で出されたせいで新たに交換で入ったデータスライスに対する負荷空間の一部をスペアとして取っておき、それにより、高負荷サーバ上のデータスライスが低負荷サーバにおいて交換されたときに、これにより低負荷サーバの負荷が大きくなりすぎ得る状況を回避し、分散データベースシステム全体の負荷を効果的に低減する。
【図面の簡単な説明】
【０００９】
【図１】分散データベースの負荷を平準化するための装置が本開示の実施形態により配置されるシステム全体の図である。
【図２】本開示による分散データベースの負荷を平準化するための方法の第1の実施形態のフローチャートである。
【図３】本開示による分散データベースの負荷を平準化するための方法の第2の実施形態のフローチャートである。
【図４】本開示による分散データベースの負荷を平準化するための方法の第3の実施形態のフローチャートである。
【図５】本開示による分散データベースの負荷を平準化するための方法の第4の実施形態のフローチャートである。
【図６】本開示による分散データベースの負荷を平準化するための方法の第5の実施形態のフローチャートである。
【図７】本開示による分散データベースの負荷を平準化するための方法の第6の実施形態のフローチャートである。
【図８】本開示による分散データベースの負荷を平準化するための装置のモジュールの第1の実施形態の概略図である。
【図９】本開示による分散データベースの負荷を平準化するための装置のモジュールの第2の実施形態の概略図である。
【発明を実施するための形態】
【００１０】
本開示の目的の達成、特性、および利点は、実施形態および添付図面を参照しつつ詳細に説明される。
【００１１】
本明細書で説明されている詳細な実施形態は、本開示を単に例示しているだけであり、本開示を限定することを意図されていないことを理解されたい。
【００１２】
データスライスの分散のバランスを取るための従来の方法は、データスライスの容量のみを考慮しているが、データスライスによって占有される負荷を考慮していない。しかしながら、移動されるべきデータスライスによって占有される負荷が高すぎる場合、データスライスが別のサーバに移動されたときに、これにより他のサーバの負荷が高くなりすぎ、分散データベースシステムの全体的効率に影響を及ぼし得る。
【００１３】
図1を参照すると、図1は、分散データベースの負荷を平準化するための装置が本開示の実施形態により配置されるシステム全体の図である。システムは、CPUなどのプロセッサ101、ネットワークインターフェース104、ユーザインターフェース103、メモリ105、および通信バス102を備え得る。通信バス102は、これらの構成要素の間で接続および通信を実行するように構成される。ユーザインターフェース103は、ディスプレイ、キーボード、標準有線インターフェース、および標準ワイヤレスインターフェースを含み得る。ネットワークインターフェース104は、標準有線インターフェースおよび標準ワイヤレスインターフェース(たとえば、Wi-Fiインターフェース)を含み得る。メモリ105は、高速ランダムアクセスメモリ(RAM)であり得るか、または磁気ディスクストレージなどの、不揮発性メモリまたは非一時的メモリであってもよい。メモリ105は、上で説明されているプロセッサ101からリモートの場所に配置されているストレージデバイスであってもよい。コンピュータ記憶媒体として、メモリ105は、オペレーティングシステム、ネットワーク通信モジュール、ユーザインターフェースモジュール、および分散データベースの負荷を平準化するためのプログラムを備え得る。
【００１４】
分散データベースの負荷を平準化するための装置が、図1に示されているように配置されるシステムでは、ネットワークインターフェース104は、サーバまたは端末に接続してサーバまたは端末とのデータ通信を実行するように主に構成され、ユーザインターフェース103は、ユーザ命令を受け取り、ユーザと対話的にやり取りするように主に構成され、プロセッサ101は、メモリ105に記憶されている分散データベースの負荷を平準化するためのプログラムを呼び出して動作を実行することが可能であり、この動作は、
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けし、ランク上位n個のサーバを高負荷サーバとして決定し、ランク下位n個のサーバを低負荷サーバとして決定するステップであって、nは正の整数である、ステップと、
高負荷サーバおよび低負荷サーバを横断して動作を実行するステップとを含み、この動作は、
最高から最低に向かって第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスをランク付けするステップであって、iは正の整数であり、iはn以下である、ステップと、
第i位にランク付けられている高負荷サーバ上で高負荷割合を有するデータスライスを第i位ソースデータスライスとして決定し、逆順で第i位にランク付けられている低負荷サーバ上で低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定し、第i位ソースデータスライスと第i位ターゲットデータスライスとを交換するステップとを含む。
【００１５】
一実施形態において、プロセッサ101は、メモリ105に記憶されている分散データベースの負荷を平準化するためのプログラムを呼び出して動作を実行し、この動作は、
逆順で第i位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定するステップと、
第i位にランク付けられている高負荷サーバ上で第j位のランク付け負荷割合を有するデータスライスを第i位ソースデータスライスとして決定するステップであって、jは正の整数であり、jの初期値は1であり、jは第i位にランク付けされた高負荷サーバ上のデータスライスの数以下である、ステップと、
それぞれのサーバの中で逆順で第i位にランク付けされた低負荷サーバの全体の負荷割合が、第i位ターゲットデータスライスおよび第i位ソースデータスライスが交換された後に事前決定された負荷割合閾値よりも大きいかどうかを事前決定するステップと、
もしそうであれば、第i位にランク付けされた高負荷サーバ上で第j位のランク付け負荷割合を有するデータスライスの次のデータスライスを使用して第i位ソースデータスライスを更新し、それぞれのサーバの中で逆順で第i位にランク付けされた低負荷サーバの全体の負荷割合が、第i位ターゲットデータスライスおよび更新された第i位ソースデータスライスが交換された後に、逆順で第i位にランク付けされた低負荷サーバの全体の負荷割合が事前決定された負荷割合閾値以下になるまで、事前決定された負荷割合閾値よりも大きいかどうかを事前決定するステップとを含む。
【００１６】
一実施形態において、プロセッサ101は、メモリ105に記憶されている分散データベースの負荷を平準化するためのプログラムを呼び出して、次の動作、
第i位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が事前決定された負荷割合閾値よりも大きいかどうかを決定するステップと、
もしそうであれば、第i位にランク付けされた高負荷サーバ上のデータスライスを使用して交換動作を実行することを拒否するか、または
もしそうでなければ、逆順で第i位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定するステップを実行するステップとをさらに実行する。
【００１７】
一実施形態において、プロセッサ101は、メモリ105に記憶されている分散データベースの負荷を平準化するためのプログラムを呼び出して、次の動作、
現在の統計期間として次の統計期間に入り、現在の統計期間の間にすべてのサーバの負荷をカウントするステップと、
最高から最低に向かってそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けし、現在の統計期間内でランク上位n個のサーバを高負荷サーバとして決定するステップと、
現在の統計期間内のn個の高負荷サーバが、前の統計期間におけるn個の高負荷サーバと同じであるかどうかを決定するステップと、
もしそうであれば、事前決定された負荷割合閾値を増やし、現在の統計期間内のすべての高負荷サーバを再平準化する、すなわち、高負荷サーバおよび低負荷サーバを再び横断し、対応する動作を実行するステップとをさらに実行する。
【００１８】
一実施形態において、プロセッサ101は、メモリ105に記憶されている分散データベースの負荷を平準化するためのプログラムを呼び出して、次の動作、
最高から最低に向かってそれぞれのサーバのCPU負荷に応じてそれぞれのサーバをランク付けし、ランク上位n1個のサーバを高負荷サーバの第1のグループとして決定し、ランク下位n1個のサーバを低負荷サーバの第1のグループとして決定するステップであって、n1はnよりも小さい正の整数である、ステップと、
高負荷サーバの第1のグループおよび低負荷サーバの第1のグループをそれぞれのサーバから除外し、最高から最低に向かってランク付けで残っているサーバのトラフィック負荷に応じて残っているサーバをランク付けし、ランク上位n2個のサーバを高負荷サーバの第2のグループとして決定し、ランク下位n2個のサーバを低負荷サーバの第2のグループとして決定するステップであって、n2はnよりも小さい正の整数であり、n1+n2=nである、ステップとをさらに実行する。
【００１９】
一実施形態において、プロセッサ101は、メモリ105に記憶されている分散データベースの負荷を平準化するためのプログラムコードを呼び出して、次の動作、
分散データシステムからアイドル状態のサーバの情報を取得するステップと、
第i位にランク付けされた高負荷サーバから第i位ソースデータスライスをアイドル状態のサーバに転送するステップと、
逆順で第i位にランク付けされた低負荷サーバから第i位ターゲットデータスライスを第i位にランク付けされた高負荷サーバに転送するステップと、
アイドル状態のサーバに転送された第i位ソースデータスライスを逆順で第i位にランク付けされた低負荷サーバに転送するステップとを実行する。
【００２０】
図1において説明されているように装置が配置されている分散データベースおよび分散データベースシステムの負荷を平準化するための装置は、サーバの負荷に応じてサーバをランク付けし、高負荷サーバおよび低負荷サーバをそれぞれフィルタ処理で取り除き、高負荷サーバ上で高負荷割合を有するデータスライスと低負荷サーバ上で低負荷割合を有するデータスライスとを交換し、それによって、一方では、高負荷サーバの負荷を効果的に低減し、他方では、低負荷サーバの負荷圧力の一部を低減し、低負荷サーバ上のデータスライスの一部が交換で出されたせいで新たに交換で入ったデータスライスに対する負荷空間の一部をスペアとして取っておき、それにより、高負荷サーバ上のデータスライスが低負荷サーバにおいて交換されたときに、これにより低負荷サーバの負荷が大きくなりすぎ得る状況を回避し、分散データベースシステム全体の負荷を効果的に低減する。
【００２１】
図2に示されているように、図2は、本開示による分散データベースの負荷を平準化するための方法の第1の実施形態のフローチャートである。本発明の実施形態において言及されている分散データベースの負荷を平準化するための方法は、以下のステップを含む。
【００２２】
ステップS10において、分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合が、統計期間中にカウントされる。
【００２３】
本発明の実施形態の分散データベースシステムは、複数の共有サーバを備え、各サーバは、複数のデータスライスをロードされる。各サーバ上に、監視および報告用プログラムが予め配備され、これにより、データ要求の件数およびデータスライスがアクセスされたときに占有されているトラフィックの量などの情報を定期的間隔で分散データベースシステムの統計データベースに報告する。一方で、システムは、ウェブマスターサーバから現在の統計期間中にそれぞれのサーバの負荷、たとえば、CPU負荷およびトラフィック負荷も取得し得る。現在の統計期間内に報告されるデータ要求の件数および特定のデータスライスのアクセスのトラフィックの量およびデータスライスが配置されているサーバの負荷などの情報に従って、システムは、サーバの負荷におけるデータスライスの負荷割合、すなわち、サーバがサーバの全負荷においてデータスライスのアクセス要求を処理するときに引き起こされる負荷の割合を取得する。統計期間は、毎日24時間、またはそれ以上であるものとしてよい。24時間を例に取ると、監視および報告用プログラムは、5分おきにデータを報告するものとしてよく、次いで、24時間内にデータスライスに対して288件の報告情報がある。統計を出しやすくするために、288件の報告情報は、長い報告情報連鎖にマージされてよく、各データスライスは、1つの報告情報連鎖に対応する。一方で、システムは、毎日決まった時間に、たとえば、毎日1:00AMにウェブマスターサーバからそれぞれのサーバの負荷を取得し得る。
【００２４】
ステップS20において、それぞれのサーバは、最高から最低に向かってそれぞれのサーバの負荷に応じてランク付けされ、ランク上位n個のサーバは、高負荷サーバとして決定され、ランク下位n個のサーバは、低負荷サーバとして決定され、nは正の整数である。
【００２５】
負荷平準化を達成するために、本発明の実施形態では、高負荷サーバ上のデータスライスと低負荷サーバ上のデータスライスとを交換する。サーバは、最高から最低に向かってカウントされたそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けするものとしてよく、最高にランク付けされたサーバは最高負荷を有し、最低にランク付けされたサーバは最低負荷を有する。次いで、上位n個のサーバは、高負荷サーバとしてみなされ、下位n個のサーバは、低負荷サーバとしてみなされる。負荷平準化動作は、サーバの2つのグループ上のデータスライスを交換することである。
【００２６】
ステップS30において、第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスは、最高から最低に向かって第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じてランク付けされ、逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスは、最高から最低に向かって逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じてランク付けされ、iは正の整数であり、iはn以下である。
【００２７】
高負荷サーバおよび低負荷サーバは、ペアとして予め1つのグループにまとめられるものとしてよい。本発明の実施形態において、それぞれの高負荷サーバは、最高から最低に向かってそれぞれの高負荷サーバの負荷に応じてランク付けされるものとしてよく、それぞれの低負荷サーバも、最高から最低に向かってそれぞれの低負荷サーバの負荷に応じてランク付けされるものとしてよい。次いで、高負荷サーバのキューに入っている第i位にランク付けされた高負荷サーバおよび低負荷サーバのキューに入っている逆順で第i位にランク付けされた低負荷サーバは、ペアとして1つのグループにまとめられてよく、たとえば、最大の負荷を有する高負荷サーバと最低の負荷を有する低負荷サーバとをペアリングし、2番目に大きい負荷を有する高負荷サーバと2番目に低い負荷を有する低負荷サーバとをペアリングし、というように続くものとしてよい。または、高負荷サーバのキューに入っている第i位にランク付けされた高負荷サーバおよび低負荷サーバのキューに入っている第i位にランク付けされた低負荷サーバ、または高負荷サーバおよび低負荷サーバは、ランダムにペアリングされる。ペアリングされた高負荷サーバおよび低負荷サーバの各グループについて、サーバ上のそれぞれのデータスライスは、最高から最低に向かってそれぞれのデータスライスの負荷割合に応じてランク付けされる。
【００２８】
ステップS40において、第i位にランク付けられている高負荷サーバ上で高負荷割合を有するデータスライスは、第i位ソースデータスライスとして決定され、逆順で第i位にランク付けられている低負荷サーバ上で低負荷割合を有するデータスライスは、第i位ターゲットデータスライスとして決定される。
【００２９】
ステップS50において、第i位ソースデータスライスおよび第i位ターゲットデータスライスは、交換される。
【００３０】
高負荷サーバの負荷を低減するために、高負荷サーバ上のデータスライスが低負荷サーバに移動されるものとしてよく、低負荷サーバに負荷をかけすぎることによって引き起こされる低負荷サーバの過剰な負荷増大を防ぐために、本発明の実施形態では、高負荷サーバ上で比較的高い負荷を有する1つまたは複数のデータスライスのみを負荷サーバに移動し、その一方で、低負荷サーバ上で比較的低い負荷を有するデータスライスを高負荷サーバに移動するものとしてよく、2つのサーバからそれぞれ移動されたスライスの数は等しく、これにより、高負荷サーバと低負荷サーバとの間のデータスライスの交換を実現する。このようにして、高負荷サーバの負荷は、効率的に低減され、その一方で、低負荷サーバ上のデータスライスの一部は交換で出されるので、低負荷サーバの負荷圧力の一部は、低減され、新たに交換で入ったデータスライスに対する負荷空間の一部は、スペアに回され、それにより、高負荷サーバ上のデータスライスが低負荷サーバで交換で入り、そのため負荷サーバの負荷が大きくなりすぎ得る状況を効率的に回避し得る。
【００３１】
ステップS60において、すべての高負荷サーバが平準化されるかどうか、すなわち、高負荷サーバおよび低負荷サーバがすべて横断されるかどうかが決定され(たとえば、iがnに等しいかどうかを決定する)、もしそうであれば、プロセスはステップS61に進み、さもなければ、i+1で、プロセスはステップS30に戻る。
【００３２】
ステップ61において、平準化が完了したと決定される、すなわち、高負荷サーバおよび低負荷サーバが横断されたと決定される。
【００３３】
1つのグループにペアリングされた高負荷サーバおよび低負荷サーバ上のソースデータスライスおよびターゲットデータスライスが交換された後、プロセスは、ペアリングされた高負荷サーバおよび低負荷サーバの次のグループに進み、ソースデータスライスとターゲットデータスライスとを交換し、平準化プロセスは、ペアリングされた高負荷サーバおよび低負荷サーバのすべてのグループ上のソースデータスライスおよびターゲットデータスライスが交換されるまで続く。
【００３４】
本発明の実施形態の分散データベースシステムは、サーバの負荷に応じてサーバをランク付けし、高負荷サーバおよび低負荷サーバをそれぞれフィルタ処理で取り除き、高負荷サーバ上で高負荷割合を有するデータスライスと低負荷サーバ上で低負荷割合を有するデータスライスとを交換し、それによって、一方では、高負荷サーバの負荷を効果的に低減し、他方では、低負荷サーバの負荷圧力の一部を低減し、低負荷サーバ上のデータスライスの一部が交換で出されたせいで新たに交換で入ったデータスライスに対する負荷空間の一部をスペアとして取っておき、それにより、高負荷サーバ上のデータスライスが低負荷サーバにおいて交換されたときに、これにより低負荷サーバの負荷が大きくなりすぎ得る状況を回避し、分散データベースシステム全体の負荷を効果的に低減する。
【００３５】
図3に示されているように、図3は、本開示による分散データベースの負荷を平準化するための方法の第2の実施形態のフローチャートである。本発明の実施形態は、図2に示されている実施形態のステップを含み、ステップS40は、次に示すステップを含む。
【００３６】
ステップS41において、逆順で第i位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスは、第i位ターゲットデータスライスとして決定される。
【００３７】
本発明の実施形態において、最高から最低に向かって負荷に応じてランク付けされた低負荷サーバについて、前の方にランク付けされた低負荷サーバは、比較的高い負荷を有し、後の方にランク付けされた低負荷サーバは、比較的低い負荷を有し、その一方で、高負荷サーバについては、前の方にランク付けされた高負荷サーバは、比較的高い負荷を有し、後の方にランク付けされた高負荷サーバは、比較的低い負荷を有する。分散データベースシステムの負荷を最も効率的に平準化するために、最高の負荷を有するサーバは、最低の負荷を有するサーバとペアリングされるものとしてよく、2番目に高い負荷を有するサーバは、2番目に低い負荷を有するサーバとペアリングされるものとしてよく、というように続く、すなわち、第i位にランク付けされた高負荷サーバは、逆順で第i位にランク付けされた低負荷サーバとグループとしてペアリングされる。
【００３８】
ペアリングされた高負荷サーバと低負荷サーバのグループについて、本発明の実施形態では、高負荷サーバ上の1つのデータスライスと低負荷サーバ上の1つのデータスライスとを交換するだけであり、複数のデータスライスが交換されてよく、その場合、使用される方法は、データスライスの1つのペアを交換する仕方と同じ仕方で推定され得る。ターゲットデータスライスは、低負荷サーバ上で決定されるものとしてよく、高負荷サーバの負荷を著しく低減するために、低負荷サーバ上で最低負荷割合を有するデータスライスは、ターゲットデータスライスとして使用される。
【００３９】
ステップS42において、第i位にランク付けられている高負荷サーバ上で第j位のランク付け負荷割合を有するデータスライスは、第i位ソースデータスライスとして決定される。
【００４０】
ソースデータスライスは、高負荷サーバ上で決定されるが、決定されたソースデータスライスおよびターゲットデータスライスは、直接的に交換されないが、選択されたソースデータスライスが適切なものかどうかが事前決定される。ソースデータスライスが決定されるべきであるときに、第j位にランク付けされた負荷割合を有するデータスライスは、ソースデータスライスとして使用され、jは正の整数であり、jの初期値は1であり、jは高負荷サーバ上のデータスライスの数以下である。すなわち、最初に、ソースデータスライスは、最高負荷割合を有するデータスライスから始めて選択されるものとしてよく、事前決定の後、ソースデータスライスが交換されたとしても、分散データベースシステムの全体的負荷圧力がそれでも軽減され得ないと決定された場合に、2番目に高い負荷割合を有するデータスライスは、ソースデータスライスとして使用され、次いで、決定がしかるべく実行される。
【００４１】
ステップS43で、第i位ターゲットデータスライスおよび第i位ソースデータスライスが交換された後に、それぞれのサーバの中で逆順で第i位にランク付けされた低負荷サーバの全体の負荷割合が、事前決定された負荷割合閾値よりも大きいかどうかが事前決定され、もしそうであれば、j+1とし、プロセスはステップS42に戻るか、またはそうでなければ、ステップS50が実行される。
【００４２】
事前決定を実行するときに、この方法は、ターゲットデータスライスおよびソースデータスライスはすでに交換されていると仮定し、低負荷サーバの全負荷割合からターゲットデータスライスの負荷割合を引いた割合を使用し、それをソースデータスライスの負荷割合と加え、次いで、計算された全負荷割合が事前決定された負荷割合閾値よりも大きいかどうかを比較する。もしそうであれば、このときに選択されたソースデータスライスは適切でないことが指示され、ソースデータスライスが低負荷サーバにおいて交換される場合に、これにより低負荷サーバの負荷が高くなりすぎることがあり、この場合、新しいソースデータスライスが再選択される必要があり、ソースデータスライスは、ソースデータスライスの次にランク付けされる負荷割合を有するデータスライスを使用して更新され、事前決定動作が再び実行される。プロセスは、それぞれのサーバの中で低負荷サーバの全負荷割合が事前決定された負荷割合閾値以下になるまで続き、これは現在選択されているソースデータスライスが適切であることを指示し、現在選択されているソースデータスライスおよびターゲットデータスライスが交換された場合に、現在選択されているソースデータスライスは、低負荷サーバの負荷が高くなりすぎることを引き起こさない。
【００４３】
本発明の実施形態において、交換によって低負荷サーバの負荷が高くなりすぎ得るかどうかが事前決定され、もしそうであれば、新しいリソースデータスライスが再選択され、事前決定が再実行され、これは、選択されたソースデータスライスがターゲットデータスライスと交換された後に低負荷サーバの負荷を高くしすぎないようにするまで行われる。このようにして、この方法は、高負荷サーバの負荷を低減し、その一方で、低負荷サーバの通常負荷を保証し、分散データベースシステム全体が効率よく稼動することを確実にする。
【００４４】
図4に示されているように、図4は、本開示による分散データベースの負荷を平準化するための方法の第3の実施形態のフローチャートである。本発明の実施形態は、図3に示されている実施形態におけるステップを含み、この方法は、ステップS41の前に次に示すステップをさらに含む。
【００４５】
ステップS44で、第i位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が事前決定された負荷割合閾値よりも大きいかどうかが決定され、もしそうであれば、ステップS45が実行されるか、またはそうでなければ、ステップS41が実行される。
【００４６】
ステップS45で、第i位にランク付けされた高負荷サーバ上のデータスライスは、交換動作を実行するために使用しない。
【００４７】
本発明の実施形態において、事前決定およびデータスライス平準化を実行する前に、これは、高負荷サーバ上のデータスライスの負荷割合が高すぎるかどうかも決定する。高すぎる負荷割合を有するデータスライスが低負荷サーバに移動された後に、これにより低負荷サーバの負荷が高くなりすぎる場合、および次の平準化サイクルを実行するときに、元の低負荷サーバは、高負荷サーバとして決定され、高すぎる負荷割合を有するデータスライスは、再交換で出され、これはデータスライスを繰り返し転送させる。この場合、転送動作を繰り返すことを回避するために、高負荷サーバは高すぎる負荷割合を有するデータスライスを有するが、他の仕方または手動で処理される。それに加えて、高負荷サーバとペアリングされる低負荷サーバについては、これは別の高負荷サーバとペアリングされ得るか、または次の平準化サイクルでペアリングされるように予約され得る。
【００４８】
図5に示されているように、図5は、本開示の分散データベースの負荷を平準化するための方法の第4の実施形態のフローチャートである。本発明の実施形態は、図2に示されている実施形態におけるステップを含み、この方法は、ステップS61の後に、次に示すステップをさらに含む。
【００４９】
ステップS71で、現在の統計期間として次の統計期間に入り、現在の統計期間のすべてのサーバの負荷がカウントされる。
【００５０】
ステップS72で、それぞれのサーバは、最高から最低に向かってそれぞれのサーバの負荷に応じてランク付けされ、ランク上位n個のサーバは、現在の統計期間内に高負荷サーバとして決定される。
【００５１】
ステップS73で、現在の統計期間内のn個の高負荷サーバが、前の統計期間におけるn個の高負荷サーバと同じであるかどうかが決定され、もしそうであれば、ステップS74が実行され、またはそうでなければ、プロセスはステップS10に戻る。
【００５２】
ステップS74で、事前決定された負荷割合閾値が増やされ、プロセスはステップS10に戻る。
【００５３】
本発明の実施形態は、平準化ポリシーが妥当であるかどうかも決定し、次の期間に稼動したときにそれぞれのサーバの負荷をカウントし、前の平準化動作の後のそれぞれのサーバの負荷が改善されているかどうかを決定する。たとえば、7日午前1時に、6日午前1時から7日午前1時までの間のそれぞれのサーバの負荷がカウントされ、第1の平準化動作がサーバに対して実行される。システムが稼動を続け、8日午前1時に、7日午前1時から8日午前1時までのそれぞれのサーバの負荷が評価され、7日の平準化動作の結果が妥当かどうかが決定され、もしそうであれば、第2の平準化動作を実行するために平準化ポリシーが使用されるか、またはそうでなければ、平準化ポリシーは調整され、次の平準化動作を実行するために新しい平準化ポリシーが使用される。統計データに従って、高負荷サーバはサーバの負荷に応じてフィルタ処理により取り除かれる。統計期間内の平準化および稼動の後、フィルタ処理で取り除かれた高負荷サーバおよび平準化の前の高負荷サーバが同じである場合、これは、前の統計期間内の高負荷サーバの負荷圧力が軽減されないことを指示しており、平準化ポリシーは機能しない。この場合、平準化ポリシーは、調整される必要があり、たとえば、事前決定された負荷割合閾値を増やし、比較的大きい負荷割合を有するデータスライスが高負荷サーバ上で選択されたときに、高負荷サーバ上の比較的大きい負荷割合が、低負荷サーバに移されるものとしてよく、これは平準化ポリシーの有効性を確実にする。
【００５４】
図6に示されているように、図6は、本開示による分散データベースの負荷を平準化するための方法の第5の実施形態のフローチャートである。本発明の実施形態は、図2に示されている実施形態におけるステップを含み、この方法のステップS20は、次に示すステップを含む。
【００５５】
ステップS21で、それぞれのサーバは、最高から最低に向かってそれぞれのサーバのCPU負荷に応じてランク付けされ、ランク上位n1個のサーバは、高負荷サーバの第1のグループとして決定され、ランク下位n1個のサーバは、低負荷サーバの第1のグループとして決定され、n1はnよりも小さい正の整数である。
【００５６】
ステップS22で、高負荷サーバの第1のグループおよび低負荷サーバの第1のグループは、それぞれのサーバから除外され、残っているサーバは、最高から最低に向かってランク付けで残っているサーバのトラフィック負荷に応じてランク付けされ、ランク上位n2個のサーバは、高負荷サーバの第2のグループとして決定され、ランク下位n2個のサーバは、低負荷サーバの第2のグループとして決定され、n2はnよりも小さい正の整数であり、n1+n2=nである。
【００５７】
本発明の実施形態において、高負荷サーバおよび低負荷サーバがフィルタ処理で取り除かれるときに、サーバは、CPU負荷およびトラフィック負荷態様でランク付けされるものとしてよく、CPU負荷およびトラフィック負荷の優先度は、予め構成されるものとしてよい。たとえば、本発明の実施形態において、CPU負荷の優先度は、トラフィック負荷の優先度よりも高い。次いで、最初に、システム内のサーバは、最高から最低に向かってそのCPU負荷に応じてランク付けされ、高負荷サーバの第1の集合および低負荷サーバの第1の集合が、フィルタ処理で取り除かれ、次いで、フィルタ処理による取り除き動作が残りのサーバについて実行され、それにより、最高から最低に向かってそのトラフィック負荷に応じて残りのサーバをランク付けし、高負荷サーバの第2の集合および低負荷サーバの第2の集合をフィルタ処理で取り除く。ペアリング動作を実行するときに、高負荷サーバの第1の集合は、低負荷サーバの第1の集合と一対一でペアリングされ、高負荷サーバの第2の集合および低負荷サーバの第2の集合は、一対一でペアリングされる。データスライスが交換されるべきであるときに、それらは、高負荷サーバの第1の集合と低負荷サーバの第1の集合との間、および高負荷サーバの第2の集合と低負荷サーバの第2の集合との間で交換される。本発明の実施形態では、データスライスがそれぞれCPU負荷態様およびトラフィック負荷態様から交換される必要のあるサーバをフィルタ処理で取り除くので、データスライスの交換はターゲットとされることがより多くなり、このことは、さらに平準化ポリシーをより効果的なものにし、分散データベースの負荷全体を低減するために有利である。
【００５８】
図7に示されているように、図7は、本開示の分散データベースの負荷を平準化するための方法の第6の実施形態のフローチャートである。本発明の実施形態は、図2に示されている実施形態におけるステップを含み、ステップS50は、次に示すステップを含む。
【００５９】
ステップS51で、アイドル状態のサーバの取得情報が、分散データシステムから取得される。
【００６０】
ステップS52で、第i位ソースデータスライスは、第i位にランク付けされた高負荷サーバからアイドル状態のサーバに転送される。
【００６１】
ステップS53で、第i位ターゲットデータスライスは、逆順で第i位にランク付けされた低負荷サーバから第i位にランク付けされた高負荷サーバに転送される。
【００６２】
ステップS54で、アイドル状態のサーバに転送された第i位ソースデータスライスは、逆順で第i位にランク付けされた低負荷サーバに転送される。
【００６３】
本発明の実施形態において、低負荷サーバが空いていないときに、ソースデータスライスが低負荷サーバに転送された場合、これにより低負荷サーバの負荷が高くなりすぎ、データ転送の効率に影響を及ぼすことがあるという事実を回避するために、分散データベースシステムは、空きリソースの一部、すなわち、アイドル状態のサーバについて予約され、ソースデータスライスは、最初に、高負荷サーバからアイドル状態のサーバに転送され、次いで、ターゲットデータスライスは、低負荷サーバから高負荷サーバに転送され、ソースデータスライスは、低負荷サーバに転送される。しかしながら、低負荷サーバが空いている場合、ソースデータスライスは、高負荷サーバから低負荷サーバに直接転送されるものとしてよく、次いで、ターゲットデータスライスは、低負荷サーバから高負荷サーバに転送される。低負荷サーバが空いているかどうかが事前決定されるものとしてよく、もしそうならば、交換動作が直接実行されるか、またはそうでなければ、空きサーバを通じて実行され、このことはデータスライスを転送する効率を改善し、負荷平準化が効率的に実行されることを確実にする。
【００６４】
図8に示されているように、図8は、本開示による分散データベースの負荷を平準化するための装置のモジュールの第1の実施形態の概略図である。本発明の実施形態により実現される分散データベースの負荷を平準化するための装置は、次のものを備える。
【００６５】
統計期間中に分散データベースシステム内のすべてのサーバの負荷および各サーバ上の各データスライスの負荷割合をカウントするための統計モジュール10、
最高から最低に向かってそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けし、ランク上位n個のサーバを高負荷サーバとして決定し、ランク下位n個のサーバを低負荷サーバとして決定し、nは正の整数であり、最高から最低に向かって第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて第i位にランク付けされた高負荷サーバ上のそれぞれのデータスライスをランク付けし、最高から最低に向かって逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスの負荷割合に応じて逆順で第i位にランク付けされた低負荷サーバ上のそれぞれのデータスライスをランク付けするための、iは正の整数であり、iはn以下である、ランク付けモジュール20、および
第i位にランク付けられている高負荷サーバ上で高負荷割合を有するデータスライスを第i位ソースデータスライスとして決定し、逆順で第i位にランク付けられている低負荷サーバ上で低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定し、第i位ソースデータスライスと第i位ターゲットデータスライスとを交換するための調整モジュール30であって、調整モジュール30のプロセスは、すべての高負荷サーバが平準化される、すなわち、すべての高負荷サーバおよび低負荷サーバが横断されるまで続行される、調整モジュール30。
【００６６】
本発明の実施形態の分散データベースシステムは、複数の共有サーバを備え、各サーバは、複数のデータスライスをロードされる。各サーバ上に、監視および報告用プログラムが予め配備され、これにより、データ要求の件数およびデータスライスがアクセスされたときに占有されているトラフィックの量などの情報を定期的間隔で分散データベースシステムの統計データベースに報告する。一方で、システムは、ウェブマスターサーバから現在の統計期間中にそれぞれのサーバの負荷、たとえば、CPU負荷およびトラフィック負荷も取得し得る。現在の統計期間内に報告されるデータ要求の件数および特定のデータスライスのアクセスのトラフィックの量およびデータスライスが配置されているサーバの負荷などの情報に従って、システムは、サーバの負荷におけるデータスライスの負荷割合、すなわち、サーバがサーバの全負荷においてデータスライスのアクセス要求を処理するときに引き起こされる負荷の割合を取得する。統計期間は、毎日24時間、またはそれ以上であるものとしてよい。24時間を例に取ると、監視および報告用プログラムは、5分おきにデータを報告するものとしてよく、次いで、24時間内にデータスライスに対して288件の報告情報がある。統計を出しやすくするために、288件の報告情報は、長い報告情報連鎖にマージされてよく、各データスライスは、1つの報告情報連鎖に対応する。一方で、システムは、毎日決まった時間に、たとえば、毎日1:00AMにウェブマスターサーバからそれぞれのサーバの負荷を取得し得る。
【００６７】
負荷平準化を達成するために、本発明の実施形態では、高負荷サーバ上のデータスライスと低負荷サーバ上のデータスライスとを交換する。サーバは、最高から最低に向かってカウントされたそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けするものとしてよく、最高にランク付けされたサーバは最高負荷を有し、最低にランク付けされたサーバは最低負荷を有する。次いで、上位n個のサーバは、高負荷サーバとしてみなされ、下位n個のサーバは、低負荷サーバとしてみなされる。負荷平準化動作は、サーバの2つのグループ上のデータスライスを交換することである。
【００６８】
高負荷サーバおよび低負荷サーバは、ペアとして予め1つのグループにまとめられるものとしてよい。本発明の実施形態において、それぞれの高負荷サーバは、最高から最低に向かってそれぞれの高負荷サーバの負荷に応じてランク付けされるものとしてよく、それぞれの低負荷サーバも、最高から最低に向かってそれぞれの低負荷サーバの負荷に応じてランク付けされるものとしてよい。次いで、高負荷サーバのキューに入っている第i位にランク付けされた高負荷サーバおよび低負荷サーバのキューに入っている逆順で第i位にランク付けされた低負荷サーバは、ペアとして1つのグループにまとめられてよく、たとえば、最大の負荷を有する高負荷サーバと最低の負荷を有する低負荷サーバとをペアリングし、2番目に大きい負荷を有する高負荷サーバと2番目に低い負荷を有する低負荷サーバとをペアリングし、というように続くものとしてよい。または、高負荷サーバのキューに入っている第i位にランク付けされた高負荷サーバおよび低負荷サーバのキューに入っている第i位にランク付けされた低負荷サーバ、または高負荷サーバおよび低負荷サーバは、ランダムにペアリングされる。ペアリングされた高負荷サーバおよび低負荷サーバの各グループについて、サーバ上のそれぞれのデータスライスは、最高から最低に向かってそれぞれのデータスライスの負荷割合に応じてランク付けされる。
【００６９】
高負荷サーバの負荷を低減するために、高負荷サーバ上のデータスライスが低負荷サーバに移動されるものとしてよく、低負荷サーバに負荷をかけすぎることによって引き起こされる低負荷サーバの過剰な負荷増大を防ぐために、本発明の実施形態では、高負荷サーバ上で比較的高い負荷を有する1つまたは複数のデータスライスのみを負荷サーバに移動し、その一方で、低負荷サーバ上で比較的低い負荷を有するデータスライスを高負荷サーバに移動するものとしてよく、2つのサーバからそれぞれ移動されたスライスの数は等しく、これにより、高負荷サーバと低負荷サーバとの間のデータスライスの交換を実現する。このようにして、高負荷サーバの負荷は、効率的に低減され、その一方で、低負荷サーバ上のデータスライスの一部は交換で出されるので、低負荷サーバの負荷圧力の一部は、低減され、新たに交換で入ったデータスライスに対する負荷空間の一部は、スペアに回され、それにより、高負荷サーバ上のデータスライスが低負荷サーバで交換で入り、そのため負荷サーバの負荷が大きくなりすぎ得る状況を効率的に回避し得る。
【００７０】
1つのグループにペアリングされた高負荷サーバおよび低負荷サーバ上のソースデータスライスおよびターゲットデータスライスが交換された後、プロセスは、ペアリングされた高負荷サーバおよび低負荷サーバの次のグループに進み、ソースデータスライスとターゲットデータスライスとを交換し、平準化プロセスは、ペアリングされた高負荷サーバおよび低負荷サーバのすべてのグループ上のソースデータスライスおよびターゲットデータスライスが交換されるまで続く。
【００７１】
本発明の実施形態の分散データベースシステムは、サーバの負荷に応じてサーバをランク付けし、高負荷サーバおよび低負荷サーバをそれぞれフィルタ処理で取り除き、高負荷サーバ上で高負荷割合を有するデータスライスと低負荷サーバ上で低負荷割合を有するデータスライスとを交換し、それによって、一方では、高負荷サーバの負荷を効果的に低減し、他方では、低負荷サーバの負荷圧力の一部を低減し、低負荷サーバ上のデータスライスの一部が交換で出されたせいで新たに交換で入ったデータスライスに対する負荷空間の一部をスペアとして取っておき、それにより、高負荷サーバ上のデータスライスが低負荷サーバにおいて交換されたときに、これにより低負荷サーバの負荷が大きくなりすぎ得る状況を回避し、分散データベースシステム全体の負荷を効果的に低減する。
【００７２】
図9に示されているように、図9は、本開示による分散データベースの負荷を平準化するための装置のモジュールの第2の実施形態の概略図である。本発明の実施形態は、図8に示されている実施形態のモジュールを含み、決定モジュール40をさらに含む。
【００７３】
調整モジュール30は、逆順で第i位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定し、第i位にランク付けられている高負荷サーバ上で第j位のランク付け負荷割合を有するデータスライスを第i位ソースデータスライスとして決定するようにさらに構成され、jは正の整数であり、jの初期値は1であり、jは第i位にランク付けされた高負荷サーバ上のデータスライスの数以下である。
【００７４】
決定モジュール40は、それぞれのサーバの中で逆順で第i位にランク付けされた低負荷サーバの全体の負荷割合が、第i位ターゲットデータスライスおよび第i位ソースデータスライスが交換された後に事前決定された負荷割合閾値よりも大きいかどうかを事前決定するように構成される。
【００７５】
調整モジュール30は、決定モジュール40が、それぞれのサーバの中で逆順で第i位にランク付けされた低下負荷サーバの全負荷割合が事前決定された負荷割合閾値よりも大きいと事前決定したときに、第i位にランク付けされた高負荷サーバ上で第j位にランク付けされた負荷割合を有するデータスライスの次のデータスライスを使用して第i位ソースデータスライスを更新するようにさらに構成される。
【００７６】
決定モジュール40は、それぞれのサーバの中で逆順で第i位にランク付けされた低負荷サーバの全体の負荷割合が、第i位ターゲットデータスライスおよび更新された第i位ソースデータスライスが交換された後に、逆順で第i位にランク付けされた低負荷サーバの全体の負荷割合が事前決定された負荷割合閾値以下になるまで、事前決定された負荷割合閾値よりも大きいかどうかを事前決定するようにさらに構成される。
【００７７】
本発明の実施形態において、最高から最低に向かってその負荷に応じてランク付けされた低負荷サーバについて、前の方にランク付けされた低負荷サーバは、比較的高い負荷を有し、後の方にランク付けされた低負荷サーバは、比較的低い負荷を有する。その一方で、高負荷サーバについては、前の方にランク付けされた高負荷サーバは、比較的高い負荷を有し、後の方にランク付けされた高負荷サーバは、比較的低い負荷を有する。分散データベースシステムの負荷を最も効率的に平準化するために、最高の負荷を有するサーバは、最低の負荷を有するサーバとペアリングされるものとしてよく、2番目に高い負荷を有するサーバは、2番目に低い負荷を有するサーバとペアリングされるものとしてよく、というように続く、すなわち、第i位にランク付けされた高負荷サーバは、逆順で第i位にランク付けされた低負荷サーバとグループとしてペアリングされる。
【００７８】
ペアリングされた高負荷サーバと低負荷サーバのグループについて、本発明の実施形態では、高負荷サーバ上の1つのデータスライスと低負荷サーバ上の1つのデータスライスとを交換するだけであり、複数のデータスライスが交換されてよく、その場合、使用される方法は、データスライスの1つのペアを交換する仕方と同じ仕方で推定され得る。ターゲットデータスライスは、低負荷サーバ上で決定されるものとしてよく、高負荷サーバの負荷を著しく低減するために、低負荷サーバ上で最低負荷割合を有するデータスライスは、ターゲットデータスライスとして使用される。
【００７９】
ソースデータスライスは、高負荷サーバ上で決定されるが、決定されたソースデータスライスおよびターゲットデータスライスは、直接的に交換されないが、選択されたソースデータスライスが適切なものかどうかが事前決定される。ソースデータスライスが決定されるべきであるときに、第j位にランク付けされた負荷割合を有するデータスライスは、ソースデータスライスとして使用され、jは正の整数であり、jの初期値は1であり、jは高負荷サーバ上のデータスライスの数以下である。すなわち、最初に、ソースデータスライスは、最高負荷割合を有するデータスライスから始めて選択されるものとしてよく、事前決定の後、ソースデータスライスが交換されたとしても、分散データベースシステムの全体的負荷圧力がそれでも軽減され得ないと決定された場合に、2番目に高い負荷割合を有するデータスライスは、ソースデータスライスとして使用され、次いで、決定がしかるべく実行される。
【００８０】
事前決定を実行するときに、この方法は、ターゲットデータスライスおよびソースデータスライスはすでに交換されていると仮定し、低負荷サーバの全負荷割合からターゲットデータスライスの負荷割合を引いた割合を使用し、それをソースデータスライスの負荷割合と加え、次いで、計算された全負荷割合が事前決定された負荷割合閾値よりも大きいかどうかを比較する。もしそうであれば、このときに選択されたソースデータスライスは適切でないことが指示され、ソースデータスライスが低負荷サーバにおいて交換される場合に、これにより低負荷サーバの負荷が高くなりすぎることがあり、この場合、新しいソースデータスライスが再選択される必要があり、ソースデータスライスは、ソースデータスライスの次にランク付けされる負荷割合を有するデータスライスを使用して更新され、事前決定動作が再び実行される。プロセスは、それぞれのサーバの中で低負荷サーバの全負荷割合が事前決定された負荷割合閾値以下になるまで続き、これは現在選択されているソースデータスライスが適切であることを指示し、現在選択されているソースデータスライスおよびターゲットデータスライスが交換された場合に、現在選択されているソースデータスライスは、低負荷サーバの負荷が高くなりすぎることを引き起こさない。
【００８１】
本発明の実施形態において、交換によって低負荷サーバの負荷が高くなりすぎ得るかどうかが事前決定され、もしそうであれば、新しいリソースデータスライスが再選択され、事前決定が再実行され、これは、選択されたソースデータスライスがターゲットデータスライスと交換された後に低負荷サーバの負荷を高くしすぎないようにするまで行われる。このようにして、この方法は、高負荷サーバの負荷を低減し、その一方で、低負荷サーバの通常負荷を保証し、分散データベースシステム全体が効率よく稼動することを確実にする。
【００８２】
さらに、決定モジュール40は、第i位にランク付けされた高負荷サーバ上で最高負荷割合を有するデータスライスの負荷割合が事前決定された負荷割合閾値よりも大きいかどうかを決定するようにさらに構成され、
もしそうであれば、調整モジュール30は、第i位にランク付けされた高負荷サーバ上のデータスライスを使用して交換動作を実行することを拒否するようにさらに構成されるか、または
もしそうでなければ、調整モジュール30は、逆順で第i位にランク付けられている低負荷サーバ上で最低負荷割合を有するデータスライスを第i位ターゲットデータスライスとして決定するステップを実行するようにさらに構成される。
【００８３】
本発明の実施形態において、事前決定およびデータスライス平準化を実行する前に、これは、高負荷サーバ上のデータスライスの負荷割合が高すぎるかどうかも決定する。高すぎる負荷割合を有するデータスライスが低負荷サーバに移動された後に、これにより低負荷サーバの負荷が高くなりすぎる場合、および次の平準化サイクルを実行するときに、元の低負荷サーバは、高負荷サーバとして決定され、高すぎる負荷割合を有するデータスライスは、再交換で出され、これはデータスライスを繰り返し転送させる。この場合、転送動作を繰り返すことを回避するために、高負荷サーバは高すぎる負荷割合を有するデータスライスを有するが、他の仕方または手動で処理される。それに加えて、高負荷サーバとペアリングされる低負荷サーバについては、これは別の高負荷サーバとペアリングされ得るか、または次の平準化サイクルでペアリングされるように予約され得る。
【００８４】
さらに、統計モジュール10は、現在の統計期間として次の統計期間に入り、現在の統計期間の間にすべてのサーバの負荷をカウントするようにさらに構成される。
【００８５】
ランク付けモジュール20は、最高から最低に向かってそれぞれのサーバの負荷に応じてそれぞれのサーバをランク付けし、ランク上位n個のサーバを現在の統計期間内の高負荷サーバとして決定するようにさらに構成される。
【００８６】
決定モジュール40は、現在の統計期間内のn個の高負荷サーバが、前の統計期間におけるn個の高負荷サーバと同じであるかどうかを決定するように構成される。
【００８７】
もしそうならば、調整モジュール30は、事前決定された負荷割合閾値を増やし、現在の統計期間内のすべての高負荷サーバを再平準化する、すなわち、高負荷サーバおよび低負荷サーバを再び横断し、対応する動作を実行するようにさらに構成される。
【００８８】
本発明の実施形態は、平準化ポリシーが妥当であるかどうかも決定し、次の期間に稼動したときにそれぞれのサーバの負荷をカウントし、前の平準化動作の後のそれぞれのサーバの負荷が改善されているかどうかを決定する。たとえば、7日午前1時に、6日午前1時から7日午前1時までの間のそれぞれのサーバの負荷がカウントされ、第1の平準化動作がサーバに対して実行される。システムが稼動を続け、8日午前1時に、7日午前1時から8日午前1時までのそれぞれのサーバの負荷が評価され、7日の平準化動作の結果が妥当かどうかが決定され、もしそうであれば、第2の平準化動作を実行するために平準化ポリシーが使用されるか、またはそうでなければ、平準化ポリシーは調整され、次の平準化動作を実行するために新しい平準化ポリシーが使用される。統計データに従って、高負荷サーバはサーバの負荷に応じてフィルタ処理により取り除かれる。統計期間内の平準化および稼動の後、フィルタ処理で取り除かれた高負荷サーバおよび平準化の前の高負荷サーバが同じである場合、これは、前の統計期間内の高負荷サーバの負荷圧力が軽減されないことを指示しており、平準化ポリシーは機能しない。この場合、平準化ポリシーは、調整される必要があり、たとえば、事前決定された負荷割合閾値を増やし、比較的大きい負荷割合を有するデータスライスが高負荷サーバ上で選択されたときに、高負荷サーバ上の比較的大きい負荷割合が、低負荷サーバに移されるものとしてよく、これは平準化ポリシーの有効性を確実にする。
【００８９】
さらに、ランク付けモジュール20は、
最高から最低に向かってそれぞれのサーバのCPU負荷に応じてそれぞれのサーバをランク付けし、ランク上位n1個のサーバを高負荷サーバの第1のグループとして決定し、ランク下位n1個のサーバを低負荷サーバの第1のグループとして決定し、n1はnよりも小さい正の整数であり、
高負荷サーバの第1のグループおよび低負荷サーバの第1のグループをそれぞれのサーバから除外し、最高から最低に向かってランク付けで残っているサーバのトラフィック負荷に応じて残っているサーバをランク付けし、ランク上位n2個のサーバを高負荷サーバの第2のグループとして決定し、ランク下位n2個のサーバを低負荷サーバの第2のグループとして決定するように構成され、n2はnよりも小さい正の整数であり、n1+n2=nである。
【００９０】
本発明の実施形態において、高負荷サーバおよび低負荷サーバがフィルタ処理で取り除かれるときに、サーバは、CPU負荷およびトラフィック負荷態様でランク付けされるものとしてよく、CPU負荷およびトラフィック負荷の優先度は、予め構成されるものとしてよい。たとえば、本発明の実施形態において、CPU負荷の優先度は、トラフィック負荷の優先度よりも高い。次いで、最初に、システム内のサーバは、最高から最低に向かってそのCPU負荷に応じてランク付けされ、高負荷サーバの第1の集合および低負荷サーバの第1の集合が、フィルタ処理で取り除かれ、次いで、フィルタ処理による取り除き動作が残りのサーバについて実行され、それにより、最高から最低に向かってそのトラフィック負荷に応じて残りのサーバをランク付けし、高負荷サーバの第2の集合および低負荷サーバの第2の集合をフィルタ処理で取り除く。ペアリング動作を実行するときに、高負荷サーバの第1の集合は、低負荷サーバの第1の集合と一対一でペアリングされ、高負荷サーバの第2の集合および低負荷サーバの第2の集合は、一対一でペアリングされる。データスライスが交換されるべきであるときに、それらは、高負荷サーバの第1の集合と低負荷サーバの第1の集合との間、および高負荷サーバの第2の集合と低負荷サーバの第2の集合との間で交換される。本発明の実施形態では、データスライスがそれぞれCPU負荷態様およびトラフィック負荷態様から交換される必要のあるサーバをフィルタ処理で取り除くので、データスライスの交換はターゲットとされることがより多くなり、このことは、さらに平準化ポリシーをより効果的なものにし、分散データベースの負荷全体を低減するために有利である。
【００９１】
さらに、調整モジュール30は、
分散データシステムからアイドル状態のサーバの情報を取得し、
第i位にランク付けされた高負荷サーバから第i位ソースデータスライスをアイドル状態のサーバに転送し、
逆順で第i位にランク付けされた低負荷サーバから第i位ターゲットデータスライスを第i位にランク付けされた高負荷サーバに転送し、
アイドル状態のサーバに転送された第i位ソースデータスライスを逆順で第i位にランク付けされた低負荷サーバに転送するように構成される。
【００９２】
本発明の実施形態において、低負荷サーバが空いていないときに、ソースデータスライスが低負荷サーバに転送された場合、これにより低負荷サーバの負荷が高くなりすぎ、データ転送の効率に影響を及ぼすことがあるという事実を回避するために、分散データベースシステムは、空きリソースの一部、すなわち、アイドル状態のサーバについて予約され、ソースデータスライスは、最初に、高負荷サーバからアイドル状態のサーバに転送され、次いで、ターゲットデータスライスは、低負荷サーバから高負荷サーバに転送され、ソースデータスライスは、低負荷サーバに転送される。しかしながら、低負荷サーバが空いている場合、ソースデータスライスは、高負荷サーバから低負荷サーバに直接転送されるものとしてよく、次いで、ターゲットデータスライスは、低負荷サーバから高負荷サーバに転送される。低負荷サーバが空いているかどうかが事前決定されるものとしてよく、もしそうならば、交換動作が直接実行されるか、またはそうでなければ、空きサーバを通じて実行され、このことはデータスライスを転送する効率を改善し、負荷平準化が効率的に実行されることを確実にする。
【００９３】
本明細書において、「第1」および「第2」のような用語は、一方の実体または動作を他方の実体または動作から差別化するためにのみ使用され、これらの実体または動作の間の実際の関係もしくは順序を示すために必ずしも使用されないことに留意されたい。さらには、「備える」、「含む」などの用語、またはその変化形は、「限定はしないが含む」を意味する。したがって、一連の要素を含むプロセス、方法、対象、またはデバイスは、これらの要素を含むだけでなく、明示的に指定されない他の要素も含むか、またはこれらのプロセス、方法、対象、またはデバイスの固有の要素をさらに含み得る。それ以上制限がない場合、「1つの...を含む」によって指定され得る要素の文脈において、指定された要素を含むプロセス、方法、対象、またはデバイスは、他の同一の要素を含み得る。
【００９４】
本開示の実施形態の順序番号は、説明目的の番号にすぎず、実施形態の上下関係に対する制限と解釈されるべきでない。
【００９５】
実施形態の説明を通じて、当業者は、前述の実施形態における方法が必要な一般的ハードウェアプラットフォームとソフトウェアとによって実装されるものとしてよく、またハードウェアによっても実装され得ることを認識するであろう。しかしながら、ほとんどの場合において、前者が好ましい。この理解に基づき、従来の技術に寄与する本開示の技術的解決方法の一部分は、ソフトウェア製品として具現化されるものとしてよく、コンピュータソフトウェア製品は、端末デバイス(たとえば、携帯電話、コンピュータ、サーバ、またはネットワークデバイス)が本開示の様々な実施形態における方法を実行することを可能にするいくつかの命令を含めて、記憶媒体(たとえば、ROM/RAM、磁気ディスク、または光ディスク)上に記憶される。
【００９６】
前述の説明は、本発明の単に例示的な実施形態にすぎず、本発明の保護範囲を制限することを意図されていない。本発明の精神および原理から逸脱することなく行われる修正、同等物の置換、または改善は、本発明の保護範囲内に収まるであろう。
【符号の説明】
【００９７】
10  統計モジュール
20  ランク付けモジュール
30  調整モジュール
40  決定モジュール
101  プロセッサ
102  通信バス
103  ユーザインターフェース
104  ネットワークインターフェース
105  メモリ
【図１】
0006615342.tif 000002
【図２】
0006615342.tif 000003
【図３】
0006615342.tif 000004
【図４】
0006615342.tif 000005
【図５】
0006615342.tif 000006
【図６】
0006615342.tif 000007
【図７】
0006615342.tif 000008
【図８】
0006615342.tif 000009
【図９】
0006615342.tif 000010