面接でよく聞かれる質問: とはTomcat と Apache の違いは何ですか?
では、違いは何でしょうか?
Tomcat の役割には統一された名前があります: Web コンテナ (Web コンテナ) 同様の Web コンテナには、Jetty、Resin などが含まれます。
なぜコンテナと呼ばれるのでしょうか?
ソフトウェア分野では、このようにモノのライフサイクル全体を扱う管理をコンテナと呼んでいます。 ここでの Tomcat は、サーブレットを作成する時期、一部の内部リソースを初期化する時期、リクエスト処理時に実行するメソッド、サーブレットを破棄する時期など、サーブレットのライフ サイクル全体 (LifeCycle) を担当します。まるで大きな親のようです。したがって、Spring の Ioc は Spring Bean のライフサイクル全体も管理するため、Ioc コンテナを通じて実装されるという話をよく耳にします。
振り返ってみると、Apache は何をしているのでしょうか?
Apache と同様に、Web サーバー (Web Server) と呼ばれる名前の種類もあります。この種の兄弟は、HTTP プロトコルのみを処理できます。たとえば、HTML や画像などの静的リソースをリクエストする場合、Web サーバー経由でリクエストを行うことができます。ただし、リクエストが JSP や PHP などに対するものである場合、この時点では Web サーバーはそれを処理できず、リクエストが JSP またはサーブレットに対するものであれば、処理のために適切な担当者にリクエストを転送することしかできません。適切な人は上記の Web コンテナです。同様の Web サーバーには、Apache、IIS、Nginx などがあります。
まとめると、この 2 つの違いは、Tomcat は動的リソース、サーブレット、JSP だけでなく静的リソースも処理できるのに対し、Apache は静的リソースのみを処理できるということです。 このインタビューの質問の変形は、「Web コンテナと Web サーバーの違いは何ですか?」です。あなたはすでに答えを知っていると思います。
現時点では、Tomcat でそれができるなら、なぜ Apache が必要なのかとあなたは間違いなく言うでしょう。
ねえ、この人は当時たくさんのことを学んでかなり上手でしたが、静的リソースを扱うのが特に得意ではありませんでした。仕立て屋が料理の仕方を知っていても、シェフほどプロフェッショナルではないのと同じです。
そのため、静的リソースを処理する場合、Tomcat の前に Apache などの Web サーバーを構成できます。これにより、静的リソースを効率的に処理できるだけでなく、一般的に使用される静的リソースをキャッシュすることもできます。負荷分散の目的も達成できます (もちろん、これには後で Web コンテナのクラスタリングも必要になります) 。
フォロー大歓迎です。