0

私はC ++でチャットサーバー(ユーザー間のプライベートメッセージを許可する)を構築しています...ちょうど私にとっての挑戦であり、デッドポイントにぶつかりました...何が良いのかわかりません。

ところで、私は C++ の初心者です。だから私は挑戦したいのです...それで、他に最適な方法、マルチスレッドなどがある場合は...教えてください。

オプション A

ソケットの配列を持ち、すべての入力を読み取り (すべてのソケットをループ)、すべてのループ (1 秒のループだと思います) を読み取り、それを DB に格納します (ログが必要です)。その後、すべてのソケットで必要なものを送信するすべてのソケットを再度ループします。

長所:単一のプロセスが含まれます。開発が容易。 短所:スケーラビリティがほとんどなく、単一の障害が集中していると思います... つまり、20k ソケットでのパフォーマンスはどうですか?

オプション B

接続をリッスンする C++ アプリケーションがあります。接続が受信されると、そのソケットを処理するサブプロセスがフォークされます... ユーザーのすべての入力を読み取り、DB に保存します。そして、ループごとに DB からの必要なすべての出力をチェックして、ソケットに書き込みます。

長所:デーモンが十分に小さい場合、ソケットごとにプロセスを持つ方がスケーラブルである可能性があります。同時に、プロセスが失敗した場合、他のすべてのプロセスはオンラインのままになります。 短所:開発が難しい。各接続のプロセスを維持するには、リソースを消費しすぎる可能性があります。

どのオプションが最適だと思いますか? 他のアイデアや提案は大歓迎です:)

4

1 に答える 1