1. 程式人生 > >大型網站技術架構(七)網站的可擴充套件性架構

大型網站技術架構(七)網站的可擴充套件性架構

 擴充套件性是指對現有系統影響最小的情況下,系統功能可持續擴充套件或提升的能力。

        設計網站可擴充套件架構的核心思想是模組化,並在此基礎上,降低模組間的耦合性,提供模組的複用性。模組通過分散式部署,獨立的模組部署在獨立的伺服器上(叢集)從物理上分離模組之間的耦合關係。

        模組分散式部署以後具體聚合方式主要有分散式訊息佇列和分散式服務

1、利用分散式訊息佇列降低系統耦合性

        如果模組之間不存在直接呼叫,那麼新增模組或者修改模組對其他模組影響最小,這樣系統的可擴充套件性無疑更好一些。

        事件驅動框架:通過在低耦合的模組之間傳輸事件訊息,以保持模組的鬆散耦合,並藉助事件訊息的通訊完成模組間合作,典型的架構就是生產者消費者模式

。在大型網站架構中,具體實現手段很多,最常用的就是分散式訊息佇列,如下圖所示:

       訊息佇列利用釋出-訂閱模式工作,訊息傳送者釋出訊息,一個或者多個訊息接收者訂閱訊息。

       由於訊息傳送者不需要等待訊息接受者處理資料就可以返回,系統具有更好的響應延遲;同時,在網站訪問高峰,訊息可以暫時儲存在訊息佇列中等待處理,減輕資料庫等後端儲存的負載壓力。

       目前開源的和商業的分散式訊息佇列產品有很多,比較著名的有Apache ActiveMQ等,如下是分散式訊息佇列的架構原理:

 2、利用分散式服務打造可複用的業務平臺

        使用分散式服務是降低系統耦合性的另一個重要手段。如果說分散式訊息佇列通過訊息物件分解系統耦合性,不同子系統處理同一個訊息;那麼分散式服務則通過介面分解系統耦合性,不同子系統通過相同的介面描述進行服務呼叫。

        大型網站分散式服務的需求與特點:

  1. 負載均衡
  2. 失效轉移
  3. 高效的遠端通訊
  4. 整合異構系統
  5. 對應用最小入侵
  6. 版本管理
  7. 實時監控

 目前國內有較多成功實施案例的開源分散式服務框架是阿里巴巴的Dubbo,下圖是Dubbo的架構原理:

        服務消費程式通過服務介面使用服務,而服務介面通過代理載入具體服務,具體服務可以是本地的程式碼模組,也可以是遠端的服務,因此對應用較小入侵;應用程式需要呼叫服務介面,服務框架根據配置自動呼叫本地或遠端實現。

        服務框架客戶端模組通過服務註冊中心載入服務提供者列表(服務提供者啟動後主動向服務註冊中心註冊自己可提供的服務介面列表),查詢需要的服務介面,並根據配置的負載均衡策略將服務呼叫請求傳送到某臺服務提供者伺服器。如果服務呼叫失敗,客戶端模組會自動從服務提供者列表選擇一個可提供同樣服務的另一臺伺服器重新請求服務,實現服務的自動失效轉移,保證高可用服務。

3、利用開放平臺建設網站生態圈

        大型網站為了更好的服務自己的使用者,開放更多的增值服務,會把網站內部的服務封裝成一些呼叫介面開放出去,共外部的第三方開發者使用,這個提供開放介面的平臺被稱作開放平臺。

        開放平臺是網站內部和外部互動的介面,外部需要面對眾多的第三方開發者,內部需要面對網站內諸多的業務服務。雖然每個網站的業務場景和需求都不相同,但開發平臺的架構設計卻大同小異,如下圖所示:

API介面:是開發平臺暴露給開發者使用的一組API,其形式可以是RESTfull,WebService,RPC等各種形式。

協議轉換:將各種API輸入轉換成內部服務可以識別的形式,並將內部服務的返回封裝成API格式。

安全:除了一般應用需要的身份識別、許可權控制等安全手段,開放平臺還需要分級的訪問頻寬限制,以保證資源被公平合理的使用。

審計:記錄第三方應用的訪問情況並進行監控、計費等。

路由:將開放平臺的各種訪問路由對映到具體的內部的服務。

流程:將一組離散的服務組織成一個上下文相關的新服務,隱藏服務細節,提供統一介面供開發者呼叫。

相關推薦

軟件架構設計學習總結13大型網站技術架構網站擴展性架構

開放 擴展 修改 restfu 消息發送 封裝 nts 進行 可擴展性 擴展性是指對現有系統影響最小的情況下,系統功能可持續擴展或提升的能力。 設計網站可擴展架構的核心思想是模塊化,並在此基礎上,降低模塊間的耦合性,提供模塊的復用性。模塊通過分布式部署,獨立

大型網站技術架構網站擴充套件架構

 擴充套件性是指對現有系統影響最小的情況下,系統功能可持續擴充套件或提升的能力。         設計網站可擴充套件架構的核心思想是模組化,並在此基礎上,降低模組間的耦合性,提供模組的複用性。模組通過分散式部署,獨立的模組部署在獨立的伺服器上(叢集)從物理上分離模組之間

軟件架構設計學習總結14大型網站技術架構網站的安全架構

根據 知情 提交 pac 請求參數 用途 text 避免 信息加密 從互聯網誕生起,安全威脅就一直伴隨著網站的發展,各種Web攻擊和信息泄露也從未停止。常見的攻擊手段有XSS攻擊、SQL註入、CSRF、Session劫持等。 1、XSS攻擊 XSS攻擊即跨站點腳本攻擊(C

軟件架構設計學習總結12大型網站技術架構網站的伸縮性架構

可用性 name 偶數 發送 得到 合並 linux vi 可謂 性能 網站系統的伸縮性架構最重要的技術手段就是使用服務器集群功能,通過不斷地向集群中添加服務器來增強整個集群的處理能力。“伸”即網站的規模和服務器的規模總是在不斷擴大。 1、網站架構的伸縮性設計 網站的伸縮性

大型網站技術架構--網站高可用架構

      網站的可用性(Avaliability)描述網站可有效訪問的特性。 1、網站可用性的度量與考核       網站不可用時間(故障時間)=故障修復時間點-故障發現(報告)時間點       網站年度不可用時間=(1-網站不可用時間/年度時間)×

微服務實踐:從單體式架構遷移到微服務架構

ron title 微服務架構 需要 body ros 螞蟻金服 html 分離 微服務實戰(一):微服務架構的優勢與不足 微服務實戰(二):使用API Gateway 微服務實戰(三):深入微服務架構的進程間通信 微服務實戰(四):服務發現的可行方案以及實踐案例 微服務

springmvc分布式架構- maven構建ant-framework框架的文件配置

des 實例 分布 core 圖片 -a 4.0 exc 包括 上一篇我們介紹《構建dubbo分布式平臺-maven構建ant-config項目》,框架使用maven進行構建,根據我們的規劃,要將子項目全部構建出來,今天重點講解的是ant-framework可信項目的構建過

技術雜記

2018年11月8日 面向 C++ 的測試驅動開發的簡單介紹 測試驅動開發方法要求開發人員要先開發程式碼測試用例,明確需求;通過測試用例,意味著需求基本覆蓋;然後優化程式碼結構; 測試驅動開發的原則是: 不要寫一行程式碼,除非有一個失敗的自動化測試案例要糾正 消除重複的程

Java架構-整合spring cloud雲服務架構 - common-service 專案構建過程

我們將對common-service整個專案進行剖析,將整個構建的流程給記錄下來,讓更多的關注者來參考學習。 首先在構建spring cloud的common-service之前,我們需要準備的技術: Maven(專案構建)、Spring Boot、Spring Cloud、微服務概念、

【原創】IP攝像頭技術縱覽---P2P技術—UDP打洞實現內網NAT穿透

【原創】IP攝像頭技術縱覽(七)—P2P技術—UDP打洞實現內網NAT穿透 本文屬於《IP攝像頭技術縱覽》系列文章之一: Author: chad Mail: [email protected] 本文可以自由轉載,但轉載請務必註明

Spark入門:Spark執行時架構

在一個 Spark 叢集中,有一個節點負責中央協調,排程各個分散式工作節點。這個中央協調節點被稱為驅動器(Driver)節點,與之對應的工作節點被稱為執行器(executor)節點。驅動器節點可以和大量的執行器節 點進行通訊,它們也都作為獨立的 Java

Java B2B2C多用戶商城 springboot架構 springboot開啟聲明式事務

int efault http utf8 time 默認 復制 alias code springboot開啟事務很簡單,只需要一個註解@Transactional 就可以了。因為在springboot中已經默認對jpa、jdbc、mybatis開啟了事事務,引入它們依賴的

Unity之一天一個技術---到包圍盒的最近點

Rigidbody.ClosestPointOnBounds 到包圍盒的最近點public class example : MonoBehaviour { function Start () { var explosionPosition = transform.posi

Spring Cloud構建微服務架構訊息匯流排

先回顧一下,在之前的Spring Cloud Config的介紹中,我們還留了一個懸念:如何實現對配置資訊的實時更新。雖然,我們已經能夠通過/refresh介面和Git倉庫的Web Hook來實現Git倉庫中的內容修改觸發應用程式的屬性更新。但是,若所有觸發操作均需要我

J2EE技術規範——JTA理解JTA,編寫簡單的事務客戶程式

之前的內容中,寫了幾篇關於J2EE規範的部落格,現在繼續來完善這些內容,這次內容主要補充上一篇部落格。 WebLogic Server使用JTA1.0.1a實現和管理事務 WebLogic Server提供以下支援: 建立唯一的事務標記符(XID)支援可選的事務名稱跟

HTML5引擎Construct2技術剖析

前面已經講了完整的遊戲執行過程,下面主要講講事件觸發機制是如何工作的? (4) 事件觸發過程 事件觸發有2種模式: 1) 通過呼叫trigger函式來觸發事件,在當前的Eventsheet物件中找到符合條件的 EventBlock,檢查條件函式是否

軟件能測試技術----Linux服務器

bsp 分析 處理方法 性能測試 linux ron j2e 跳轉 實時 全圖: 測試目的: 測試範圍&性能指標: 測試與生產環境服務器配置不同的處理方法: 實時CPU監控: 實時內存監控: 實時網絡監控: 實時磁盤監控: 萬能命令: Linux

ALinq 使用教程ALinq 的擴充套件

ALinq 在 Linq to SQL 的基本,做了一些擴充套件,使得它更為好用。 獲取實體類的 DataContext 物件 選擇Category 實體類,將 DataContext 設為 True 。   執行下面的程式碼: staticvoid Main(string[] args){va

【Java安全技術探索之路系列:Java擴充套件安全架構】之一:Java擴充套件安全架構開篇

【Java安全技術探索之路系列:Java可擴充套件安全架構】章節目錄 Java平臺使用基於標準的安全的API技術提供可擴充套件的安全架構模型,這些API技術提供了平臺獨立性,是不同廠商之間能夠進行互操作。這些API技術通過技術整合來支援加密演算法、

大型網站技術架構--大型網站架構演化

         看完了有一本書,就應該有所收穫,有所總結,最近把《大型網站技術架構》一書給看完了,給人的印象實在深刻,再加上之前也搞過書本上講的反向代理和負載均衡以及session獨立儲存和快取,因此書本看起來還是挺通俗易懂的,而且作者李智慧給人的印象(書本)也挺深刻的,