有幾層分布:
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
public
static
function
&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
);
return
self::
$db
;
}
根據規則獲取需要的dsn,然後返回乙個db,貌似這個路由很簡單,很雷人:
1
2
3
4
5
6
7
8
9
10
public
function
getdbroute(&
$dsn
,
$dbkey
)
}
else
}
當然路由規則是可以寫進配置檔案的,這裡我預設寫了個隨機進行測試,發現可行,hoho。乙個規則可行,那麼取模等規則當然也可行。
改進後的db類會更為簡練,當然最大的特性是支援分布- -!!
分布式 分布式系統的設計
在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...
分布式系統設計準則
該文章需要整理 2015.3.13修改 分布式系統通常服務大請求 維護著大資料 快速響應 長時間可用。設計分布式後台服務需要考慮的東西很多,本文給出一些常用的設計準則,以備檢視。效能 快速響應 低延遲 可靠性 系統可靠就是同樣的請求返回同樣的資料 更新能夠持久化 資料不會丟失 可管理性 便於運維,整...
mongoDB簡介 分布式DB
一 簡介 mongodb是乙個開源的,基於分布式的,面向文件儲存的非關係型資料庫。是非關係型資料庫當中功能最豐富 最像關聯式資料庫的。mongodb由c 編寫,其名字 於 humongous 這個單詞,其宗旨在於處理大量資料。mongodb可以執行在windows unix osx solaris系...