斷路器設計模式斷路器是一個現代軟體開發的設計模式。用以偵測錯誤,並避免不斷地觸發相同的錯誤(如維護時服務不可用、暫時性的系統問題或是未知的系統錯誤)。 常用時機假設有個應用程式每秒會與資料庫溝通數百次,此時資料庫突然發生了錯誤,程式設計師並不會希望在錯誤時還不斷地訪問資料庫。因此會在等待TCP連線逾時之前直接處理這個錯誤,並進入正常的結束程序(而非直接結束程式)。簡單來說,斷路器會偵測錯誤並且「預防」應用程式不斷地呼叫一個近乎毫無回應的服務(除非該服務已經安全到可重試連線了)。 概念斷路器有分簡單與較進階的版本,簡單的斷路器只需要知道服務是否可用。而較進階的版本比起前者更有效率。進階的斷路器帶有至少三個狀態:
效能考量當安全是個益處,效能也就成為了實作斷路器的一個負面考量。因為需要不斷地檢查一個服務是否安全,且服務不僅會有一個,甚至會以多個方向擴展。 實作範例PHP下面是一個以 PHP 來實作的範例。這個範例是將一個 MySQL 伺服器的可用狀態處存進共享記憶體快取(APC)中並在之後以此判斷是否可用。 檢查下列腳本能以工作排程來不斷地在某時刻執行檢查。 $db = mysql_connect('localhost','user','pass');
if ($db === false) {
apc_store('dbUp', '已斷線');
} else {
apc_store('dbUp', '可連線');
@mysql_close($db);
}
在應用程式中使用if (apc_fetch('dbUp') === '已斷線') {
echo "資料庫目前不可用。請在數分鐘後嘗試。";
exit;
}
$db = mysql_connect('localhost', 'user', 'pass');
$res = mysql_db_query('database', 'SELECT * FROM table');
外部連結
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia