pythonはwebバックエンドを開発してどのように高同時の構想を処理します

2503 ワード

1.高同時性とは


ハイコンカレント(High Concurrency)は、インターネット分散システムアーキテクチャの設計において考慮しなければならない要素の1つであり、通常、システムが多くの要求を同時に並列に処理できることを設計することによって保証することを意味する.
高同時相関でよく用いられるいくつかの指標には、応答時間(Response Time)、スループット(Throughput)、毎秒クエリ率QPS(Query Per Second)、同時ユーザ数などがある.
  • 応答時間:システムが要求に応答する時間.例えば、システムがHTTP要求を処理するには200 msが必要であり、この200 msがシステムの応答時間である.
  • スループット:単位時間当たりに処理されるリクエスト数.
  • QPS:毎秒応答要求数.インターネット分野では、この指標とスループットの区別はそれほど明らかではない.
  • 同時ユーザ数:システム機能を正常に使用しているユーザの数.例えば、オンライン量は、システムの同時ユーザ数をある程度表すインスタント通信システムである.

  • 2.システムの同時性を向上させる方法


    インターネットの分布式アーキテクチャの設計、システムの同時能力を高める方式、方法論の上で主に2種類あります:垂直拡張(Scale Up)と水平拡張(Scale Out).
    垂直拡張:スタンドアロンの処理能力を向上させます.垂直に拡張する方法には、次の2つがあります.
    (1)シングルマシンのハードウェア性能を強化する.例えば、CPUコア数を32コア、より良いネットワークカード、例えば万兆をアップグレードし、より良いハードディスク、例えばSSDをアップグレードし、ハードディスク容量を2 T拡張し、システムメモリを128 G拡張する.
    (2)シングル・マシン・アーキテクチャのパフォーマンスを向上させる.例えば、Cacheを使用してIO回数を減少させ、非同期を使用してシングル・サービスのスループットを増加させ、ロックされていないデータ構造を使用して応答時間を減少させる.
    インターネット業務の発展が非常に急速な初期に、予算が問題でなければ、「シングルマシンのハードウェア性能を強化する」方法でシステムの同時能力を向上させることを強く提案した.この段階で、会社の戦略は往々にして業務を発展させ、時間を奪うことであり、「シングルマシンのハードウェア性能を強化する」ことは往々にして最も速い方法である.
    シングルマシンのハードウェア性能を向上させるにしても、シングルマシンのアーキテクチャ性能を向上させるにしても、致命的な不足があります.シングルマシンの性能には常に限界があります.そのため、インターネット分散アーキテクチャの設計が高く、究極のソリューションはレベル拡張です.
    水平拡張:サーバ数を増やすだけで、システムのパフォーマンスを線形に拡張できます.水平拡張はシステムアーキテクチャ設計に要求があり、どのようにアーキテクチャの各層で水平拡張可能な設計を行うか、およびインターネット会社のアーキテクチャの各層でよく見られる水平拡張実践は、本論文で重点的に議論した内容である.

    3.python高同時性を解決するいくつかの方法

  • 1.HTMLページ静態化
  • 2.ピクチャサーバ分離(fastdfs軽量レベルの分散ファイルストレージシステムを使用しています)
  • 3.キャッシュの使用(キャッシュがメモリに存在する読み取りが速く、redisはメモリ型データがメモリキャッシュのデータベースとして適している)
  • .
  • 4.データベースクラスタ、読み書き分離.データベース・サーバの読み取りと書き込みの圧力を軽減します.
  • 5.負荷等化を用いる方法(簡単な構成はnginxで負荷等化を構成することができ、以下のコードを設定するだけで簡単な負荷等化
  • を実現することができる.
         upstream djangoserver {  
                     server 192.168.72.49:8080;  
                     server 192.168.72.49:8081;  
                  }   
    
  • 6.ミラーミラーリングは大規模なWebサイトでよく採用される性能とデータセキュリティを向上させる方法であり、ミラーリングの技術は異なるネットワークアクセス業者と地域によるユーザーアクセス速度の違いを解決することができ、例えばChinaNetとEduNetの違いは多くのWebサイトが教育ネットワーク内にミラーサイトを構築し、データをタイミング的に更新したり、リアルタイムで更新したりすることを促している.
  • 7.最新:CDN加速技術
  • 4.一般的なインターネット階層化アーキテクチャ


    一般的なインターネット分散アーキテクチャは、次のように分類されます.
    (1)クライアント層:典型的な呼び出し元はブラウザbrowserまたは携帯アプリアプリ
    (2)リバースエージェント層:システムエントリ、リバースエージェント
    (3)サイトアプリケーション層:コアアプリケーションロジックを実現しhtmlまたはjsonを返す
    (4)サービス層:サービス化が実現すれば,この層がある.
    (5)データ-キャッシュ層:キャッシュアクセスの高速化ストレージ
    (6)データ-データベース層:データベース固化データストレージ