基础篇

高并发设计三种思路

1、横向扩展
2、缓存
3、异步

首先,不能为了设计而设计,不要过度设计。单机满足业务需求就不要分布式,架构不能盲目,架构一定是逐步演进的,而且是随着业务的需求逐步进行的。

三种思路理解要宽泛。比如横向扩展可以是集群,可以是主从分离,也可以是分库分表等等。

缓存呢其实无处不在,比如CPU的一级缓存、二级缓存、三级缓存,操作系统缓存(如windows的page.sys文件),mybatis的一级缓存,二级缓存等等。

异步就是解藕操作,比如将订单成交的消息我需要保证准确性而不是实时性,因此就先放入消息队列中,消息被消费的时候在进行业务的处理,这样就可以提高并发请数量

系统分层

MVC

image.png
image.png

系统性能

高并发:高性能(响应时间)、高可用(down机、故障、维护)、可扩展(应急扩容)
响应时间(平均值、最大值、分位值),响应为1s,吞吐量为每秒1次,响应缩短到10ms,吞吐量上升到每秒100次,从用户体验来说:200ms分界点,1s为另一个分界点,健康系统的99分位值的响应时间控制在200ms以内,不超过1s的请求占比要超过99.99%

高并发下的性能优化手段:
1.提高系统的处理核心数(吞吐量=核心数(并发进程数)/响应时间(s))
但并非无限增加核心数就可以增加吞吐量,随着进程数增加,并行的任务对于资源的争夺也增加,在某
个临界点,进程增加导致系统的性能下降,这就是性能测试中的拐点模型,所以在评估系统性能时,需要做压力测试,找到拐点
2.减少单次任务响应时间
cpu密集型:优化算法
io密集型:1.采用工具,linux的工具集
2.通过监控,对任务的每一个步骤做分时统计,从而找到任务中哪一步小号消耗了更多的时间

高可用

1.开发设计层面
冗余---主备,负载均衡,failover
取舍----降级,限流,熔断,超时控制

2.运维层面
灰度发布,故障演练,监控报警

高可扩展性的设计思路

拆分,将复杂的问题简单化

  1. 存储层的扩展性
    业务拆分、水平拆分
  2. 业务层的扩展性
    业务维度,重要性维度和请求来源维度
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容