(追伸: 大手企業に面接に行ったとき、ひどい目に遭いました。戻って情報を探しましたが、この分野の情報はほとんどなく、まだ混乱していました。)
例:
1. 高い同時実行性と大量のトラフィック
2. 切断と再接続
3. データ量が多すぎてリクエストがタイムアウトする
4. プッシュされたテキスト ユーザーの同期およびその他の問題。
経験豊富な専門家が、トラフィック量が少ない場合の開発方法を共有してくれることを願っています。テスト用のサンプル、およびこの分野の学習方法と推奨書籍。
(私はバックエンドのクソ野郎で、経験は 1 年です。ご静聴と回答に感謝します) 以上です。
(追伸: 大手企業の面接に行ったとき、ひどい目に遭いました。戻って情報を探しましたが、この分野の情報はほとんどなく、まだ混乱していました。)
例:
1. 高い同時実行性と大量のトラフィック
2. 切断と再接続
3. データ量が多すぎてリクエストがタイムアウトする
4. プッシュされたテキスト ユーザーの同期およびその他の問題。
経験豊富な専門家が、トラフィック量が少ない場合の開発方法を共有してくれることを願っています。テスト用のサンプル、およびこの分野の学習方法と推奨書籍。
(私はバックエンドのクソ野郎で、経験は 1 年です。ご静聴と回答に感謝します) 以上です。
現在、面接官はこのような大げさな質問をしたがりますが、実際に操作する方法を知っている人はほとんどいません。テクニカル ディレクターでなければ、10 人の面接官にそれを実行する機会は与えられません。この問9は見せしめです。
私が使用したものについて話しましょう
1 まず第一に、何千万ものユーザーがいるかどうかは、プロジェクトの種類によって異なりますが、通常のプロジェクトにはユーザーアクティビティがまったくないため、1,000,000 レベルのユーザーは多くありません。
2 高同時実行性の定義: 同じ 1 秒あたりの IP リクエストの数。私の個人的な理解では、高い同時実行性とは 2 つの側面を指します。1 つはサービス、もう 1 つはプログラムのビジネス ロジックです。
サービス: apache、nginx + fastcgi
プログラミング: Web アプリケーションのボトルネックはデータベースにあるため、個人的にはこれが重要なポイントだと思います。ビジネス ロジックは、データベースを追加、削除、確認、および変更します。したがって、現在のリクエスト量が一定の基準に達すると、データベースが占有するメモリが増加し、テーブルがデッドロックになったり、データベースがクラッシュしたりする可能性があります。
この問題を解決するには: 1. まず、プログラムの入り口でログを書き込み、各リクエストのアドレスとパラメーターを記録する必要があります。 2 ログに基づいてどのリクエストのアクセス頻度が高すぎるかを分析します (すべてのリクエストが高頻度でアクセスすることは不可能です)。 3 アクセス頻度が高すぎるアドレスを特定し、対応するビジネス ロジックを分析し、コードと SQL ステートメントを最適化します。機能要件に従って実行してください。 適切なキャッシュ
データベースの側面: 1. 上記の分析結果に基づいて、頻繁な操作を必要とするテーブルが取得されます。そのほとんどはデータベースのクエリ操作です。 (一般的に頻繁に操作を行うテーブル:ユーザー情報テーブル、データ量の多い一般テーブル:財務記録テーブル、ユーザーログテーブル) 次に、業務ロジックに応じてテーブルを分割します。 1. ユーザー テーブルで頻繁にクエリされるフィールドを 1 つのテーブルに配置します。 2. ユーザーの統計情報と異常なデータを別のテーブルに配置します。 3 大量のデータを含むテーブルの場合は、1 つの財務レコード テーブルと 1 つのユーザー ログ テーブルを 1 か月または 1 週間など、期間を使用してテーブルを分割する方法もあります。アクティブなユーザー情報用のテーブルと非アクティブなユーザー用のテーブルが 1 つずつあり、たとえば、ユーザー ID の最初の桁が 1 のテーブル、2 のテーブルなど、10 個のテーブルが作成されます。
次に、読み取りと書き込みの分離を使用して、マスター/スレーブ ライブラリを確立します。もっと細かい方向で言いたいことはたくさんあります。しかし、一般の企業にとっては、これだけのユーザーがいるということは、企業にお金があるということなので、ハードウェアで改善できることはたくさんありますし、正社員を雇用することもできます。あなたはちょうど PHP の面接をしているところです。ログテーブルはありませんし、毎日の 1,000 万の増加については何もしていません。
3 このような人たちに脅迫されないで、次回会ったときに答えを暗唱してください。
もしかしたら、彼らの会社は採用活動を行っていないのかもしれませんが、ちょうどそのような問題に遭遇したばかりで、お金をかけたくなかったので、それを面接の質問にしたのです。 。 。