很早就想写一篇关于架构的“道”和“术”的文章。但苦于一直没有参透架构之道。
关于“道法术器”,出自老子的《道德经》。后人的理解是:道是根本性的规律;法是一般性的原则;术是具体的实践方法;器是工具;势是当前的客观条件和形势。
道法术的关系
作为一种经典的思维方法论,我想从一个架构师的角度,分析下架构的道法术。
1.架构之道
可以参看《架构整洁之道》这本书。整洁架构是最基本的原则。
另外,一些普适性的架构原则有:
Kiss原则
“Keep is simply and stupid”,这是对简单性原则的一种说法。大道至简也就是这个道理。
最小代价(努力)原则
就是说我们应该尽可能在一开始的时候做出正确的选择,因为一旦这个架构设计出现,后面的人很有可能不愿意为了更好的架构而改进,而是遵循已有的设计。
最小意外原则
好的架构应该避免意外,遵守通用的规范和习惯,代码也是。这些意外其实是软件架构和设计中的复杂因素。最小意外也是意味着尽可能的简单。
Dry原则
“Don’t repeat yourself”。遇到重复的代码,往往是重构的开始。
又比如,分布式系统里经典的CAP理论和BASE理论。这里不再赘述。
2.架构之法
比如,在分布式系统中,解决高性能、高可用、高并发等问题的常用方法。
高可用:负载均衡与反向代理、隔离、限流、降级、超时与重试、回滚、预案等。
高并发:缓存、异步、弹性扩容等
高性能:压测、性能调优等。
当然这几种维度之间并不是互相独立的,比如高并发其实也可以看做是性能的一种表现。关键在于融会贯通。
3.架构之术
主要是围绕解决“三高”问题的一些具体的开发实践、开发工具和开发技巧:
作为spring的深度使用者,推荐大家看下王福强的《spring揭秘》一书,从中我们可以深入了解到spring设计的技巧。
另外,推荐大家去看《亿级流量网站架构核心技术——跟开涛学搭建高可用高并发系统》,作者张开涛,相信不少人曾经读过他的技术博客。里面的内容都是作者对工作过程中的一些思考和总结。
还有高可用架构社区著的《高可用架构》一书,也比较不错,在不同领域中都有相应的案例分析和解决方案。
笔者曾经投入2年的时间,从0到1建设了公司使用的java后台开发框架。
更多的术,请大家移步我的专栏:如何搭建企业级后端框架