zoukankan      html  css  js  c++  java
  • 《架构即未来》阅读笔记2

    《架构即未来》这本书的第12章简单阐述了架构设计的一些常用的原则。

    1.N+1设计

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

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

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

    2.回滚设计

    确保系统可以回滚到以前发布过的任何版本。

    以前做游戏的时候经常遇到回滚,有时候是数据库回滚,有时候是服务器端回滚,一般都是回滚到上个版本。

    3.禁用设计

    能够关闭任何发布的功能。

    当一个功能出现严重问题不得不关闭时,如果关闭整个系统代价就有点大了,所有要有单个功能的开关。像商城系统的支付功能就一定要有开关,如果出现比较严重的bug,可以关闭支付而不影响下单。

    4.监控设计

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

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

    5.设计多活数据中心

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

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

    6.只用成熟的技术

    只用确实好用的技术。

    不管用什么技术,都要确保是一个成熟的技术。也许某个新技术有众多优点,比如,降低开发成本,提高开发效率,提高可扩展能力,减少终端用户的响应时间。但是,只要这项技术故障率比较高,就绝不能使用。

    7.异步设计

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

    异步适合并发。

    借鉴:https://www.cnblogs.com/andyidea/p/6294493.html

  • 相关阅读:
    人生如此
    微软十七道智力面试题及答案
    【Flink系列十】Flink作业提交过程的调试和诊断
    【Flink系列九】Flink 作业提交遇到的问题记录以及原理
    Jackson ObjectMapper JSON序列化工具使用笔记,由浅入深
    既有设计模式的lambda重构
    观察者模式/Observer
    函数式接口java.util.function
    面向对象世界的七个设计原则
    重构-改善既有代码设计读后灵光
  • 原文地址:https://www.cnblogs.com/dream0-0/p/13097175.html
Copyright © 2011-2022 走看看