关于项目高并发问题小记

一.什么是高并发

多个线程同时访问同一个资源时就会产生并发问题,高并发是判断一个项目优劣的重要因素

二.怎么处理高并发 

1.项目使用微服务开发

        通过微服务,将一个项目拆分为多个模块,这样将一个服务器的压力就会分摊给多个服务器,而且当某个模块因为访问过高而崩溃时,可以通过服务降级(只读取缓存里的内容等其他方式),熔断保护(拒绝流量访问),延迟处理(设置流量缓冲池,往往使用消息队列,将请求放入缓冲池中)和特权处理(对用户分类优先保护部分用户)这样不会影响项目其他模块的正常使用

2.使用redis等做缓存

        在项目中往往是读大于写的,因此可以将频繁访问的数据存入redies中,从而减少直接对数据库的访问。redis为保证高并发时访问的正确性,提供了三种方法:原子操作,分布式锁,事务

3.使用RabbitMQ等其他消息中间键将数据存入消息队列

        对于高写入的场景,可以使用消息队列存储,不用redis的原因是应为redis有LRC(最近最少使用)会淘汰数据,且数据结构比较简单,没有事务支持,所以使用消息队列,存入队列中再限制存入数据库里

        为什么使用RabbitMQ: 

  • 有强大的web页面,方便使用
  • 安装简单,上手块
  • 可靠性高
  • 功能丰富,支持消息持久化,支持消息确认机制,灵活的任务分发机制

什么是QOS: 为RabbitMQ提供服务质量保证,在一定数量的消息未被消费前,不进行消费新的消息;例如在限流操作中,每一千条数据存入数据库,当存储没有完成时,不会有新的消息进入。

4.限流

        可以使用消息队列对数据做限流,比如一万条请求发送过来可以先存入消息队列中,消息队列是遵循先进先出,再一千条一千条数据的存入数据库中完成限流操作

5.动静分离

通过Nginx实现动静分离,将静态资源交给专门的服务器处理,而tomcat只需要处理动态资源就行,减少后端的压力实现负载均衡

6.数据库优化

分库分表,将一个数据库分为几个数据库,将一个表分为几个表,减少表里的字段,来对抗高并发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值