交易型系统设计原则:
有限的资源前提下:先解决核心问题,预测并发现未来可能出现的问题。
1.设计系统:墨菲定律。
2.系统划分:康威定律。
3.资源的二 八定律。
高并发原则:
1.无状态。应用无状态,容易水平拓展。 实际:应用无状态,配置文件有状态。(配置文件或配置中心指定)。
2.拆分
系统维度,功能维度,读写维度,aop维度,模块维度。
3.服务化
4.消息队列
大流量缓冲(牺牲强一致性,保证最终一致性),数据校对
5.数据异构
数据异构,数据闭环。
6.缓存
客户端(浏览器缓存,APP客户端缓存(大流量js/css/image.无网络时托底数据给用户看),cdn缓存,没有cdn,nginx代理一层接入层。应用层缓存。分布式缓存。并发化。
高可用原则:
1.降级
开关集中化管理,可降级的多级读服务(只读本地缓存,只读分布式缓存,只读默认降价数据),开关前置化,开关前置化,业务降级。
2.限流 目的防止恶意请求流量,恶意攻击,或者防止流量超出系统峰值。
恶意流量只访问到cache
穿透到后端应用的流量考虑Nginx的limit模块处理。
原则限制流量穿透到后端薄弱的应用层。
3.切流量
4.可回滚
版本化的目的是实现可审计可追溯,并且可回滚。(事务回滚,代码库回滚,部署版本回滚,数据版本回滚,静态资源版本回滚)
负载均衡和反向代理实现分流,限流保护服务免受雪崩之灾,降级实现部分可用,有损服务,隔离实现故障隔离,设置合理的超时与重试机制避免请求堆积造成雪崩,回滚机制快速修复错误版本。
业务设计原则:
1.防重设计
2.幂等设计
3.流程可定义
4.状态与状态机
5.后台系统审批化
6.文档注释(文档库:设计架构,设计思想,业务流程,现有问题)
一个丰满的架构系统包含的内容:
业务功能,系统高并发,高可用,高可靠等。系统容量规划(流量、容量等),SLA(Service-Levle agreement)制定(吞吐量,响应时间,可用性,降级方案等),压测方案(线上,线下等)
监控报警(机器负载,响应时间,可用率等)应急方案(容灾,降级,限流,隔离,切流量,可回滚等)。
本文内容来源 《亿级流量网站架构核心设计》