第一份工作在山西三友和公司,目前是第二天上班,還未被工作支配,問到公司的jdk是1.6,服務器使用的是jetty,所以來學習記錄一下。
一、服務器
服務器,是提供計算服務的設備。在網絡環境下,根據服務器提供的服務類型不同,分為文件服務器,數據庫服務器,應用程序服務器,WEB服務器等。
1.1 web服務器
Web服務器是可以向發出請求的瀏覽器提供文檔的程序。
1、服務器是一種被動程序:只有當Internet上運行在其他計算機中的瀏覽器發出請求時,服務器才會響應。
2、Internet上的服務器也稱為Web服務器,是一台在Internet上具有獨立IP地址的計算機,可以向Internet上的客戶機提供WWW、Email和FTP等各種Internet服務。
Web服務器的內容:
1、應用層使用HTTP協議。
2、HTML文檔格式。
3、瀏覽器統一資源定位器(URL)。
1.1.1 常用web服務器
最常用的Web服務器是Apache和Microsoft的Internet信息服務器(Internet Information Server,ⅡS)。這里簡單介紹一下Apache。
Apache是世界使用排名第一的web服務器軟件。他可以運行在幾乎所有廣泛使用的計算機平台上(跨平台性、安全性)。它快速、可靠並且可通過簡單地API擴充,將Perl/Python等解釋器編譯到服務器中。Apache HTTP服務器是一個模塊化的服務器,源於NCSAhttpd服務器,現在是世界使用排名第一的Web服務器軟件。
Apache HTTP Server和Nginx都能夠將某一個固定內容的文本文件的內容通過HTTP協議返回到客戶端,我們將這樣固定內容的資源(無論何時、任何人訪問它得到的內容都是完全相同的資源)稱之為靜態資源。
優點:
1、相對於Tomcat來說,Apache處理靜態文件速度快。
2、apache的 rewrite 比nginx 的強大 。
3、Apache性能穩定。
缺點:
1、屬於老牌重量級web服務器(重量級主要是在軟件包的大小上比較大,軟件的耦合度大)。
2、速度、性能不及其他輕量級web服務器,並且消費內存較高。
3、使用傳統的select模型,比較穩定的Prefork模式為多進程模式,需要經常派生子進程。所以消耗的cpu等服務器資源比較大。
4、配置相對復雜,自身不支持動態頁面,不適合高並發場景。
輕量級和重量級服務器的理解:
重量級:對於每知個請求會用一個進程去進行服務,進程非常占資源 ,當並發量大的時候,就道需要等額的進程,導致的是高內存占用和CPU占用 。
輕量級:原理是當鏈接的狀態發生改變的時候,呼叫事件分發器來處理鏈接變化;由於http請求大部分時間都是在等待,所以只需要一個進程就可容以同時處理大量鏈接。
1.2 應用程序服務器
應用服務器是指通過各種協議把商業邏輯曝露給客戶端的程序。它提供了訪問商業邏輯的途徑供客戶端應用程序使用。應用服務器使用此商業邏輯就像調用對象的一個方法一樣。
1.2.1 Tomcat服務器
Tomcat 服務器是一個免費、開源的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於初學者來說,可以這樣認為,當在一台機器上配置好Apache服務器,可利用它響應HTML頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。獨立的Servlet容器是Tomcat的默認模式,但是它也具有處理HTML的能力,但他對於HTML的處理不如Apache服務器。
Tomcat也可以認為是HTTP服務器,但通常它仍然會和Nginx配合在一起使用:
動靜態資源分離——運用Nginx的反向代理功能分發請求:所有動態資源的請求交給Tomcat,而靜態資源的請求(例如圖片、視頻、CSS、JavaScript文件等)則直接由Nginx返回到瀏覽器,這樣能大大減輕Tomcat的壓力。
負載均衡——當業務壓力增大時,可能一個Tomcat的實例不足以處理,那么這時可以啟動多個Tomcat實例進行水平擴展,而Nginx的負載均衡功能可以把請求通過算法分發到各個不同的實例進行處理。
優點:
1、Tomcat是開源的Web服務器,經過長時間的發展,性能、穩定性等方面都非常好。
2、Tomcat是開源免費、功能強大易用的
3、與Apache HTTP Server相比,Tomcat能夠動態的生成資源並返回到客戶端。
缺點:
1、在靜態頁面處理能力上,Tomcat不如Apache。
1.2.2 jetty
Jetty 是一個開源的servlet容器,基於Java的web容器,為JSP和servlet提供運行環境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式發布。開發人員可以將Jetty容器實例化成一個對象,可以迅速為一些獨立運行(stand-alone)的Java應用提供網絡和web連接。
優點:
1、Jetty可作為一個嵌入式服務器,即:如可以在應用中加入Jetty的JAR文件,應用便可以在代碼中對外提供Web服務。
2、相對於Tomcat而言,Jetty更輕量級
3、Jetty 可以同時處理大量連接而且可以長時間保持這些連接。例如像一些 web 聊天應用非常適合用 Jetty 做服務器,像淘寶的 web 旺旺就是用 Jetty 作為 Servlet 引擎。
缺點:
1、在處理少數非常繁忙的連接上沒有Tomcat強,也就是說連接的生命周期如果短的話,Tomcat 的總體性能更高
1.2.3 Nginx
Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx也是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。
Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到后台交由Tomcat進行處理。
優點:
1、輕量級,高性能http和反向代理服務器。
2、高並發連接達到2-4萬個,內存、cpu等系統資源消耗低。Rewrite重寫規則(根據域名,URL的不同將HTTP請求分到不同的后端服務器群組),內置的健康檢查功能(Nginx Proxy 后端的某台web服務器宕機也不會影響前端訪問),節省帶寬(支持GZIP壓縮,可以添加瀏覽器本地緩存的Header頭)。
3、比apache占用更少的內存及資源
4、 Nginx 靜態處理性能比 Apache 高 3倍以上
5、安裝非常簡單 , 配置文件非常簡潔(還能夠支持perl語法)
缺點:
1、nginx處理動態請求雞肋般動態請求要apache去做nginx只適合靜態和反向
2、rewrite頻繁不如Apache
1.2.4 Nginx與Apache比較
nginx相對於apache的優點
1、輕量級,同樣起web 服務,比apache占用更少的內存及資源
2、抗並發,nginx 處理請求是是異步的,多個連接(萬級別)可以對應一個進程, 而apache是同步多進程模型,一個連接對應一個進程,在高並發下nginx 能保持低資源低消耗高性能。
3、Nginx適合做前端服務器,負載性能很好,本身就是一個反向代理服務器
4、Nginx 靜態處理性能比 Apache 高 3倍以上 ,耗費內存少
5、安裝簡單 ,Nginx 配置簡潔(還能夠支持perl語法),Apache 復雜
6、高度模塊化的設計,編寫模塊相對簡單
7、社區活躍,各種高性能模塊出品迅速
apache 相對於nginx 的優點:
1、apache的 rewrite 比nginx 的強大 ;
2、動態請求由apache去做,nginx只適合靜態和反向;
3、Apache 對 PHP 支持比較簡單,Nginx 需要配合其他后端用;
4、Apache 的組件比 Nginx 多 ,基本涵蓋所有應用;
5、性能穩定,而nginx相對bug較多。
1.2.5 Apache與Tomcat的比較
相同點:
1、兩者都是Apache組織開發的
2、兩者都有HTTP服務的功能
3、兩者都是免費的
不同點:
1、 Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等),Tomcat是Apache組織在符合Java EE的JSP、Servlet標准下開發的一個JSP服務器。
2、 Apache是一個Web服務器環境程序,啟用他可以作為Web服務器使用,不過只支持靜態網頁如(ASP,PHP,CGI,JSP)等動態網頁的就不行。如果要在Apache環境下運行JSP的話就需要一個解釋器來執行JSP網頁,而這個JSP解釋器就是Tomcat。
3、 Apache:側重於HTTPServer ,Tomcat:側重於Servlet引擎,如果以Standalone方式運行,功能上與Apache等效,支持JSP,但對靜態網頁不太理想;
4、 Apache是Web服務器,Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴展,但是可以獨立於Apache運行。 實際使用中Apache與Tomcat常常是整合使用
5、如果客戶端請求的是靜態頁面,則只需要Apache服務器響應請求。 如果客戶端請求動態頁面,則是Tomcat服務器響應請求。 因為JSP是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷。
可以理解Tomcat為Apache的一種擴展
1.2.6 Tomcat與Jetty的比較
相同點:
1、兩者都是一個輕量級的基於Java的web容器
2、兩者都是免費、開源的
不同點:
1、Jetty可作為一個嵌入式服務器,即:如可以在應用中加入Jetty的JAR文件,應用便可以在代碼中對外提供Web服務。
2、 相對於Tomcat而言,Jetty更輕量級
3、Jetty 可以同時處理大量連接而且可以長時間保持這些連接。例如像一些 web 聊天應用非常適合用 Jetty 做服務器,像淘寶的 web 旺旺就是用 Jetty 作為 Servlet 引擎。
4、在處理少數非常繁忙的連接上沒有Tomcat強,也就是說連接的生命周期如果短的話,Tomcat 的總體性能更高
原文鏈接:https://blog.csdn.net/weixin_37380784/java/article/details/88604463
原文鏈接:https://blog.csdn.net/u012002125/article/details/81605577