Webフルスタックエンジニアになるのは難しいですか?最も難しいサーバーアーキテクチャについては以上です

I.はじめに

Web開発は常にプログラマーに人気のある開発の方向性であり、特にフルスタックエンジニアは非常に高給です。最近、多くの友人からWeb開発について質問がありました。最も一般的なのは、「開発は難しいですか?」と「学習」です。 「Web開発が仕事を見つけるのに適した言語」。

長年オフラインでWeb開発を教えてきた教師として、今日は比較的わかりやすい方法でWeb開発の最も重要なこと、つまりサーバーアーキテクチャの原則を説明します。この入門的な説明。すべては本質に依存します。

古いルールでは、まず技術的な知識のポイントについて話し、次に収集した乾物を提供します。あなたが困っている人を助けることができることを願っています。


2つ目は、サーバーフレームワークの原理とテクノロジーです。

まず、Web開発用のサーバーフレームワークの概略図を見てみましょう。ここから理解し始めます。

とりあえず、内部のセクションの詳細な分析は行いません。この記事では後で詳しく説明します。まず、Web開発のサーバーフレームワークの原則を整理しましょう。

図の白い矢印から、サーバーの応答プロセスは大きく2つのプロセスに分割できることがわかります。

データ処理のリクエスト:クライアント→ウェブサーバー→ビジネスサーバー→キャッシュサーバー→データベース

データプロセスを返す:データベース→キャッシュサーバー→ビジネスサーバー→ウェブサーバー→クライアント

たとえば、Wang Ermaziという名前の学生が、コンピューターで英語のテストバンド4のスコアを確認したいと考えています。このとき、コンピューターのクエリページにログインすると、クライアントにいます。クライアントに個人情報を入力した後、クエリボタンをクリックすると、クライアントはWang ErmaziのデータリクエストをWebサーバーに送信し始めました。Webサーバーはビジネスサーバーにキャッシュサーバーを確認して処理するように指示し、キャッシュサーバーはWangErmaziを取得しました。データはデータベースに送られ、データが取得されます。

データベースがWangErmaziのデータを取得した後、すぐにキャッシュサーバーに通知し、キャッシュサーバーが実行されてビジネスサーバーに通知しました。ビジネスサーバーはWang ErmaziのデータをWebサーバーに渡し、Webサーバーは手を振った。 Wang Ermaziのデータを提示しました。WangErmaziがデータを見ると、「XX、もう一度試験をやり直さなければなりません」と呪うかもしれません。

このプロセスはまさにそのようなプロセスです。走り回るのは面倒に思えますが、面倒ではありません。コンピューターは毎分数千万のWangErポックを処理できます。


3つ目は、サーバーの各セクションについて説明する

(1)クライアント

現在、Web開発の主なクライアントタイプは、IOS、Android、PC(コンピューター)、モバイル(携帯電話など)の4種類のクライアントですが、あまりお話ししませんが、一般的に、すべてのユーザーのインターフェースはクライアントです。 。ユーザーが表示できるように、写真、テキスト、ビデオなどのデータを提示するため。

 

(2つ)Webサーバー

Webサーバーには、負荷分散と静的リソースサーバーの2つの主要な機能があります。

 

(1)負荷分散

負荷分散とは何ですか?最初に写真を見てみましょう:

これは最も単純なサーバーアーキテクチャであり、Webサーバーはなく、クライアント、ビジネスサーバー、およびデータベースのみで構成されています。データ量が少ない場合は、正常に実行できます。

ビジネスサーバーが5000のクライアント訪問をサポートできる場合、5000を超えるデバイスの訪問がなければ問題ありませんが、5000のクライアント訪問を超えるとどうなりますか?残りの方法は2つだけです。1つは、開発言語のパフォーマンスを含む開発言語を変更してパフォーマンスを向上させるためにビジネスサーバーをリファクタリングすることです。これについては後で説明します。もう1つは、ビジネスの数を増やすことです。多数のユーザーを確保するためのサーバー通常のアクセス、負荷容量の増加、これもより一般的に使用される方法です。

したがって、問題は、ビジネスサーバーの数を増やすことですが、それらはすべて同じように「見え」、クライアントは非常に落ち込んでいます。どのサーバーにアクセスする必要がありますか?

したがって、Webサーバーは、割り当てを調整し、クライアントがアクセスするビジネスサーバーを割り当て、リソースを合理的に割り当てて、クライアントが特定のビジネスサーバーに均一にアクセスし、負荷がコアを超えないようにする必要があります。これが負荷です。 Webサーバーのバランシング機能。

(2)静的リソースサーバー

すべてのデータ要求がデータベースにアクセスする必要があるわけではありません。クライアントからデータベースまで段階的に実行してデータを要求し、動的データ要求を返すことを前述しました。一部のデータはWebサーバーに保存され、データベースにアクセスしなくてもデータをユーザーが取得できます。静的リクエストと呼ばれます。

たとえば、一部のWebページで頻繁に変更されないテキスト、画像、ビデオなどは、基本的に特定の場所に固定されて表示され、開発者は調整しないと更新されません。静かにそこにとどまり、ページに入ったときに表示します。その後、データはデータベースなしでWebサーバーに保存されるため、クライアントにすばやく表示できます。

 

(3)ビジネスサーバー

ビジネスサーバーの主な機能は、データの受け入れ、データの処理(クエリ、書き込み)、およびデータの返送です。

(1)合意

現在、サーバーのデータ送信と処理は、主にhttp / httpsとソケット要求の2つのプロトコルに従います。httpプロトコルはアプリケーション層に属し、ソケットは比較的ネイティブです。これはいわゆるTCP / IP層であり、ネットワーク層に属します。これら2つの詳細については説明しませんが、この側面で学習し​​ます。

(2)開発言語

サーバーの開発言語は競合していると見なすことができ、C、C ++、Java、PHP、Python、Ruby、およびその他の言語を使用して開発できますが、パフォーマンスとコストパフォーマンスの点でまだ違いがあります。

現在、JavaとPHPがサーバーで最も人気のある言語です。なぜですか?第1に、PHPは比較的単純で、簡単に開始できます。第2に、Javaは大規模なチームコラボレーションで開発し、モジュールにパッケージ化して、コードを再利用できます。

しかし、まだそのような傾向があります。サーバー開発にC / C ++とPythonを使用する企業が増えています。なぜですか?

多くのサーバー開発の開発期間はかなり前、10年または10年以上前であるため、当時、同社は都市を迅速に征服するために、最初に事業を開始し、開発サイクルの短い言語を選択しました負荷は限られていますが、ハードウェアを使用してそれを補うことができます。ただし、サーバーの負荷パフォーマンスを補うためにハードウェアを使用している場合は、携帯電話やコンピューターの数が増え、クライアントの数が増えるにつれて、それは多くの問題に直面するでしょう。

たとえば、アリは電気代の問題に直面しました。マシンをオンにしておく必要があります。アリの取引量が増えるにつれて、ハードウェアが毎日消費する電気代は頭痛の種です。昼夜を問わず燃やすと、お金が燃えるだけです。 、電気代だけでも会社の年間費用の10〜30%を占めているのですが、どうしたらいいですか?そうすれば、サーバーの開発から始めて、より高性能な言語を選択してサーバーを再構築するだけで、パフォーマンスが向上します。一部のサーバーを再構築すると、1台のサーバーのパフォーマンスを10倍に高めることができます。

したがって、機械語C / C ++は、強力なエンタープライズ開発サーバーの最初の選択肢になり、C / C ++が古くなることはありません。

中小企業の場合、開発サーバーにC / C ++を使用することはお勧めしません。パフォーマンスは高いものの、開発が難しく、市場でC / C ++を本当に理解しているプログラマーが少ないため、支払われる給与は当然高いです。開発するスクリプト言語を選択して、最初にビジネスを実行することができます。ボトルネックに達したとき、会社も安定した財政的支援を持っていると思います。現時点では、サーバーを再構築する方が適切です。

個人的には、中小企業のサーバー開発にPythonを使用することをお勧めしますが、他の言語を使用しないのはなぜですか?

まず第一に、Pythonは、少量のコード、簡潔な構文、明確なロジックを備えたオブジェクト指向のスクリプト言語です。美しいコードとチーム開発の観点から、PHPはPythonほど良くありません。Javaは優れていますが、重いです。 C言語は100行のコードを必要とするため、Javaは約50行ですが、Pythonは10行しか必要としません。

個人的には、Rubyをサーバーとして使用することはお勧めしません。1つはRubyが愛国心を持って日本人によって作られたものであるため、もう1つはRubyが魔法の言語であるためです。それはどういう意味ですか?つまり、あなたはシンボルを書いたり、指示を書いたりしましたが、彼は後ろであなたのためにたくさんのことをしました。あなたはこのことの底を見ることができません。論理は明確ではありません。ただ気軽に書いてください。それはたとえば、あなたはその特別な機能のいくつかに従います。シンボル、それはあなたにたくさんのことをもたらすでしょう。この種の魔法の言語はチーム開発には適していません。チーム開発では、レベルが異なり、魔法の文法を習得している人もいれば、習得していない人もいます。また、チーム開発には適していません。

 

(4)データベースとキャッシュサーバー

この記事を注意深く読んだ友人は、以前にサーバーアーキテクチャの最も単純なバージョンについて話したことがあることに気付くかもしれません。キャッシュサーバーがなくても正常に実行できます。問題は、ビジネスサーバーがデータベースに直接アクセスして検索する必要があることです。それ。なぜキャッシュサーバーを追加するのですか?

これは実際には、データベースの負荷を軽減し、クライアントのエクスペリエンスを向上させるためです。キャッシュサーバーはキャッシュ領域に相当し、データをキャッシュできます。

たとえば、データベースの読み取り速度が4000回/秒の場合、この時点でデータベースにアクセスするための10,000のデータオンライン要求があるが、データベースが1秒間非常にビジーであり、ビジーすぎる場合、クライアントは側は待たなければなりません。、データベースがクライアントが必要とするデータを提供するのに2秒以上かかります。それが100,000、100万、または1,000万の場合はどうなりますか?20秒、200秒、2000秒待ちますか?この種のユーザーエクスペリエンスは悪いですか?

そのため、頻繁に使用する情報をキャッシュできるキャッシュサーバーが追加され、読み取り速度(インターネットにアクセスしてキャッシュとメモリの速度差を確認できる速度)が速くなり、クライアントが再度要求すると、データベースにアクセスする必要はありません。キャッシュサーバーのデータを直接取得するだけです。

データストレージに関しては、より高度な分散ファイルストレージシステムがあり、Aliが採用したTDFSやAmazonのGDFSなどの従来のデータベースの欠点も解決します。これは比較的ハイエンドのテクノロジーです。機会があればまた、見つけることができます。

Web開発のサーバーアーキテクチャの原則は誰にとっても完成しています。原則から理解するのはそれほど難しいことではありません。Web開発を行うのに適した言語を選択すると、半分の労力で結果が2倍になります。特に、開発用のPythonです。多くの人がフロントエンドとバックエンドの両方を持っていますが、そのようなフルスタックエンジニアは市場で非常に人気があるため、それを行うことができます。


親愛なる友人、特にXiaobaiのPythonエントリの場合、私のネットワークディスクデータはますます山積みになっています。もう必要ありません。次に、それを共有し、必要に応じて削除します。

 

必要に応じて、アシスタントのWeChatアカウント(pykf20)を追加できます。彼女にはもっと時間があります。彼女があなたの意図を知り、できるだけ早く物事を提供できるように、「受信情報」に注意してください。写真をよく見てください。未満:

 

 

おすすめ

転載: blog.csdn.net/zhiguigu/article/details/114129995
おすすめ