服務器等概念的基本介紹
1、web 服務器與應用服務器的區別
比如Web服務器包括Nginx,Apache,IIS等。而應用服務器包括WebLogic,JBoss等。應用服務器一般也支持HTTP協議,因此界限沒這么清晰。但是應用服務器的HTTP協議部分僅僅是支持,一般不會做特別優化,所以很少有見Tomcat直接暴露給外面,而是和Nginx、Apache等配合,只讓Tomcat處理JSP和Servlet部分。
通俗地說,web服務器一般指的是放置靜態頁面的服務器,而應用服務器放置的是比如是Java后臺程序。
3、Nginx和Apache和Tomcat的區別及優缺點
3.1、Apache
Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網頁,它是一個模塊化的服務器,可以運行在幾乎所有廣泛使用的計算機平臺上。其屬于應用服務器。
Apache支持模塊多,性能穩定,Apache本身是靜態解析,適合靜態HTML、圖片等,但可以通過擴展腳本、模塊等支持動態頁面等。
缺點:配置相對復雜,自身不支持動態頁面。
優點:相對于Tomcat服務器來說處理靜態文件是它的優勢,速度快。Apache是靜態解析,適合靜態HTML、圖片等。
(Apche可以支持PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache后臺支撐,將Java請求由Apache轉發給Tomcat處理。)
3.2、Tomcat
Tomcat 是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目。Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器。
Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴展,但是可以獨立于Apache運行。
缺點:可以說Tomcat 只能用做java服務器
優點:動態解析容器,處理動態請求,是編譯JSP/Servlet的容器。
3.3、Nginx
Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。其特點是占有內存少,并發能力強,易于開發,部署方便。Nginx 支持多語言通用服務器。
缺點:Nginx 只適合靜態和反向代理。
優點:負載均衡、反向代理、處理靜態文件優勢。Nginx 處理靜態請求的速度高于Apache。
Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到后臺交由Tomcat進行處理。
嚴格意義上來講,Apache和nginx應該叫做HTTP Server,也就是web服務器。而tomcat是一個Application Server是一個Servlet/JSO應用的容器,也就是應用服務器。
3.4、Tomcat結合Apache、Nginx實現高性能的web服務器
Tomcat雖然是一個servlet和jsp容器,但是它也是一個輕量級的web服務器。它既可以處理動態內容,也可以處理靜態內容。不過,tomcat的最大優勢在于處理動態請求,處理靜態內容的能力不如apache和nginx,并且經過測試發現,tomcat在高并發的場景下,其接受的最大并發連接數是有限制的,連接數過多會導致tomcat處于"僵死"狀態,因此,在這種情況下,我們可以利用nginx的高并發,低消耗的特點與tomcat一起使用。因此,tomcat與nginx、apache結合使用共有如下幾點原因:
1、tomcat處理html的能力不如Apache和nginx,tomcat處理靜態內容的速度不如apache和nginx。
2、tomcat接受的最大并發數有限,連接數過多,會導致tomcat處于"僵尸"狀態,對后續的連接失去響應,需要結合nginx一起使用。
通常情況下,tomcat與nginx、Apache結合使用,nginx、apache既可以提供web服務,也可以轉發動態請求至tomcat服務器上。但在一個高性能的站點上,通常nginx、apache只提供代理的功能,也就是轉發請求至tomcat服務器上,而對于靜態內容的響應,則由前端負載均衡器來轉發至專門的靜態服務器上進行處理。其架構類似于如下圖:

在這種架構中,當haproxy或nginx作為前端代理時,如果是靜態內容,如html、css等內容,則直接交給靜態服務器處理;如果請求的圖片等內容,則直接交給圖片服務器處理;如果請求的是動態內容,則交給tomcat服務器處理,不過在tomcat服務器上,同時運行著nginx服務器,此時的nginx作為靜態服務器,它不處理靜態請求,它的作用主要是接受請求,并將請求轉發給tomcat服務器的,除此之外,nginx沒有任何作用。
參考:https://blog.csdn.net/weixin_44221613/article/details/88410701
nginx+tomcat+redis架構搭建web應用:

4、集群、分布式和微服務
分布式:一個業務分拆多個子業務,部署在不同的服務器上。
微服務:微服務就是很小的服務,小到一個服務只對應一個單一的功能,只做一件事。這個服務可以單獨部署運行,服務之間可以通過rpc來相互交互,每個微服務都是由獨立的小團隊開發,測試,部署,上線,負責它的整個生命周期。
微服務是一種架構風格,一個大型復雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注于完成一件任務并很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。微服務與分布式的細微差別是,微服務的應用不一定是分散在多個服務器上,他也可以是同一個服務器。微服務相比分布式服務來說,它的粒度更小,服務之間耦合度更低,由于每個微服務都由獨立的小團隊負責,因此它敏捷性更高,分布式服務最后都會向微服務架構演化,這是一種趨勢。
集群:同一個業務,部署在多個服務器上。
集群模式是不同服務器部署同一套服務對外訪問,實現服務的負載均衡。區別集群的方式是根據部署多臺服務器業務是否相同。
分布式是指將不同的業務分布在不同的地方。而集群指的是將幾臺服務器集中在一起,實現同一業務。分布式中的每一個節點,都可以做集群。而集群并不一定就是分布式的。
分布式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務就不可訪問了。集群,有一個組織性,一臺服務器垮了,其它的服務器可以頂上來。
好的設計應該是分布式和集群的結合,先分布式再集群。具體實現就是業務拆分成很多子業務,然后針對每個子業務進行集群部署,這樣每個子業務如果出了問題,整個系統完全不會受影響。
參考:http://www.rzrgm.cn/zhy-1992/p/9233789.html、https://www.zhihu.com/question/65502802、https://blog.csdn.net/qq_37788067/article/details/79250623
5、DB(數據庫)、DW(數據倉庫)、ODS(操作性數據)、DM(數據集市)

5.1、DB(數據庫)
DB(數據庫),也就是我們常說的數據庫,是現有的數據來源(也稱各個系統的元數據),可以分為mysql、SQL Server、文件日志等,為數據倉庫提供數據來源的一般存在于現有的業務系統之中。
- Extract,數據抽取,也就是把數據從數據源讀出來
- Transform,數據轉換,把原始數據轉換成期望的格式和維度。如果用在數據倉庫的場景下,Transform也包含數據清洗,清洗掉噪音數據
- Load 數據加載,把處理后的數據加載到目標處,比如數據倉庫
5.2、ODS(操作性數據)
ODS(Operational Data Store)操作性數據,是作為數據庫到數據倉庫的一種過渡,ODS的數據結構一般與數據來源保持一致,便于減少ETL的工作復雜性,而且ODS的數據周期一般比較短。ODS的數據最終流入DW
- ODS直接存放從業務抽取過來的數據,這些數據從結構和數據上與業務系統保持一致,降低了數據抽取的復雜性。
- 轉移一部分業務系統的細節查詢功能,因為ODS存放的數據與業務系統相同,原來有業務系統產生的報表,現在可以從ODS中產生。
- 不建議ODS保存相當長周期的數據,同樣ODS中的數據也盡量不做轉換,而是原封不動地與業務數據庫保持一致。
為什么要有一個ODS系統呢?ODS的作用如下:
- 在業務系統和數據倉庫之間形成一個隔離層。 一般的數據倉庫應用系統都具有非常復雜的數據來源,這些數據存放在不同的地理位置、不同的數據庫、不同的應用之中,從這些業務系統對數據進行抽取并不是一件 容易的事。因此,ODS用于存放從業務系統直接抽取出來的數據,這些數據從數據結構、數據之間的邏輯關系上都與業務系統基本保持一致,因此在抽取過程中極大降低了數據轉化的復雜性,而主要關注數據抽取的接口、數據量大小、抽取方式等方面的問題。
- 轉移一部分業務系統細節查詢的功能。在數據倉庫建立之前,大量的報表、分析是由業務系統直接支持的,在一些比較復雜的報表生成過程中,對業務系統的運行產生相當大的壓力。ODS的數據從粒度、組織方式等各個方面都保持了與業務系統的一致,那么原來由業務系統產生的報表、細節數據的查詢自然能夠從ODS中進行,從而降低業務系統的查詢壓力
-
完成數據倉庫中不能完成的一些功能。 一般來說,帶有ODS的數據倉庫體系結構中,DW層所存儲的數據都是進行匯總過的數據和運營指標,并不存儲每筆交易產生的細節數據,但是在某些特殊的應用中,可能需要對交易細節數據進行查詢,這時就需要把細節數據查詢的功能轉移到ODS來完成,而且ODS的數據模型按照面向主題的方式進行存儲,可以方便地支持多維分析等查詢功能。
5.3、DW(數據倉庫)
DW (Data Warehouse)數據倉庫,是數據的歸宿,這里保持著所有的從ODS到來的數據,并長期保存,而且這些數據不會被修改。
DW是一個很大的數據存儲集合,出于企業的分析性報告和決策支持目的而創建,對多樣的業務數據進行篩選與整合。它為企業提供一定的BI(商業智能)能力,指導業務流程改進、監視時間、成本、質量以及控制。
5.4、DM(數據集市)
- DM結構清晰,針對性強,擴展性好,因為DM僅僅是單對一個領域而建立,容易維護修改
- DM建設任務繁重,公司有眾多業務,每個業務單獨建立表
- DM的建立更多的消耗存儲空間,單獨一個DM可能數據量不大,但是企業所有領域都建立DM這個數據量就會增加多倍
可參考:https://www.zhihu.com/topic/20164367/hot

浙公網安備 33010602011771號