1. 思虑周全,版本迭代
从V0.1,V0.5到V1.0,每个版本都会进一步优化,挨个扫清风险点。所以一个好的系统不是一蹴而就的,而是不断的迭代打磨而来,虽然摇一摇系统的生命周期可能只有春节的短短几天。但是一般大型系统会提前几个月进行,这期间一般会不断的测试、压测,所以会让使用场景提前出现。就像阿里中间件博客里面提到的,应对流量风险的最好方法就是让其提前出现,然后找到应对办法,这样才能做到流量来时成竹于胸。
2. 多点结合
一个大型系统不仅仅考验的是服务器端的架构设计能力,有时候一些逻辑可以放在其余的点。比如终端与cdn节点。终端会进行资格的判定、资源的预加载,CDN会进行资源的存取。另外出现并发与流量压力的时候,客户端可以给出安民告示来提醒用户稍后再试。放下手机多和朋友聊聊天,多陪陪家人都是绝佳的文案。
3. 压测
这一点是所有的大型系统都绕不过去的点。无论是阿里的双十一还是微信的春节红包项目。只有不断的进行压测才能明白系统的极限在哪里,从而可以比较从容的应对巨大的流量。压测并不是小打小闹地搞几个测试脚本就能行,而是另外一个比较大型的系统,光这个系统就需要一个团队专注的做个一到两年,而测试使用的机器可能需要几百台。
4. 异步
异步是所有大型系统必须使用的利器,其天然的解耦特性符合计算机的大道。
5. 逻辑前置
将逻辑放在接入层其实是一个大胆又有效的方法,有时候接入层嵌入的轻量级逻辑可以起到非常好的效果。
6. 外网接入
当外网波动的时候如果避免影响,这是所有系统需要考虑的问题。目前所有的明星级APP都具备多重混合逻辑的接入策略,具备内网与公网的双重调度链路。
7. 全面的监控
这一点不用说,监控是所有系统必须具备的。
8. 防刷
这是一个大的课题,挺难的,不过安全是所有系统的生命线。
9.不断的复盘,不断的CR
大系统不是一个人能做成的
10. 争取预热机会
预热就是提前练兵的机会,真实的线上流量可以遇到压测时遇不到的问题,而且系统经过线上流量的检验才能让系统设计者心中更加有底。