架構系列一 大型專案架構演進過程

2021-08-20 14:22:15 字數 2627 閱讀 7299

作為一名程式設計師,單單只會coding是遠遠不夠的,想要走的更高更完,還必需懂coding之外的其他東西,如架構設計,系統分析等,今天就架構這塊,談談自己的理解

一、單機時代

單機時間的應用,都很簡單,乙個應用,一台伺服器,就搞定了,大至的架構設計如下圖

使用者通過internet訪問某個**,經過dns伺服器解析,找到對應的伺服器位址,請求伺服器,響應使用者請求的資訊

優點:

1.部署簡單

2.維護方便

3.成本低

缺點:

1.dns伺服器或應用伺服器宕機,整個**不可訪問

單機的系統架構,缺點很明顯,現在應該不會有哪個企業用這種部署方式,如果有,那只能說呵呵了。單機不好,那就多部署幾個應用嘛,用dns去擴充套件,因此就用了下面這種架構設計

二、基於dns的集群部署

先看圖,dns的集群部署如下

在dns伺服器上,配置了乙個網域名稱對應三個ip(和tomcat伺服器的ip對應),同時部署了三颱tomcat伺服器,這樣使用者傳送請求,經過dns解析,找到其中一台tomcat伺服器來響應使用者的請求,是不是也達到了「集群」的效果

優點:

1.部署簡單,只需要在dns伺服器上多加幾條對映關係,再擴充套件幾台應用伺服器就可以了

缺點:

1.如果有一台tomcat伺服器宕機,經過dns解析,正好解析到這台伺服器的ip,就無法給使用者提供響應

2.伺服器之間不能實現負載,可能會出現這種情況:一台伺服器處理很多使用者的請求,但是其他伺服器卻是空閒狀態

這種集群方式缺點也很明顯,tomcat應用伺服器之間不可以自動切換,如果一台伺服器宕機或負載太高,有沒有辦法可以讓伺服器之間自動切換,分擔負載呢,這必須有啊,請看下面這種基於nginx的集群部署

三、nginx集群部署

nginx集群部署的架構圖如下

這種架構,dns只配置一條記錄,該條記錄的ip,是統一對外的ip位址;同時增加了nginx做反向**,所有的請求,都必須經過nginx處理,根據權重負載等,nginx會自動計算,選擇一台伺服器處理使用者的請求

優點:

1.簡化dns配置

2.安全性,所有請求都經過nginx,避免使用者直接與應用伺服器直接通訊,nginx與應用伺服器之間使用內網位址通訊

3.如果某台應用伺服器宕機,nginx會自動將這台伺服器從集群中剔除,並指定另一台伺服器作為響應,宕機的伺服器恢復後,nginx會自動將它加入到集群中

缺點:

1.部署複雜

2.使用者session共享問題,例如目前使用tomcat1伺服器響應使用者請求,突然宕機了,這時nginx會切換到另乙個伺服器如tomcat2繼續響應使用者的操作,但是使用者已經登入,session資訊儲存在tomcat1伺服器上,tomcat2上沒有使用者的資訊,因此需要解決session共享的問題,只要是做集群,都會碰到這個問題

3.nginx萬一宕機,整個應用將無法正常工作

以上這種架構,已經可以滿足大部分小型企業的需求了,但難免nginx會有宕機的可能,如果宕機,整個應用就完完了,實際在企業中,老闆怎麼可能容忍因宕機應用無法正常運作的事情發生呢,請看下面的另一種架構

四、keepalived+nginx集群

在介紹之間,先看下keepalived是做什麼的

keepalived介紹:

keepalived起初是為lvs設計的,專門用來監控集群系統中各個服務節點的狀態,它根據tcp/ip參考模型的第

三、第四層、第五層交換機制檢測每個服務節點的狀態,如果某個伺服器節點出現異常,或者工作出現故障,keepalived將檢測到,並將出現的故障的伺服器節點從集群系統中剔除,這些工作全部是自動完成的,不需要人工干涉,需要人工完成的只是修復出現故障的服務節點

keepalived+nginx集群架構圖

這種集群架構,在nginx層,加了keepalived,都配置成相同的虛擬ip,保證nginx的高可用性,如果其中乙個nginx宕機,keepalived會自動檢測到,並切換另一台nginx處理使用者的請求

nginx號稱最大可抗併發數為10w,這不小了,已經可以滿足大部分中小企業的需求,當然,nginx畢竟也有上限,超出nginx上限怎麼辦呢?此時就得lvs/f5登場了,lvs是linux virtual server的簡稱,實施在作業系統層,f5效能比lvs更高,實施在硬體層面,當然,也比lvs昂貴

五、lvs+keepalived+nginx集群

架構系列一 大型專案架構演進過程

作為一名程式設計師,單單只會coding是遠遠不夠的,想要走的更高更完,還必需懂coding之外的其他東西,如架構設計,系統分析等,今天就架構這塊,談談自己的理解 單機時間的應用,都很簡單,乙個應用,一台伺服器,就搞定了,大至的架構設計如下圖 使用者通過internet訪問某個 經過dns伺服器解析...

阿里云云效如何保障雙11大型專案管理

每一年雙11對阿里巴巴來說都是乙個練兵場,一次更大規模技術創新 產品迭代 協同研發的練兵場。在2018年雙11的 練兵場上 阿里云云效 一站式企業協同研發平台支援著阿里巴巴眾多部門 百個核心產品 千個垂直專案 幾千人共同協作完成雙十一大促的準備工作。經過多年的雙11專案管理場景演練,雲效提供了3種典...

阿里云云效如何保障雙11大型專案管理

每一年雙11對阿里巴巴來說都是乙個練兵場,一次更大規模技術創新 產品迭代 協同研發的練兵場。在2018年雙11的 練兵場上 阿里云云效 一站式企業協同研發平台支援著阿里巴巴眾多部門 百個核心產品 千個垂直專案 幾千人共同協作完成雙十一大促的準備工作。經過多年的雙11專案管理場景演練,雲效提供了3種典...