• 设计优秀系统的22条军规


    优秀系统的定义:高可扩展性、高性能、高吞吐量、高可维护性、高可靠性、高可用性、高。。。。

    一家之言,轻喷。

    。。以下正题開始(没有华丽的切割线):

    1、按20倍正常訪问量设计、按3倍正常訪问量实现、按部署1.5倍正常訪问量部署
    2、简化系统范围(按80/20原则)、简化设计(成本/扩展性折中)、简化实现(很多其它靠经验)
    3、分布方式:拷贝分布(每一个机器部署相同的服务或相同的数据)、垂直分布(按业务,每一个系统提供不同功能)、水平分布(sharding)
    4、设计系统时如果你手头仅仅有少量低端server或常见设备
    5、使用合适的数据存储方式。而不拘泥于关系型数据库
    6、尽量少用或不用重定向(即使用也要用Httpserver支持的原生配置)
    7、CDN是分流的非常好方式,适合静态内容获取
    8、假设是HTML站点,重视Http expire和Cache-control头;也要充分利用服务端Cache
    9、设计并实现feature时务必保证可回滚(尤其是SQL脚本的可回滚性)
    10、不要使用多阶段提交事务。由于堵塞导致性能急剧下降
    11、不要用select for update,由于有行级锁。可用select for read only
    12、不要select *
    13、合理规划系统组成失败隔离域,域之间禁止同步call。限制异步call。实际上失败隔离域的概念也是高内聚低耦合设计的体现
    14、避免单点(利用active/passive, active/active, master/slave等)
    15、尽量降低调用关系上是串联的组件数量(也就是降低串联深度)
    16、设计系统的功能开关(就可以降级指定的功能)
    17、力求达到系统的无状态;实在不行。状态信息可放到clientcookie,或者单独的分布式缓存中,或者服务化(比方用户是否购买过某物)
    18、通信尽可能的使用异步。即使同步也必需要有超时时间和异常处理
    19、防止消息总线拥堵,消息要少而精
    20、分隔商业智能和线上事务处理系统,both Service and data
    21、设计和实现时必须考虑监控和记录
    22、数据库设计:不要用外键、不要delete(表加入disabled字段标示记录是否有效)


    未完待续,欢迎补充。。。

    。。

  • 相关阅读:
    C++拷贝构造函数(深拷贝,浅拷贝)
    c++ string assign =
    undefined与null的区别---js
    Cocos2d-x内存自动释放机制--透彻篇
    cocos2d-x 坐标系
    cocos-html5 JS 写法基础 语言核心
    selenium--更改标签的属性值
    selenium--高亮显示正在操作的元素
    selenium--页面元素是否可见和可操作
    selenium--拖拽页面元素
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6845204.html
Copyright © 2020-2023  润新知