本篇內容來源於網絡
一、服務器技術架構的三大發展趨勢
一般而言,客戶需求決定了服務器的發展方向,從服務器的技術架構來看,目前整個服務器的技術架構的發展有三個大趨勢:縱向擴展架構、橫向擴展架構、超融合架構。
1、縱向架構(Scale-up)
Scale-up縱向擴展,主要是提升單台服務器的性能,包括高可靠、高可用性以及可擴展性,主要應用於高性能交易類業務。
主要用於關鍵數據庫、應用系統以及HPC高性能計算業務等。Scale-up架構廣泛應用與金融交易、電信計費、科學研究、氣象分析等領域。
2、橫向架構(Scale-out)
簡單說就是以數量取勝,Scale-out架構通常對單台服務器性能要求不高,主要通過更多的服務器協同完成任務。
這種架構具有高性能、低沉本、高密度、節能低碳和集群管理等特點,該架構通常應用於超大規模數據中心、大數據分析、公有雲、Web應用集群等業務場景。
3、超融合架構(Hyper-converged)
這種架構理念是將計算、存儲、網絡和統一管理放在一個盒子里。
通過一體化的設計、集成與優化,消除系統瓶頸,實現更好的整體系統效能。這種架構主要應用於高性能數據分析、數據庫整合、雲計算資源池平台、一體化數據中心等應用場景。
二、業務應用和服務器部署
1、早期應用部署
早期的服務器系統都是單機應用,在一台服務器上部署了所有應用軟件,這種服務器為一個或者幾個用戶提供計算或者業務服務,這種單機系統通常也被稱作工作站。
2、服務器C/S應用部署架構
在C\S架構中,通常會有一個集中共享的應用數據庫,而每個使用系統的員工會有自己的PC機,每個PC機安裝不同的應用程序,這些應用程序能夠操作使用或者共享應用數據庫,這樣能夠實現業務系統的協同操作、應用共享和統一保存。
3、服務器B/S應用部署架構
這是一種優化的架構,伴隨着因特網的興起而發展起來,PC客戶機只需要有一個標准的web瀏覽器即可與服務器交互。當用戶需要不同的業務時,只需要連接到不同的應用服務器即可。客戶端使用簡單、免維護。
三、服務器互聯網應用部署架構
采用的是是典型的B/S架構。因為互聯網應用通常具有用戶數量龐大、並發點擊負載高、海量大數據等特點。因此一直朝着開放、分布式的架構模式發展。如當今的百度、騰訊數據中心普遍采用大規模分布式的數據庫。Hadoop大數據集群、高密Scale-out水平擴展應用、搜索web集群接入的部署架構模式。
查看原文
四、服務器的基本框架結構原理
首先,基礎C/S結構的服務器框架,請求和相應流程:
這種框架結構滿足基礎的基礎的應用,客戶端的請求多了的時候,就會存在一個請求等待的問題。處理請求都會有一個閥值,請求數量超出閥值,剩下的的請求需要等之前的處理好了,才能再訪問數據庫。不能很好的處理高並發的情況。
第二種設計思路可以在應用服務器和數據庫服務器中間增加中間層DAL采用緩沖隊列和連接池設計。
DAL設計緩沖隊列,存儲等待的請求,在DAL中設計數據庫連接池,當數據庫連接池中有空閑連接時,從緩沖隊列中取出一個請求處理,這種方式並沒有提高訪問的速度,釋放了服務器的壓力,如果遇到高並發還是不能有效的處理。
第三種技術在此基礎上添加一個緩存服務器,當有請求到來時,應用服務器先從緩存中獲取數據,如果緩存中沒有相應的數據,在訪問數據庫取出數據,並更新緩存。
緩存的方式就需要考慮緩存同步的情況,緩存是具有時效的,超時緩存失效,有需要重新去數據庫查詢,查詢后再更新緩存,這樣實時性比較差。我們可以當有請求修改數據時,再更新緩存,並且將要修改的數據投入DAL層,當數據庫有空閑連接時,再持久化。
但是這種方式還是有一定的不足,大量的業務請求的時候,雖說可設計多個應用服務器,架設緩存服務器,完善中間層的緩沖隊列和數據庫連接池,但是大量復雜的讀寫操作數據庫,還是會造成數據庫操作阻塞的。
此時就需要將數據庫實現讀寫分離。對數據庫執行負載均衡。主流數據庫都有replication機制,采用replication機制可以實現負載均衡。中間層的寫數據庫操作投遞到master數據庫中,讀操作從slave數據庫中讀取,當master數據庫中數據被修改后,數據庫采用replication機制將數據同步給slave服務器。
同樣的道理,應用服務器也可以實現負載均衡,架設多個應用服務器,不同的請求分配給不同的應用服務器。讓應用服務器主動去請求任務服務器,主動獲取任務處理,如果應用服務器處於忙碌狀態就不需要請求新的任務,空閑的應用服務器會去請求任務服務器中的任務,這是最合理的負載均衡。如果所有應用服務器都處於忙碌狀態,那么任務服務器將任務緩存至自己的任務隊列,當應用服務器空閑時會來取任務。
任務服務器需要有多台,並且實現failover機制,當服務器出現故障的時候,其他服務器做為主任務服務器。
同時為保證數據庫的響應速度和處理效率,我們還可以對數據庫進行分區。
因為大部分情況下數據庫中各個表是關聯的,我們往往是將一個表的不同數據分配到各個數據庫,數據庫的表結構就是一樣的,只是存儲的用戶數據不同而已。
查看原文
(說明:內容來源於網絡,基本上都是博主學習時看到一些容易理解的知識點,如果想要查看原文,可以點擊鏈接查看)