分布式系統設計之DB類

2021-06-02 15:00:18 字數 2637 閱讀 1159

有幾層分布:

1、web分布,這個只需lvs支援即可,狀態保持不保持無所謂,可以通過phpsessid來保持這個會話。因而接入伺服器僅作為接入之用,儲存轉到後端,這裡要保持接入機無使用者檔案還是比較難的,有時候儲存一些可能會使系統更簡單一些。

2、cache分布,接入機統一處理會話,根據規則命中某台特定cache機,當然,這裡的cache機器不僅限於如memcached、xcache等,簡單的方法可以直接使用db代替,如memory表,這樣後端資料和cache的同步規則就需要自己定製,效率也可能沒有自動完成cache<->db雙向更新的效率高。

3、db分布,這裡認為cache和db也可用應用程式來控制訪問,而不一定需要cache本身來完成,至於效率降低多少不清楚,個人覺得可以在後台設定一些定時排程指令碼來更新cache,和將cache中的資料轉存到後端db。當然db和cache的數量不一定是一一對應,如果cache多,那麼db儲存可能會相應減少,這裡需要測試乙個平衡。

我在db裡設計了乙個簡單的路由器,如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

publicstaticfunction&init(&$dsn,$dbkey,$fetchmode= self::db_fetch_assoc)

$route= route::init();

$dbinfo=$route->getdbroute($dsn,$dbkey);

//這裡要檢測db相同dbinfo的例項是否存在,如果存在則直接返回引用

if(is_array(self::$db))

}

}

$classname='db_'. self::$dbtype[strtolower($dbinfo['dbtype'])];

self::$db[$dbkey] =new$classname($dbinfo,$dbkey,$fetchmode);

returnself::$db;

}

根據規則獲取需要的dsn,然後返回乙個db,貌似這個路由很簡單,很雷人:

1

2

3

4

5

6

7

8

9

10

publicfunctiongetdbroute(&$dsn,$dbkey)

}else

}

當然路由規則是可以寫進配置檔案的,這裡我預設寫了個隨機進行測試,發現可行,hoho。乙個規則可行,那麼取模等規則當然也可行。

改進後的db類會更為簡練,當然最大的特性是支援分布- -!!

分布式 分布式系統的設計

在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...

分布式系統設計準則

該文章需要整理 2015.3.13修改 分布式系統通常服務大請求 維護著大資料 快速響應 長時間可用。設計分布式後台服務需要考慮的東西很多,本文給出一些常用的設計準則,以備檢視。效能 快速響應 低延遲 可靠性 系統可靠就是同樣的請求返回同樣的資料 更新能夠持久化 資料不會丟失 可管理性 便於運維,整...

mongoDB簡介 分布式DB

一 簡介 mongodb是乙個開源的,基於分布式的,面向文件儲存的非關係型資料庫。是非關係型資料庫當中功能最豐富 最像關聯式資料庫的。mongodb由c 編寫,其名字 於 humongous 這個單詞,其宗旨在於處理大量資料。mongodb可以執行在windows unix osx solaris系...