不知道這個算不算一個分佈式系統,我我的以爲是比較不錯的一個設計,思路很是的好。算法
項目背景數據庫
須要設計一套解決方案,解決目標企業的數據管理,數據不一樣客戶端同步,建設網站的需求。服務器
項目設計架構
1. 網站的設計併發
傳統的BS架構,用戶能夠直接登陸網站管理數據資源,能夠發佈資源到線上。此外,用戶能夠直接登陸客戶端,完成一樣的功能。客戶端的計算能力閒置的時候,在徵得用戶贊成的狀況下,可使用客戶端完成一些併發的任務,好比數據整理,採集等等。同時提供線上與客戶端同時並存的方式對於用戶來講仍是很是方便的,特別是對於那些工做在外面的業務員。負載均衡
這裏很重要的一個部分就是負載均衡的處理,針對公司所在的地理位置不一樣,須要把公司的訪問請求分配到不一樣的數據服務器上。分佈式
2. 網站的數據存儲網站
使用SQLServer做爲網站的數據庫,目前運行情況良好。這個做爲整個架構的數據中心,存儲了全部的數據。隨着數據量的愈來愈大,數據服務器已經擴展到了多臺,這個由負載均衡組件的負責處理。設計
3. 客戶端的設計orm
因爲服務器提供了一個同步數據的接口,客戶端能夠從服務器同步數據,也能夠向服務器提交新數據。這裏的客戶端形式多樣,包括傳統的Window Form桌面程序,也包括iOS和Android程序。因爲不一樣的平臺,例如傳統的桌面,移動端,使用的語言不一樣,設計也有所差異,可是基本上都會有顯示數據和同步數據的功能。
4. 客戶端的數據存儲
客戶端的數據存儲平臺也可能不一樣,但無論選擇什麼數據庫,都是爲了與SQLServer的數據兼容,爲數據同步作物理準備。
5. 公司數據中心的概念
對於中大型客戶公司,客戶端須要時刻在公司內保持同步,即便是在斷網的狀況下也要如此,這時公司須要設置數據中心,來完成公司內客戶端的數據同步。
6. 數據的同步
這是最重要的一個模塊,同步的算法很是的簡單,就是對比不一樣表數據的時間戳,只要時間戳不一樣,就同步表的數據。此外,使用P2P加速局域網的同步速度,也是很是關鍵的一步。
項目反思
該設計覆蓋了目標企業大中小不一樣規模的使用場景,使用很是靈活。可是實現的過程比較複雜,須要不少領域深厚的知識。