高并发系统设计

高并发系统主要是为了解决在有限的资源下解决最核心的问题,预测并发现以后可能会出现的问题。

高并发原则一般遵守如下几个设计原则:

1.无状态:指的是应用在处理业务逻辑期间尽量减少锁的使用降低网络通信延迟无数据持久化操作等,以此来增加应用系统的性能。

2.拆分:大而全的系统,可根据实际的访问量来拆分系统,来实现流量分片,提高并发能力;主要维度有系统(商品系统,订单系统,购物车系统,结算系统等),功能(优惠劵创建,优惠劵核销等),模块(web,service,dao等),AOP(CDN系统,页面渲染系统),读写(商品读服务,可使用缓存;写服务,可使用分库分表,数据聚合存储等)。

3.服务化:将进程内服务统一封装对外提供,服务分组隔离请求提高系统并发能力

4.数据异构实现数据的自我控制,当其他系统出现问题时不影响自己的系统,分数据异构数据闭环(包括异构,聚合,前端展示);异构是指多数据源原子化存储,聚合是指多请求数据聚合成一个数据进行响应,前端展示是指减少接口的调用次数能拿到更多的数据。

5.消息队列:作用是服务解耦异步处理流量削峰/缓冲等;消息生产时可能会失败,通过日志,报警等监控;消息接收时可能会重复,超时等,通过业务层的防重处理,超时重试机制等处理重复。消息队列可以作用于大流量缓冲的系统中,通过保证最终一致性来保证系统一致性;在使用消息异步机制的场景下,通过数据校对和修正来保证数据的一致性和完整性。

6.缓存:可用来抵抗大流量请求适用于读服务系统;包括浏览器缓存,app缓存,CDN缓存,接入层缓存,应用层缓存,分布式缓存(数据量过大时考虑分片机制将数据分片或者使用分布式缓存)等。

7.并发化:如一个读服务中,两个不相互依赖的数据可以并发进行拉取,并发数视CPU数量,并发类型决定。

高可用原则一般遵守如下几个设计原则:

1.降级处理:防止流量高峰导致系统不可用,此时可切换降级服务或者备用服务来保证系统的可用性。

                     (1)降级开关集中化处理:通过推送机制,将开关推送到各个服务中。

                     (2)开关前置化:可将开关前置到Nginx,是请求尽量不回流应用层。

                     (3)多级读服务降级:服务调用数据不通过数据库,通过本地缓存,分布式缓存,默认降级数据等读取。

                     (4)业务降级:将一些次要的系统服务延迟,保障核心业务功能,保证最终一致性,从而保证系统可用。

2.限流:防止恶意请求流量,恶意攻击,防止请求流量超出系统峰值等;可使用缓存,Nginx的limit配置,Nginx的deny配置等限制流量穿透到应用层。

3.切流量:主要目的是屏蔽异常的服务,可通过DNS切换入口,通过LVS/Haproxy切换接入层,通过Nginx切换应用层等方式来实现可用性。

4.可回滚:当系统发生异常时,可通过回滚,回到上一个可用的系统;一般通过事务回滚,部署版本回滚,静态资源回滚,数据回滚, 代码库回滚等来保证可用性。

业务设计的一些原则:

1.防重设计,幂等设计,流程自定义,状态与状态机,后台系统审批化,备份,文档及注释,后台操作可记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值