1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 1464字,需瀏覽 3分鐘

         ·

        2021-07-06 11:35


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

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


        • 這三者都是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這樣的瀏覽器)就能通過(guò)HTTP協(xié)議獲取服務(wù)器上的網(wǎng)頁(yè)(HTML格式)、文檔(PDF格式)等資源。

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

        相比于Apache HTTP Server,Tomcat能動(dòng)態(tài)生成資源并返回給Client。Apache HTTP Server和Nginx都能將某一文本文件內(nèi)容通過(guò)HTTP協(xié)議返回到客戶端,但該文本文件的內(nèi)容固定——無(wú)論何時(shí)、任何人訪問(wèn)它得到的內(nèi)容都完全相同,即靜態(tài)資源
        動(dòng)態(tài)資源則在不同時(shí)間、客戶端訪問(wèn)得到的內(nèi)容不同。
        Apache HTTP Server和Nginx本身不支持生成動(dòng)態(tài)頁(yè)面,但可以通過(guò)其他模塊來(lái)支持(例如通過(guò)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)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美成人午夜免费视频A片明星 | 99热在线只有精品 | 欧美精品黑人成人另类视频 | 亚洲精品网站3d动漫之医院 | 操逼挺好我看看 | 学生妹A级片 | 大乳巨大videosboobs | 99久久婷婷国产综合精品电影 | 高辣视频 | 情人把舌头伸进我的下面 |