今天去參加了北京博文視點出版社在上海辦的一個Open
Party(http://www.douban.com/event/11051981/)。其中有兩個topic給我很大的啟發,一個是溫昱的《架構
設計的事實與謬誤》,另一個是老趙(@jeffz_cn)的《Web應用中的緩衝》。
當然,我的收穫未必是他們兩位想要傳達的主旨,只是引發了很多聯想,所以也就不寫思考的過程了,直接說一些結論吧。
1、架構設計需要關注需求,而需求有兩大部分 ,一部分是與業務相關的需求,另一部分是與業務無關的需求。
2、與業務無關的需求,包括可重用性、高效能、可靠性、易用性、安全性等等。
3、經典的GoF的設計模式,其實只解決了(甚至只能說部分解決了)可重用性的需求。
4、在高效能的需求領域,也可以總結出很多設計模式,其中,老趙今天特別提出的緩衝,是跨越N多領域的,提高效能的重要模式。
5、在我看來,要提高效能,無非這麼三大思路:緩衝、切分、並行。在三大思路之上,還有一個總的思路,就是找到效能瓶頸,然後嘗試最佳化這個瓶頸。
6、緩衝的思路,今天老趙已經談得非常好了,每一個層次,有每一個層次的緩衝實現思路和方案,有優點,有缺點。如果能夠再展開談一談緩衝模式的共性,就更棒了。也許可以總結為:針對80%的情況進行特殊處理,以更加快捷的方式減少CPU與IO。
7、切分,比如將資料分開存放、將靜態內容與動態內容分開處理、將緩衝分散在多個memcached伺服器上等等等等,總的思路,是將原本的瓶頸分散化、將原本的問題,分別細化處理。
8、並行,當然也是一大門類,就不展開了,總得思路是:讓電腦在同一個時間斷內,做儘可能多的工作。
9、也許,應該有這麼一本書:《高效能設計模式》,與“以可重用性為目標的設計模式”應該同等重要。
10、依此類推,還應該有《安全性設計模式》、《高可靠性設計模式》、《易用性設計模式》等等,這些跨應用、跨業務、跨領域的設計模式,都是架構設計師,應該深度掌握的設計模式。
11、也許,應該有出版社,組織高人,寫這麼一套《架構師設計模式叢書》出來。