先確保解決方案簡單可用,再考慮通用性和復用性

2021-07-04 15:06:13 字數 862 閱讀 8215

許多用來實現基礎設施的**,包括元件框架、類庫、基礎服務(fundation services),普遍存在乙個問題,它們的設計一味強調通用性而不考慮具體應用,導致出現許多令人困惑的可選項和不確定因素,這些功能常常不是被閒置,就是被誤用,甚至毫無價值。多數開發者開發的是專用系統,無限制的通用性對他們的幫助不大。尋求通用性最好的辦法是研究現有的具體案例,抓住問題的實質,從根本上得出通用解決方案。通過經驗提煉的簡單方案,遠勝過不切實現的通用性。

如果存在多個可實施方案難以取捨,「先簡單後通用」原則可以成為最終的評判標準。挑選基於具體需求的解決方案,放棄鼓吹通用性的複雜方案。而且簡單的方案在實踐中完全有可能表現出更好的通用性。退一步來說,修改簡單方案滿足需求,也比修改通用方案容易,因為通用方案常常在關鍵的地方使不上勁兒。

雖然許多的能用設計的初衷是好的,但還是難逃失敗的命運。設計元件的首要任務是抓住具體需求,滿足需求,通用性來自對需求的理解,理解之後才能簡化。提煉通用性可以使我們更加接近問題的本質,通過分析己有案例可以獲得清晰、簡潔、有依據的規律和方法。然而提煉通用性往往流於形式,南轅北轍,不但無法減少複雜性,反而增加複雜性。追求理論上的通用性通常會導致解決方案脫離實際的開發目標。由於這種通用性基於錯誤的假設,所以無法提供有價值的方案,只會帶來棘手的問題,增加開發人員和架構師將來必須面對的偶發複雜性(accidental complexity)。

雖然很多架構師重視通用性,但這樣做是有前提條件的。並非所有人都需要通用性,願意為它掏錢,具體情境要具體分析,有針對性的解決方案才有價值。我們提供具體解決方案時,無須排斥通用性和靈活性,但是如果過早脫離具體情況,只會迷失在無限的可能性裡,被複雜的配置選項、超負荷的引數列表、冗長囉嗦的介面,以及存在缺陷的抽象所淹沒。追求隨心所欲的靈活性,會使人們在無意中錯失(有些人甚至故意忽略)更簡單的設計和更有價值的特性。

浪潮 資料高可用解決方案研究

1.什麼是高可用 資料的備份,容災,可靠。資料因多方面原因,面臨丟失的風險 2.浪潮as520e m1的高可用方案 通過lvm 邏輯卷映象 技術,在兩台as520e m1間,建立映象關係。主伺服器寫資料時,會同時寫入這兩套as520e m1。3.浪潮as5600的高可用方案 主服務寫入資料到磁碟時,...

Redis高可用技術解決方案分析

主要針對redis常見的幾種使用方式及其優缺點展開分析。一 常見使用方式 redis的幾種常見使用方式包括 redis單副本 redis多副本 主從 redis sentinel 哨兵 redis cluster redis自研。二 各種使用方式的優缺點 redis自研的高可用解決方案,主要體現在配...

常見的高可用MySQL解決方案

mysql資料庫作為最基礎的資料儲存服務之一,在整個系統中有著非常重要的地位,因此要求其具備高可用性是無可厚非的。有很多解決方案能實現不同的sla 服務水平協定 這些方案可以保證資料庫伺服器在硬體或軟體出現故障時服務繼續可用。高效能性需要解決的主要有兩個問題,即如何實現資料共享或同步資料,另乙個是如...