架构师应该掌握哪些设计模式

今天去参加了北京博文视点出版社在上海办的一个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、也许,应该有出版社,组织高人,写这么一套《架构师设计模式丛书》出来。