1 概述
分佈式系統就是利用一組機器來協同工作,並對外提供統一的服務。
分佈式架構的核心,在於拆分。
2 分佈式數據架構
2.1 垂直拆分
按照業務將數據拆分成不同的庫;
如sns網站中日誌與照片可以分成兩個數據庫。
2.2 讀寫分離
一般是主從架構,主庫用於寫,從庫用於讀;
主從之間需要同步機制來保證數據的一致性。
2.3 水平拆分
按照數據的特點將全量的數據拆分成不同的分區,並分佈到指定的庫中;
如sns網站中的日誌/照片等信息是按照userID來組織的,因此可以根據userID將數據拆分到不同的庫中,其中關鍵是制定路由規則,就是如何根據userID來找到對應的數據庫。
2.4 總結
數據庫層面的分佈式架構,可以分別從業務+讀寫+數據分區等3個維度來拆分數據。
3 分佈式應用架構
3.1 均衡負載
利用均衡負載服務器將請求分發到不同的服務器來處理,其中關鍵的是路由規則。
3.2 獨立的session服務
應用是有狀態的,他的狀態是保存在session中。如果你的路由規則是隨機分發請求的話,則需要提供獨立的session服務,如將session保存在數據庫或緩存中,不要保存在本地文件或內存中。如果你的路由是根據ip來分發請求的話,則由於某個ip的請求總是分發到同一個服務器中,因此session可以保存到本地。
3.3 總結
應用層面的分佈式架構,主要是多copy+均衡負載+獨立的session服務。