服務器架構


本篇內容來源於網絡

一、服務器技術架構的三大發展趨勢

一般而言,客戶需求決定了服務器的發展方向,從服務器的技術架構來看,目前整個服務器的技術架構的發展有三個大趨勢:縱向擴展架構、橫向擴展架構、超融合架構。

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機制,當服務器出現故障的時候,其他服務器做為主任務服務器。

同時為保證數據庫的響應速度和處理效率,我們還可以對數據庫進行分區。


因為大部分情況下數據庫中各個表是關聯的,我們往往是將一個表的不同數據分配到各個數據庫,數據庫的表結構就是一樣的,只是存儲的用戶數據不同而已。
查看原文

(說明:內容來源於網絡,基本上都是博主學習時看到一些容易理解的知識點,如果想要查看原文,可以點擊鏈接查看)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM