大型站点技术架构(七)--站点的可扩展性架构
?
大型站點技術架構(一)--大型站點架構演化
大型站點技術架構(二)--架構模式
大型站點技術架構(三)--架構核心要素
大型站點技術架構(四)--站點的高性能架構
大型站點技術架構(五)--站點高可用架構
大型站點技術架構(六)--站點的伸縮性架構
?
?
??????? 擴展性是指對現有系統影響最小的情況下,系統功能可持續擴展或提升的能力。
????????設計站點可擴展架構的核心思想是模塊化,并在此基礎上,減少模塊間的耦合性,提供模塊的復用性。模塊通過分布式部署,獨立的模塊部署在獨立的server上(集群)從物理上分離模塊之間的耦合關系。
??????? 模塊分布式部署以后詳細聚合方式主要有分布式消息隊列和分布式服務。
1、利用分布式消息隊列減少系統耦合性
??????? 假設模塊之間不存在直接調用,那么新增模塊或者改動模塊對其它模塊影響最小,這樣系統的可擴展性無疑更好一些。
??????? 事件驅動框架:通過在低耦合的模塊之間傳輸事件消息,以保持模塊的松散耦合,并借助事件消息的通信完畢模塊間合作,典型的架構就是生產者消費者模式。在大型站點架構中,詳細實現手段非常多,最經常使用的就是分布式消息隊列,例如以下圖所看到的:
?
?
?
?????? 消息隊列利用公布-訂閱模式工作,消息發送者公布消息,一個或者多個消息接收者訂閱消息。
?????? 因為消息發送者不須要等待消息接受者處理數據就能夠返回,系統具有更好的響應延遲;同一時候,在站點訪問高峰,消息能夠臨時存儲在消息隊列中等待處理,減輕數據庫等后端存儲的負載壓力。
?????? 眼下開源的和商業的分布式消息隊列產品有非常多,比較著名的有Apache ActiveMQ等,例如以下是分布式消息隊列的架構原理:
?
?
?
?
?2、利用分布式服務打造可復用的業務平臺
??????? 使用分布式服務是減少系統耦合性的還有一個重要手段。假設說分布式消息隊列通過消息對象分解系統耦合性,不同子系統處理同一個消息;那么分布式服務則通過接口分解系統耦合性,不同子系統通過同樣的接口描寫敘述進行服務調用。
??????? 大型站點分布式服務的需求與特點:
?眼下國內有較多成功實施案例的開源分布式服務框架是阿里巴巴的Dubbo,下圖是Dubbo的架構原理:
?
?
??????? 服務消費程序通過服務接口使用服務,而服務接口通過代理載入詳細服務,詳細服務能夠是本地的代碼模塊,也能夠是遠程的服務,因此相應用較小入侵;應用程序須要調用服務接口,服務框架依據配置自己主動調用本地或遠程實現。
??????? 服務框架client模塊通過服務注冊中心載入服務提供者列表(服務提供者啟動后主動向服務注冊中心注冊自己可提供的服務接口列表),查找須要的服務接口,并依據配置的負載均衡策略將服務調用請求發送到某臺服務提供者server。假設服務調用失敗,client模塊會自己主動從服務提供者列表選擇一個可提供相同服務的還有一臺server又一次請求服務,實現服務的自己主動失效轉移,保證高可用服務。
3、利用開放平臺建設站點生態圈
??????? 大型站點為了更好的服務自己的用戶,開放很多其它的增值服務,會把站點內部的服務封裝成一些調用接口開放出去,共外部的第三方開發人員使用,這個提供開放接口的平臺被稱作開放平臺。
??????? 開放平臺是站點內部和外部交互的接口,外部須要面對眾多的第三方開發人員,內部須要面對站點內諸多的業務服務。盡管每一個站點的業務場景和需求都不同樣,但開發平臺的架構設計卻大同小異,例如以下圖所看到的:
API接口:是開發平臺暴露給開發人員使用的一組API,其形式能夠是RESTfull,WebService,RPC等各種形式。
協議轉換:將各種API輸入轉換成內部服務能夠識別的形式,并將內部服務的返回封裝成API格式。
安全:除了一般應用須要的身份識別、權限控制等安全手段,開放平臺還須要分級的訪問帶寬限制,以保證資源被公平合理的使用。
審計:記錄第三方應用的訪問情況并進行監控、計費等。
路由:將開放平臺的各種訪問路由映射到詳細的內部的服務。
流程:將一組離散的服務組織成一個上下文相關的新服務,隱藏服務細節,提供統一接口供開發人員調用。
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的大型站点技术架构(七)--站点的可扩展性架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无限级分类
- 下一篇: 常见的基于node.js的web框架