<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一文看懂Tomcat、Nginx和Apache的區(qū)別

          共 1464字,需瀏覽 3分鐘

           ·

          2021-07-06 11:35


            點(diǎn)擊上方“JavaEdge”,關(guān)注公眾號(hào)

          設(shè)為“星標(biāo)”,好文章不錯(cuò)過!


          • 這三者都是web server,各自有什么特點(diǎn)?
          • 他們之間的區(qū)別是什么?
          • nginx 和 tomcat性能上有何異同?
          • tomcat用在Java后臺(tái)程序,難道不能用apache和nginx?

          題目中的Apache其實(shí)是Apache HTTP Server Project,和Nginx一樣都是開源的HTTP服務(wù)器軟件。
          HTTP服務(wù)器本質(zhì)上也是一種應(yīng)用程序——它通常運(yùn)行在服務(wù)器上,綁定服務(wù)器的IP地址并監(jiān)聽某個(gè)TCP端口,接收并處理HTTP請(qǐng)求,這樣客戶端(如Chrome這樣的瀏覽器)就能通過HTTP協(xié)議獲取服務(wù)器上的網(wǎng)頁(HTML格式)、文檔(PDF格式)等資源。

          強(qiáng)大的Java類庫也實(shí)現(xiàn)了簡(jiǎn)單的HTTP服務(wù)器供開發(fā)者使用:
          • HttpServer (Java HTTP Server )
          使用這種類庫能很容易的運(yùn)行一個(gè)HTTP服務(wù)器,它們都能通過綁定IP地址并監(jiān)聽TCP端口來提供HTTP服務(wù)。

          相比于Apache HTTP Server,Tomcat能動(dòng)態(tài)生成資源并返回給Client。Apache HTTP Server和Nginx都能將某一文本文件內(nèi)容通過HTTP協(xié)議返回到客戶端,但該文本文件的內(nèi)容固定——無論何時(shí)、任何人訪問它得到的內(nèi)容都完全相同,即靜態(tài)資源。
          動(dòng)態(tài)資源則在不同時(shí)間、客戶端訪問得到的內(nèi)容不同。
          Apache HTTP Server和Nginx本身不支持生成動(dòng)態(tài)頁面,但可以通過其他模塊來支持(例如通過Shell、PHP、Py腳本動(dòng)態(tài)生成內(nèi)容)。若想要使用Java程序動(dòng)態(tài)生成資源內(nèi)容,使用這類HTTP服務(wù)器就很難。Java Servlet及JSP可以讓Java程序也能處理HTTP請(qǐng)求并且返回內(nèi)容(由程序動(dòng)態(tài)控制)的能力,Tomcat正是支持運(yùn)行Servlet/JSP應(yīng)用程序的容器(Container):

          Tomcat運(yùn)行在JVM之上,和HTTP服務(wù)器一樣,綁定IP地址并監(jiān)聽TCP端口,而且:
          • 管理Servlet程序的生命周期
          • 將URL映射到指定Servlet進(jìn)行處理

          • 與Servlet程序合作處理HTTP請(qǐng)求
            根據(jù)HTTP請(qǐng)求生成HttpServletRequest對(duì)象并傳遞給Servlet進(jìn)行處理,將Servlet中的HttpServletResponse對(duì)象生成的內(nèi)容返回給瀏覽器

          雖然Tomcat也可認(rèn)為是HTTP服務(wù)器,但通常它仍和Nginx協(xié)作:
          • 動(dòng)靜態(tài)資源分離

            使用Nginx的反向代理分發(fā)請(qǐng)求:所有動(dòng)態(tài)資源的請(qǐng)求交給Tomcat,靜態(tài)資源的請(qǐng)求(例如圖片、CSS、JS文件等)直接由Nginx返回給瀏覽器

          • 負(fù)載均衡

            當(dāng)業(yè)務(wù)壓力增大時(shí),可能一個(gè)Tomcat的實(shí)例不足以處理,可啟動(dòng)多個(gè)Tomcat實(shí)例進(jìn)行水平擴(kuò)展,Nginx負(fù)責(zé)負(fù)載均衡,將請(qǐng)求分發(fā)到各個(gè)不同的實(shí)例進(jìn)行處理


          往期推薦


          擁抱Kubernetes,再見了Spring Cloud

          百度二面:一個(gè)線程OOM了,其它線程還能運(yùn)行嗎?

          這一次徹底搞懂JDK動(dòng)態(tài)代理

          Iterator迭代器到底是什么?


          目前交流群已有 800+人,旨在促進(jìn)技術(shù)交流,可關(guān)注公眾號(hào)添加筆者微信邀請(qǐng)進(jìn)群



          喜歡文章,點(diǎn)個(gè)“在看、點(diǎn)贊、分享”素質(zhì)三連支持一下~

          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩中文字 | 日韩一级免费的视频 | 操女人视频网站 | 欧美三级又粗又硬 | 天天草天天爽 |