2012-01-16 8 views
2

私には、C++ベースのシステムと通信しているTCP/IPベースのコンポーネントがあります。実際には、そのシステムから生のバイトを読み込み、それらの生のバイトをオブジェクトにマーシャリングしてDBに格納しています。このマルチスレッドtcp/ipベースのコンポーネントはJavaにあり、デュアルコアまたはクアッドコアプロセッサに配備することができます(私の質問には重要かどうかは分かりませんが、それでも私が与えている詳細はありません)。今私はいくつかの質問があります:TCP/IPベースのシステムのスケーリングと高可用性の確保

  1. このtcp/ipベースのコンポーネントをどのように拡大縮小できますか。このコンポーネントはサーバー上に展開され、ポートをリッスンしています。将来、C++システムに由来するより多くのデータが想定されている場合、このJavaコンポーネントの規模を調整できるはずです。

  2. セキュリティについてはどうですか?おそらく私ができることの1つは、安全なソケットでこの通信を使用するか、おそらく暗号化されたデータを得ることです(ここで使用できる特定の暗号化は何ですか?)。セキュリティを守るための他の方法はありますか?

  3. 満足できる高可用性の要件もあります。私はそれをどのように扱うのですか?ここに冗長性を持たせるにはどうすればいいですか?

はい、私たちは製品のシステムアーキテクチャ上で作業しているといくつかの経験豊富な建築家やデザイナーが私を助けることができればそれゆえ、私は思っていました。

答えて

3

このtcp/ipベースのコンポーネントをどのように拡大縮小できますか。このコンポーネントはサーバー上に展開され、ポートをリッスンしています。将来、C++システムに由来するより多くのデータが想定されている場合、このJavaコンポーネントの規模を調整できるはずです。

通常、ネットワーク負荷分散装置を使用して、これらの種類のサービスを複数のサーバーに分散します。

  • (通常はSNMPで測定)CPU負荷
  • クライアントのIPアドレス(自分のサービスにクライアントをマッピングするときに、あなたが永続性を必要とする場合)
  • :そのロードバランサは、次のような、さまざまなアルゴリズムを使用して負荷を分散することができますアクティブソケット
  • など

人気のあるオープンソースのロードバランサ用HAProxyを見の

  • 数。 F5には、最も一般的な商用ロードバランサソリューションがあります。

    セキュリティについてはどうですか?おそらく私ができることの1つは、安全なソケットでこの通信を使用するか、おそらく暗号化されたデータを得ることです(ここで使用できる特定の暗号化は何ですか?)。セキュリティを守るための他の方法はありますか?

    • 述べたように、SSLはオプションですが、あなたは顧客サービスを実行している同じハードウェア上で暗号化する場合には、あなたのサービスに大きなパフォーマンスヒットであることを理解。これらの行に沿ったオプションの1つは、ハードウェアでSSLを実装する市販のロードバランサを使用することです。そのロードバランサは暗号化されていないソケットをTCPサービスファームに転送します。
    • 場合によっては、IPSecネットワークレベルの暗号化を使用できます。多くの場合、これは別のネットワークハードウェアソリューションです。通常、クライアントは自分のPC上にあるIPSecアプリケーションをダウンロードします...クライアントとIPSec終端ポイント間を暗号化するIPSecサーバーに接続します。
    • SSHポート転送によるトンネリング)
    • tcpcryptは将来の技術としては興味深いようですが、今はどの程度成熟しているのか分かりません。

    満足できる高可用性の要件もあります。私はそれをどのように扱うのですか?ここに冗長性を持たせるにはどうすればいいですか?

    多くのことは、可用性の高さと、必要なリカバリタイミングの種類によって異なります。高レベルでは、いくつかのオプションがあります。

    • クライアントからソケットへのマッピングの永続性が不要な場合は、DNSベースのHAが機能します。 DNSを使用する場合は、一般的なDNS Aレコードのタイムアウトを受け入れる必要があります(通常、人々は〜5分/ 300秒未満にはなりません)。これはまた、複数のサイト間でデータベースを同期する方法を見つけることを前提としています。
    • ロードバランサソリューション。バックエンドデータベースの同期に関する同じ問題

    HAを実行するには、これらのサービスを実装する実績のあるコンサルタントを雇うことをお勧めします(この種のリソースがない場合は-家)。

  • +0

    このような精巧な答えマイクのおかげで、その本当に便利です。ロードバランサもフェールオーバーを行いますか?私はHAのためにロードバランシング+フェイルオーバーが重要な権利だと思っていますか?また、私が追加することを忘れたことの1つは、私たちのDBにもスケーラビリティとHA要件があることでした。どのようなアプローチを取るべきですか? DBの水平方向のスケーリングは理にかなっていますか?また、重要な疑念....私は、HAが構成のより多くであることを正しく理解しています;設計やコーディング中に気にする必要はありませんか? – aryann

    +0

    @aryannでは、ロードバランサはHA構成をサポートできますが、**高可用性**の意味にもよります。 2人の人がサービスのためにHAを要求することができ、それは両方に対して非常に異なることを意味することができます。 DB HAについては、DBベンダーに相談してください。それらのほとんどは何らかのマルチサイトレプリケーションをサポートしています。最後に、HAには設計、構成、および場合によってはソフトウェア要件が含まれます。私は15年のネットワーキングで多くの悪いHAデザインを見てきました。それが私が言う理由です:**あなたの環境と要件を知らない人からの無料のアドバイスに依存しないでHAコンサルタントを得る** –

    関連する問題