《架构即将来》中最经常使用的15个架构原则

《架构即将来》这本书的第12章简单阐述了架构设计的一些经常使用的原则(后面章节会详细阐述)。这些原则中不少都是在架构一开始的设计中就要考虑进去的,这样在出现任何问题时,咱们都可以及时的处理,和把问题影响的范围有效的缩小。不然就像我如今的项目,一开始设计时,考虑的不多,出问题时,没有作到及时的反馈,和缩小影响范围,只能在事故的代价中将所须要的原则添加进来,慢慢完善。数据库

1.N+1设计

要确保任何你所开发的系统在发生故障时,至少有一个冗余的实例。服务器

一个实例确实很危险,当这个实例出现不明缘由的问题不能对外服务,须要debug的时候,若是优先debug,那当前实例就要暂停服务直到你找到问题为止。若是你直接重启实例恢复服务,就没有事故现场进行debug了。而这时若是有一个冗余的实例,就能够先让冗余的实例对外服务,事故现场的环境也得以保留。架构

多个实例来作负载均衡也是一种不错的选择。并发

2.回滚设计

确保系统能够回滚到之前发布过的任何版本。负载均衡

之前作游戏的时候常常遇到回滚,有时候是数据库回滚,有时候是服务器端回滚,通常都是回滚到上个版本。异步

3.禁用设计

可以关闭任何发布的功能。微服务

当一个功能出现严重问题不得不关闭时,若是关闭整个系统代价就有点大了,全部要有单个功能的开关。像商城系统的支付功能就必定要有开关,若是出现比较严重的bug,能够关闭支付而不影响下单。架构设计

4.监控设计

在设计阶段就必需要考虑监控,而不是在实施完成以后补充。debug

若是监控作的好,不只能发现服务的死活,检查日志文件,还能收集系统相关的数据,评估终端用户的响应时间。若是系统和应用在设计和构建时就考虑好监控,那么即便不能自我修复,也至少能够自我诊断。设计

5.设计多活数据中心

不要被一个数据中心的解决方案把本身限制住。

有钱就多建一个,让股东放心。

6.只用成熟的技术

只用确实好用的技术。

无论用什么技术,都要确保是一个成熟的技术。也许某个新技术有众多优势,好比,下降开发成本,提升开发效率,提升可扩展能力,减小终端用户的响应时间。可是,只要这项技术故障率比较高,就毫不能使用。

7.异步设计

只有在绝对必要的时候才进行同步调用。

异步适合并发。

8.无状态系统

只有当业务确实须要的时候,才使用状态。

无状态的系统更利于扩展,更利于作负载均衡。

9.水平扩展非垂直升级

永远不要依赖更大、更快的系统。

微服务是水平扩展的一个例子,不要把全部的功能都集中在一个系统里面。必要的时候把需求分为多个系统,而不是升级原有的系统。

10.设计至少有两个步骤的前瞻性

在扩展性问题发生前考虑好下一步的行动计划。

想的更远一点,就能减小重构的次数。

11.非核心则购买

若是不是你最擅长的,也提供不了差别化的竞争优点则直接购买。

云服务这种的就购买好了。

12.使用商品化硬件

在大多数状况下,便宜的是最好的。

硬件这块儿,知足需求便可,在必要的时候增长配置。

13.小构建,小发布,快试错

所有研发要小构建,不断迭代,让系统不断地成长。

小版本的失败率较低,由于失败率与解决方案中的变动数量直接相关。

14.隔离故障

实现隔离故障设计,经过断路保护避免故障传播和交叉影响。

避免多系统之间的互相影响,这个很重要。

15.自动化

设计和构建自动化的过程。若是机器能够作,就不要依赖于人。

人常犯错误,更使人沮丧的是,他们每每会以不一样的方式屡次犯一样的错误。

相关文章
相关标签/搜索