大型網站技術架構之可擴展性

大型網站技術架構之可擴展性

可擴展性首要步驟:

1、將整個系統按照縱向劃分多個層次(應用層、服務層、數據服務層),橫向分割成多個模塊

2、保證模塊之間是高內聚、低耦合的,將耦合降到最低

實現可擴展性的方式(降低耦合)

1、使用消息隊列來保證分佈式服務之間進行通訊,這種通訊方式將服務之間依賴降低到最小,消費端只管消費消息並不關心消息產生者是誰,同樣消息產生者只管往消息隊列放數據不關心消費方有哪些。這樣兩者互不依賴,擴展性高,只需要他們之間產生和消費的消息結構一樣就行

2、採用RPC進行服務之間的通訊,服務提供者定義好RPC 接口給服務消費方進行調用,只要保證接口不變,服務提供者可以以多種方式實現接口,服務消費方並不關心接口是如何實現的。

分佈式服務的意義

傳統應用的方式是將應用拆分成多個模塊,然而模塊與模塊之間進行調用完成業務邏輯,但是當業務很大時,模塊也越來越多時就會導致以下問題:

1、代碼量大了,編譯和部署很困難

2、代碼不易管理,代碼衝突多

3、模塊之間的耦合度高,很難擴展新的功能

4、一個應用中數據庫連接池爲10個 那麼如果部署的應用很多時就會耗盡數據庫中的資源

5、開發效率不高,因爲很多人都維護同一個應用,有時不能並行開發

如何解決?

服務拆分:將整個應用拆分成不同的服務,以集羣方式部署在物理機上,向外提供服務,

服務拆分方式:

  • 縱向拆分:一個大應用中拆分出多個獨立的小應用,分別部署在不同物理機上

  • 橫向拆分:從各種應用中抽出公共業務邏輯然後放到一個服務中,例如不同應用中都需要有用戶信息和用戶登錄,這個時候可以抽出一個用戶服務供應用層進行調用

Dubbo支持協議和序列化方式

序列化:將某中數據結構或對象轉化成二進制字節數組,不同的序列化轉化成不同格式的字節數據,反序列化過程相反

默認支持的是 Dubbo協議+Hessian序列化方式 特點:長連接、傳輸數據小、高併發

RMI+java序列化:短連接、適合傳輸文件

Hessian+Heassian序列化: 短連接、適合傳輸文件

Http+json 序列化

WebService+soap序列化

發佈了39 篇原創文章 · 獲贊 7 · 訪問量 5849
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章