賢い負荷分散アルゴリズム: 頭を使って

賢い負荷分散アルゴリズム: 頭を使って

負荷分散技術は現在ではどこにでもありますが、基本的にはまだ使用段階であり、その核心は十分に理解されていません。実際に問題が発生した場合、何が原因なのかを知ることは難しく、Google や Baidu に頼るしか方法がない場合があります。 したがって、いくつかの核となる事柄を理解しておくとよいでしょう。

負荷分散の一般的なプロセスは、各サーバーから随時情報を収集するか、各サーバーが情報を積極的に報告し、それが構成コアによって保存され、重みが計算され、対応するアルゴリズムに従ってサービス マシンが選択されます。 (もちろん、これはこの記事の主題ではありませんし、私が言っていることは正しくないかもしれません)

私が紹介したいのは、重みに基づいてマシンを選択するための次のような巧妙なアルゴリズムです。

  1. int chooseOneRoute ( LB_SvrInfo * & pSvr )
  2. {
  3. ダブルdblTotalWeight = 0.0;
  4. 整数i = 0;
  5. time_t curTime =時間( NULL );
  6. //重みの計算方法はLateメソッドです
  7. ( curTime - calWeightTime >= CAL_WEIGHT_TIME_INTERVAL ) の場合
  8. {
  9. 重量を計算します。
  10. }
  11. //まず各サーバーの重みを合計します
  12. ( i = 0; i < MAX_SERVER_NUM; i++ )の場合
  13. {
  14. if ( !oServerInfo[i].isOkForRoute() )続行します
  15. dblTotalWeight += oServerInfo[i].getWeight();
  16. }
  17. dblTotalWeight *= rand() / ( RAND_MAX + 1.0 );
  18. //減算を行う
  19. ( i = 0; i < MAX_SERVER_NUM; i++ )の場合
  20. {
  21. if ( !oServerInfo[i].isOkForRoute() )続行します
  22. dblTotalWeight -= oServerInfo[i].getWeight();
  23. // 対応するサーバーを探す
  24. dblTotalWeight < 0 の場合、break;
  25. }
  26. pSvr = &(oServerInfo[i]);
  27. 0を返します
  28. }

段階的な説明は次のとおりです。

まず各マシンの重量値を計算して保存します。

[[214964]]

各機械の重量を順番に合計します。これは、各機械が総重量に占める割合に相当します。

乱数を取り、0 から 1 の間のランダムな値を取得し、それを選択したマシンのマークとして合計重量に掛けます。

そして、各機械の重量を順に減算します。選択した機械の重量範囲まで減算すると、機械番号が得られ、機械が選択されます。

アルゴリズム図は次のとおりです。

サーバーの重みが大きいほど、線分上で占める時間が長くなり、乱数によって選択される可能性が高くなります。

最初は数学者が考え出した公式だと思っていましたが、原理は驚くほど単純でした。つまり、良いものは必ずしも複雑ではなく、見た目が素晴らしいものは必ずしも複雑ではありませんが、ほとんどの人の想像を超えていることは間違いありません。

<<:  PaddlePaddleディープラーニングオープンソースプラットフォーム:中国のAI船が皆の漕ぎを待っている

>>:  2018年は人類の墓掘り元年となるのか?人工知能のせいではない

ブログ    
ブログ    
ブログ    

推薦する

あなたの仕事はAIに置き換えられるでしょうか?李開復氏は、これらの4種類の仕事について心配する必要はないと述べている。

[[255576]]最近、李開復氏はタイム誌に「人工知能は強力だが、誤解されている。労働者を守るに...

人工知能に関するあまり知られていない3つの事実!古代中国にロボットは存在したのでしょうか?

時代の発展とテクノロジーの進歩に伴い、人工知能の分野も革新を繰り返しています。しかし、この神秘的な業...

...

AI生成画像に追加されたデジタル透かしは簡単に解読できると研究で判明

10月6日、EngadgetやWiredなどの海外メディアの報道によると、メリーランド大学の研究チー...

Cloudera は研究から実稼働までエンタープライズ機械学習を加速します

クラウド向けに最適化された機械学習および分析のための最新プラットフォームを提供する Cloudera...

...

Java プログラミング スキル - データ構造とアルゴリズム「ツリー」

[[388287]]なぜツリー構造が必要なのでしょうか? 1. 配列格納方法の分析:利点: 下付き...

...

AI分野で世界で最も影響力のある機関トップ100のランキング、中国の機関6つがランクイン

[[243888]]現在、「人工知能」という言葉は主要メディアプラットフォームで頻繁に登場し、注目を...

...

高品質な人工知能メンタルヘルスカウンセリングアプリを開発するには?

生活の質は向上している一方で、人々の精神状態は悪化しています。 [[317751]]群衆の中にうつ病...

Microsoft TaskWeaver オープンソース フレームワーク: データ分析と業界のカスタマイズを組み合わせてトップ エージェント ソリューションを作成

データ分析は現代社会において常に重要なツールであり、本質を理解し、パターンを発見し、意思決定を導くの...

...

ロボットは人間と機械の協働チームの「リーダー」になれるでしょうか?どのように機能しますか?

ロボット技術の発展により、ロボットは実生活においてますます重要な役割を果たすようになるでしょう。人間...

ディープラーニングによる超解像画像技術の概要

SRは大きな進歩を遂げました。一般的に、既存の SR 技術研究は、教師あり SR、教師なし SR、特...