高い同時実行性は大量のトラフィックを表すことは誰もが知っています。高同時実行性システム設計の魅力は、膨大なトラフィックの影響に抵抗し、ユーザーに優れたエクスペリエンスを提供する独自の工夫で巧妙なソリューションを設計できることです。これらのソリューションはフローを操作できるようで、システム内のサービスとコンポーネントによってフローがよりスムーズに処理されます。
高同時性と大規模なトラフィックを処理する場合、同様の「ファイティングフラッド」ソリューションを採用し、Taobao APPの高同時実行システムの設計でも同じ考え方に従います。合計3つの方法があります。
- 規格外
- キャッシュ
- 非同期呼び出し
これらの3つの方法を理解したところで、同時実行性の高いシステム設計でシステムを開発するときに、これらすべての方法を使用する必要があるということですか?もちろん、システムの設計は常に進化しています。
ローマは1日で建てられなかったので、システムの設計も同様でした。大きさの異なるシステムにはさまざまな問題点があるため、焦点を当てるアーキテクチャの設計も異なります。すべてのシステムが数百万から数千万の同時トランザクションに従って設計されている場合、eコマースは淘宝網に従い、IMはすべてWeChatとQQを学習するため、これらのシステムの運命は失われます。では、どうやって学ぶのですか?
このドキュメントを整理するために90日間を費やしました。同時実行性の高いプロジェクトでの経験を組み合わせて、同時実行性が習得する必要のある知識と実用的なアイデアを体系的にまとめたいと思います。このドキュメントは7つの大きなモジュールに分かれています。読みやすさに影響を与えないように、カタログとコンテンツの一部はスクリーンショットの形式でここに表示され、簡単でなくて困っている友達を整理して収集します。転送してプライベートメッセージで返信してください[高同時性] !
以下のディレクトリをいくつか見てみましょう。
基本
- 高度な並行システム:一般的な設計方法は何ですか
- アーキテクチャの階層化:なぜこれを行う必要があるのですか?
- システム設計の目標(1):システムパフォーマンスを向上させる方法
- システム設計目標(2):システムはどのようにして高可用性を実現しますか?
- システム設計の目標(3):システムを簡単に拡張する方法
- 面接サイトの第1フェーズ:コンポーネントの実装の原則について尋ねられた場合、面接担当者は状況を難しくしていますか?
データベース記事
- プーリング技術:頻繁にデータベース接続を作成することによるパフォーマンスの損失を減らす方法は?
- データベース最適化計画(1):クエリ要求が増加したときにマスターとスレーブを分離する方法は?
- データベース最適化計画(2):書き込まれたデータの量が増加したときにデータベースとテーブルの分割を実装するにはどうすればよいですか?
- 発行者:サブデータベースとサブテーブルの後のIDのグローバルな一意性をどのように保証しますか?
- NoSQL:同時実行性の高いシナリオでデータベースとNoSQLはどのように相互補完しますか?
記事をキャッシュする
- キャッシュ:データベースがボトルネックになった後、動的データのクエリを高速化する方法は?
- キャッシュ使用状況(1):キャッシュの読み取りと書き込みの戦略を選択する方法
- キャッシュの姿勢(2):キャッシュはどのようにして高可用性を実現しますか?
- キャッシュ使用状況(3):キャッシュが侵入した場合はどうすればよいですか?
- CDN:静的リソースを加速する方法は?
メッセージキュー
- メッセージキュー:スパイク中に1秒あたり数万件の注文リクエストを処理する方法
- メッセージ配信:メッセージが一度だけ消費されるようにする方法?
- メッセージキュー:メッセージキューシステムでのメッセージの遅延を減らす方法は?
- 面接サイトの第2フェーズ:プロジェクトの経験について尋ねられたとき、面接担当者は正確に何を知りたいですか?
分散サービス
- システムアーキテクチャ:1秒あたり10,000リクエストのシステムはサービス指向ですか?
- マイクロサービスアーキテクチャ:マイクロサービスの後、システムアーキテクチャをどのように変換するか?
- RPCフレームワーク:100,000 QPS未満でミリ秒レベルのサービスコールを実装する方法
- レジストリ:分散システムに対処する方法?
- 分散トレース:数十の分散コンポーネントにわたる遅い要求をトラブルシューティングする方法?
- 負荷分散:システムの水平方向のスケーラビリティを向上させる方法は?
- APIゲートウェイを行う方法:システムのドア?
- マルチルーム展開:地域間分散システムをどのように実行するか?
- サービスメッシュ:サービスシステムのサービスガバナンスの詳細を保護する方法?
メンテナンス
- システムに目を向ける:サーバー側の監視を行う方法?
- アプリケーションのパフォーマンス管理:ユーザーエクスペリエンスをどのように監視する必要がありますか?
- ストレステスト:フルリンクのストレステストプラットフォームを設計する方法?
- 構成管理:何千もの構成アイテムを管理する方法は?
- ヒューズのダウングレード:非コアシステム障害の影響をシールドする方法
- フロー制御:並行性の高いシステムでフローをどのように操作しますか?
- インタビューサイトの第3フェーズ:技術面接の準備はどのように行いますか?
実際の戦闘
- カウントシステム設計(1):大量のデータに直面するカウンターをどのように実行しますか?
- カウントシステム設計(2):500,000 QPS未満の未読システムを設計する方法
- 情報フローの設計(1):一般的な情報フローシステムのプッシュモードを実行する方法
- 情報フローの設計(2):一般的な情報フローシステムのプルモードを行う方法
もちろん、スペースには限りがあり、カタログとコンテンツの一部のみが表示されます。さらにコンテンツが必要な場合は、プライベートメッセージ[高同時実行]で投稿して、無料で受け取ることができます。
今日の共有はこれで終わりです。役立つと思われる場合は、たくさん転送してから、「High Concurrency」にプライベートメッセージを送信して、無料で受信できるようにしてください。皆さんありがとうございます〜