網站的可擴性展架構
擴充套件性(Extensibility) - 指對現有系統影響最小的情況下,系統功能可持續擴充套件或提升的能力。表現在系統基礎設施穩定不需要經常變更,應用之間較少依賴和耦合,對需求變更可以敏捷響應。它是系統架構設計層面的開閉原則(對擴充套件開放、對修改關閉),架構設計考慮未來功能擴充套件,當系統增加新功能時,不需要對現有系統的結構和程式碼進行修改。
伸縮性(Scalability) - 指系統能夠透過增加減少自身資源規模的方式增減自己計算處理事務的能力。如果這種增減是成比例的,就被稱作線性伸縮性。在網站架構中 ,通常指利用叢集的方式增加伺服器數量、提高系統的整體事務吞吐能力。
1. 構建可擴充套件的網站架構
低耦合的系統更容易擴充套件、複用。
設計網站可擴充套件架構的核心思想是模組化,並在此基礎上,降低模組間的耦合性,提高模組的複用性。
分層和分割不僅可以進行架構伸縮,也是模組化設計的重要手段,利用分層和分割的方式將軟體分割為若干個低耦合的獨立的元件模組,這些元件模組以訊息傳遞及依賴呼叫的方式聚合成一個完整的系統。
在大型網站中,這些模組透過分散式部署的方式,獨立的模組部署在獨立的伺服器上,從物理上分離模組間的耦合關係,進一步降低耦合性提高複用性。
2. 利用分散式訊息佇列降低系統耦合性
2.1. 事件驅動架構
事件驅動架構透過在低耦合的模組間傳輸事件訊息,以保持模組的鬆散耦合,並藉助事件訊息的通訊完成模組間合作。典型的事件驅動架構就是作業系統中常見的生產者消費者模式。在大型網站中,最常見的實現手段就是分散式訊息佇列。
2.2. 分散式訊息佇列
訊息生產者應用程式透過遠端訪問介面將訊息推送給訊息佇列伺服器,訊息佇列伺服器將訊息寫入本地記憶體佇列後立即返回成功響應給訊息生產者。訊息佇列伺服器根據訊息訂閱列表查詢訂閱該訊息的訊息消費者應用程式,將訊息佇列中的訊息按照先進先出(FIFO)的原則將訊息透過遠端通訊介面傳送給訊息消費者程式。
在伸縮性方面,由於訊息佇列伺服器上的資料可以看作是即時處理的,因此類似於無狀態的伺服器,伸縮性設計比較簡單。將新伺服器加入分散式訊息佇列叢集中,通知生產者伺服器更改訊息佇列伺服器列表即可。
在可用性方面,為了避免消費者程式處理緩慢,分散式訊息佇列伺服器記憶體空間不足造成的問題,如果記憶體佇列已滿,會將訊息寫入磁碟,訊息推送模組在將記憶體佇列訊息處理完成以後,將磁碟內容載入到記憶體佇列繼續處理。
3. 利用分散式服務打造可複用的業務平臺
分散式服務則透過介面分解系統耦合性,不同子系統透過相同的介面描述進行服務呼叫。
大型網站分散式服務的需求與特點:
- 負載均衡
- 失效轉移
- 高效的遠端通訊
- 整合異構系統
- 對應用最少侵入
- 版本管理
- 實時監控
4. 可擴充套件的資料結構
傳統的關係型資料庫為了保證關係運算的正確性,在設計資料庫表結構的時候,就需要指定表的 schema ——欄位名稱,資料型別等,並要遵循特定的設計正規化。這些規範帶來一個問題:難以面對需求變更帶來的挑戰,所以有人透過預先設計一些冗餘欄位來應對。
許多 NoSql 資料庫使用 ColumnFamily 設計來設計可擴充套件的資料結構。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917606/viewspace-2642997/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 大型網站技術架構(七)--網站的可擴充套件性架構網站架構套件
- 如何構建高擴充套件性網站?套件網站
- 大型網站的可伸縮性架構如何設計?網站架構
- Velocity China 2016 構建快速、可擴充套件的彈性網站大會套件網站
- 如何提高網站的可訪問性?網站
- ETL的可擴充套件性和可維護性套件
- 大型網站技術架構(六)--網站的伸縮性架構網站架構
- 可擴充套件性套件
- 開箱即用的網站可訪問性提升指南網站
- 網站架構的伸縮性設計網站架構
- 增強網站可訪問性的25種方法網站
- 10步大幅提升網站可訪問性網站
- [丁原]使用Mysql來搭建可擴充套件的SNS網站(淺談)MySql套件網站
- 構建高可用性、高效能和可擴充套件的Zabbix Server架構套件Server架構
- 可擴充套件性筆記一套件筆記
- 使用 CSS perfer-* 規範,提升網站的可訪問性與健壯性CSS網站
- 《高擴充套件性網站的50條原則》編輯小記套件網站
- mixi.jp:使用開源軟體搭建的可擴充套件SNS網站套件網站
- 教你 4 步搭建彈性可擴充套件的 WebAPI套件WebAPI
- 電商網站的安全性網站
- 構建可擴充套件的有態服務套件
- 構建可擴充套件的應用(一) (轉)套件
- 可擴充套件性對物聯網管理系統有哪些影響?套件
- 《高擴充套件性網站的50條原則》第1章有用連結套件網站
- 大型網站技術架構(八)--網站的安全架構網站架構
- blog-engine-07-gatsby 建極速網站和應用程式 基於React的最佳框架,具備效能、可擴充套件性和安全性。網站React框架套件
- 大型網站技術架構(四)--網站的高效能架構網站架構
- 谷歌的三大可擴充套件核心架構谷歌套件架構
- 簡要剖析:可擴充套件的微服務架構套件微服務架構
- 大型網站架構系列:電商網站架構案例(1)網站架構
- 大型網站架構系列:電商網站架構案例(2)網站架構
- 大型網站架構系列:電商網站架構案例(3)網站架構
- 資料系統的基石:可靠性、可擴充套件性和可維護性+資料儲存與檢索的模型套件模型
- python網站的結構Python網站
- 網站製作前如何規劃網站的結構?網站
- 聊聊如何讓你的業務程式碼具有可擴充套件性套件
- 軟體可擴充套件性:來自星巴克的經驗套件
- 什麼是網站改版?網站改版的必要性介紹網站