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

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

負荷分散技術は現在ではどこにでもありますが、基本的にはまだ使用段階であり、その核心は十分に理解されていません。実際に問題が発生した場合、何が原因なのかを知ることは難しく、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年は人類の墓掘り元年となるのか?人工知能のせいではない

ブログ    
ブログ    
ブログ    

推薦する

自然言語処理の概要

自然言語処理 (NLP) は、人間の言語または人間のような書き言葉、話し言葉、組織化された言語の形式...

顔認識の時代に顔を守る方法

シャオ・ワンは最近少しイライラしている。毎日仕事が終わったらすぐにジムに行って運動していたのですが、...

ドローンは緊急通信の発展に役立ちますが、この3つのポイントが重要です。

近年、インターネットの急速な発展に伴い、通信ニーズが継続的に高まり始めており、通信保証能力がますます...

...

...

よく使われる類似度指標の概要: コサイン類似度、ドット積、L1、L2

類似度の測定は機械学習において重要な役割を果たします。これらのメトリックは、オブジェクト、データ ポ...

機械学習の導入を容易にする 6 つのツール

「機械学習」という言葉には魔法のような雰囲気があります。機械学習は一般に一般の人々に受け入れられてい...

Tech Neo 10月号: 同時実行最適化

51CTO.com+プラットフォームは、オリジナルの技術コンテンツの選択と絶妙なレイアウトを通じて、...

機械学習と人工知能: 定義と重要性

[[258322]]機械学習は計算知能とも呼ばれ、近年いくつかの技術的障壁を突破し、ロボット工学、機...

C# バイナリ ツリー トラバーサル アルゴリズムの実装の簡単な分析

C# アルゴリズムは、バイナリ ツリーの定義、既知のバイナリ ツリーの構築方法、および C# でバイ...

...

...

AI 開発の世界では、自然言語処理を真に習得することはどれほど重要ですか?

人工知能開発の分野で最も重要な目標は、自然言語処理 (NLP) を真に習得したシステムを作成すること...

超大型モデルの登場でAIはゲームオーバーになるのか?ゲイリー・マーカス:道は狭くなっている

最近、人工知能技術は大規模モデルにおいて飛躍的な進歩を遂げています。昨日、Google が提案した ...

交通分野における人工知能、ビッグデータ、その他の技術の応用に関する簡単な議論

人工知能、ビッグデータ、モノのインターネット、クラウドコンピューティングなどの技術の台頭と発展に伴い...