1. 程式人生 > >大型分散式網站架構設計與實踐1

大型分散式網站架構設計與實踐1

第1章 面向服務的體系架構(SOA)

分散式應用架構的演變:單一應用架構--->垂直應用架構----->分散式應用架構

1.1 基於TCP協議的RPC

1.1.1 RPC名詞解釋

1、RPC:remote process call,遠端過程呼叫,有RMI、WebService等諸多成熟的方案
2、如果服務提供煮 一個叢集而非單臺機器,則需要根據相應的負載均衡策略,選取其中一臺進行呼叫。

1.1.2 物件的序列化

1、無論是何種型別的資料,最終都轉換成二進位制流在網路上進行傳輸,資料的傳送方需要將物件轉換成為二進位制流,才能在網路上進行傳輸,而資料的接收方則需要把二進位制流再恢復為物件
2、序列化與反序列化
物件------>二進位制流=====物件的序列化
二進位制流---------->物件======物件的反序列化
3、Java的序列化與反序列化

1.1.3 基於TCP協議實現RPC

java的socketAPI使用

1.2 基於Http協議的RPC

1.2.1 HTTP協議棧

1、HTTP協議屬於應用層協議,它是構建在TCP和IP協議之上,處於TCP/IP體系架構中的頂端。
2、HTTP網路協議棧:網路介面層---->IP(網路層)---->TCP(傳輸層)---->HTTP(應用層)
3、協議請求和響應的格式
Request:
encode:0(0表示GBK,1表示UTF8)
commandlength:5
command:HELLO

Response:
encode:0(0表示GBK,1表示UTF8)
responselength:5
response:HELLO

1.2.2 http請求與響應

1、Web瀏覽器與Web伺服器之間的一次HTTP請求與響應過程,需要以下幾個步驟
<1>瀏覽器端根據所使用的http協議,解析出url對應的域名
<2>通過DNS域名解析,查詢出應該域名對應的IP地址
<3>通過url解析出對應的埠號(如果是80埠,預設可以省略)
<4>瀏覽器發起並建立到IP所對應的80埠連線
<5>瀏覽器向伺服器傳送Get請求
<6>伺服器響應瀏覽器的請求,瀏覽器讀取響應,渲染網頁
<7>瀏覽器關閉與伺服器的連線

1.2.3 通過httpclient傳送http請求

httpclient是Apache基金會下的一個子專案,它對http協議通訊的過程進行了封裝,提供高效且功能豐富的客戶端程式設計工具包<