- ベストアンサー
データ配信での注意点
- データ配信における効果的な強化方法
- HP DL360 G7の最小構成でのデータ配信時間
- 配信データの速さに関する疑問
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「サーバーから、数10KBレベルのデータを、500台程度のクライアントにソケット通信で配信」 「LANの外です。全国の拠点(クライアントPC)にインターネット経由で配信する予定です。」 「拠点側にはまだ何も無いので、回線やルーターなども要件に合わせて選べます。」 「XML形式で、500台全てに同じデータを送ります。但し、送信の頻度としては、数秒に一度配信処理を実行します。」 これが条件だとするね。 まず、わかりやすくするために、500箇所の拠点に『異なる』データを送信するならどうするかね。 ■ 例その1-A 普通に、 ・TCP コネクションを張って ・10KB データ送信して ・コネクションを閉じる と、一台あたり 2400ms かかったとして、単純に 500 倍だから 1200,000ms → 1200秒 → 20分 単純に、一台一台、シーケンシャルに、処理すると、一回のデータ送信に 『20分』かかるということになる。 とても、「数秒に一度配信処理を実行」は間に合わない。。。 なので、例えばこれを 20拠点パラレルで通信したとすると。。。20で割れば『1分』。 でも「数秒に一度配信処理を実行」まだまだ足りない。 100拠点パラレルで通信できるような、サーバのスペックと、ネットワーク幅を持たせて、ようやく『2秒』 次に、サーバのスペックね。 これを 4スレッド対応の CPU 一つでまかなうためには、 500(拠点) ÷ 4(スレッド) × 2.4(秒/拠点) ÷ 2(秒)→ 150 (プロセス) つまり、常に 150個のプロセスが動き続けないとダメ。 。。。ちょっと無謀かな? 12スレッド対応 CPU だと、1/3 だから 50プロセス。ちょっといけそうな気がする。 ネットワーク幅は、 10000(バイト) × 8(ビット) × 500(拠点) ÷ 2(秒) ÷ 0.5 (転送効率) = 40,000,000(bps) = 40(Mbps) サーバのネットワーク幅は 50Mbps の最低保障があればOKかな? ■ 例その1-B 500拠点の TCP コネクションを持続するなら、。。。 500(拠点) ÷ 4(スレッド) = 125 (プロセス) 毎回コネクションを閉じるよりちょっとだけ、ましかな? 12 スレッド対応 CPU なら 1/3 で ≒ 42 プロセス。 ■ 例その1-C TCP コネクションを非同期、イベント駆動型(node.jsのようなタイプ)で構築。 プロセス数やスレッド数を最低限に抑えられるので、ネットワーク幅さえクリアすればOK! 問題点、 一つのプロセスに、たくさんの拠点が依存してるから、プロセスが一つでもダウンすると、 影響が大きいので、メモリや CPU の信頼性や誤動作の原因のノイズの除去や電源の安定が肝。 それなりに、サーバ周辺にお金がかかるとおもう。 ■ 例その2 TCP じゃなくて、UDP で 500拠点にパケットを投げまくる! これなら、CPU の性能はそれほどいらないから 4スレッド対応の CPU で十分だとおもう。 問題点、 ・データが届いたことが保障されない。 ・届く順番が保障されない。 ・通信経路でのデータ改竄防止の仕組み(SSL とか SSH)が利用できない。 自前で実装するのでちょっと大変かな? でも、ネットワークプログラマなら腕のみせどころかも。 サーバのネットワーク幅は、 10000(バイト) × 8(ビット) × 500(拠点) ÷ 2(秒) ÷ 0.8 (転送効率) = 25(Mbps) ネットワークの最低保証は、30Mbps は欲しいかな? 次は、500箇所の拠点に『同じ』データを送信するなら。。。 ■ 例その3 TCP コネクション持続型で、ツリー状にバケツリレー。 サーバのネットワーク幅も普通でOK! 1台が8台と通信したとすると、 log(500) / log(8) = 2.98859476 ≒ 3(段構成) サーバ→ 8台(1次中継) → 64台(2次中継) → 512台(末端) 問題点は、1次中継がダウンすると、末端への影響が大きいこと。 中継のバックアップシステムを適切に設計するのが肝心。 ■ 例その4 500拠点とサーバで P2P ネットワークを構築して、データをプッシュしていく。 各拠点自体もサーバになるから、メインサーバのスペックもネットワーク幅も最低で OK。 P2P ネットワークの設計が肝。 P2P ネットワークを適切に設計できるエンジニアが日本にどのぐらいいるかは不明。 数十人?数百人?数千人? とても、とても、とても、効率的。
その他の回答 (1)
- dscripty
- ベストアンサー率51% (166/325)
必要そうな情報 サーバはLANの内?外? 送信する数 10KB のデータの内容は、全て異なるか?同じか? あと、サーバと500台の PC のネットワーク構成(少なくともルータは全部) を書くと、良さそうな回答がつくかも。
補足
ありがとうございます。 現状、構成を考えている段階でして、何も存在していない状態です。 決まっている範囲での内容としては、 > サーバはLANの内?外? LANの外です。全国の拠点(クライアントPC)にインターネット経由で配信する予定です。 拠点側にはまだ何も無いので、回線やルーターなども要件に合わせて選べます。 > 送信する数 10KB のデータの内容は、全て異なるか?同じか? XML形式で、500台全てに同じデータを送ります。 但し、送信の頻度としては、数秒に一度配信処理を実行します。 > あと、サーバと500台の PC のネットワーク構成(少なくともルータは全部) まだ構想段階でして、回線やデータセンターすらも決まっていないのでルータもありません。。 配信事業を経験したことがなく、どこら辺に気をつけるかが知りたく、 助言頂けるとありがたいです。(おそらく専門業者にも相談しなければならないと思いますが。) 経験則や、前提が多少ずれていても良いので、回答頂けませんでしょうか。 宜しくお願い致します。
お礼
お礼が遅くなり申し訳ありません。。 回答、難しく、半分も理解できてませんが、、 必要なスペックなどを洗い出す為の計算式がみえてきました。 一旦プロセスとスレッドでの必要スペックからハードウェアの選定をしてみようと思います。 (「例その1-A」が自分にはわかり易かったです。) しかし、人気スマホアプリなどでプッシュ配信を行う業者は、いったいどのような方法なんですかね・・・ サーバー何十台、回線最低保証1Gbpsとかなんでしょうか・・・いったい月にいくらかかるのか。 ありがとうございました!!