设计优秀系统的22条军规

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

一家之言,轻喷。。。下面正题开始(没有华丽的分割线):

1、按20倍正常访问量设计、按3倍正常访问量实现、按部署1.5倍正常访问量部署
2、简化系统范围(按80/20原则)、简化设计(成本/扩展性折中)、简化实现(更多靠经验)
3、分布方式:拷贝分布(每个机器部署同样的服务或同样的数据)、垂直分布(按业务,每个系统提供不同功能)、水平分布(sharding)
4、设计系统时假设你手头只有少量低端服务器或常见设备
5、使用合适的数据存储方式,而不拘泥于关系型数据库
6、尽量少用或不用重定向(即使用也要用Http服务器支持的原生配置)
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、力求达到系统的无状态;实在不行,状态信息可放到客户端cookie,或者单独的分布式缓存中,或者服务化(比如用户是否购买过某物)
18、通信尽可能的使用异步,即使同步也必须要有超时时间和异常处理
19、防止消息总线拥堵,消息要少而精
20、分隔商业智能和线上事务处理系统,both Service and data
21、设计和实现时必须考虑监控和记录
22、数据库设计:不要用外键、不要delete(表添加disabled字段标示记录是否有效)


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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值