怎样提高接口的并发量(怎么优化接口)?

目录

1、 批量操作数据库

2、 耗时操作,异步执行

3、 利用空间来换取时间:缓存

4、 锁粒度避免过粗

5、 对数据库字段建立索引

6、CDN

7、FullGc


1、 批量操作数据库

我们在使用 MyBatis 或者是 MyBatisPlus中自带的 batch 方法或 saveBatch 方法进行批量添加数据的时候,是有限制的,条数在1000[SQLServerException],参数在2100[PacketTooBigException],这个时候我们可以采用多线程的方式进行分段插入---SQL循环那样写

2、 耗时操作,异步执行

异步处理[使用线程池 或者是 mq],这样可以降低接口耗时

(1)使用消息队列:
比如秒杀活动下单的时候,将订单信息放入mq中,然后在添加到数据库,可能会造成消息堆积的问题,给消费者建集群,批量消费数据

(2)使用多线程
在处理请求时,可以创建多个线程来同时处理多个请求。这样可以充分利用 CPU 资源,提高处理效率。

3、 利用空间来换取时间:缓存

对于一些需要频繁访问的数据,可以使用缓存来避免每次请求都需要从数据库中读取。这样可以大大减少 IO 操作,提高接口的响应速度。

将自己要查询的数据,提前放在缓存中,需要时,直接查缓存,避免去数据库查询
可以使用redis,虽然它占用了内存,但是访问的速度快了,将数据存入redis中,用户直接从内存中取出。如果数据量过大,一定要用关系型数据库存储的话,就可以分库分表。但是有时候,我们也可以使用`NoSQL,如Elasticsearch、Hbase`等。

4、 锁粒度避免过粗

加锁粒度:就是你要锁住的范围
比如你在家上卫生间,你只要锁住卫生间就可以了吧,不需要将整个家都锁起来不让家人进门吧,卫生间就是你的加锁粒度

在做秒杀活动的时候,为了避免超卖的问题,我们一般会加上Redission锁,这个时候你如果是刚进入方法就加锁,上锁之后开始执行各种业务逻辑,这个时候锁粒度比较粗,整体效率会降低,我们之后又做了改善,因为线程不安全的地方只是发生在预减库存的时候,这个时候只在减库存的时候加锁的话,锁粒度就不会太粗了,还可以用信号量来解决

5、 对数据库字段建立索引

注意:要求字段重复率不要太高,需要考虑------->什么时候索引不生效、深度分页的问题

6、CDN

使用静态资源服务器,也就是第三方,将自己所有的静态资源压缩后放[缓存]在cdn中,这样用户进行访问的时候会从最近的节点取出数据提供给用户,这样减少了网络传输的延迟和带宽消耗,提高了用户访问网站的速度和性能
CDN还能通过负载均衡和智能路由等技术,将用户请求分发到最优的服务器节点上,进一步提高了接口的性能和稳定性。

7、FullGc


减少了Full GC的次数可以减少应用程序的停顿时间,提高应用程序的响应速度和吞吐量,从而提高接口的性能。
Full GC是一种比较耗时的操作,会导致应用程序的停顿时间变长,对于需要高并发、低延迟的接口来说,这种停顿时间会导致接口响应变慢,甚至超时,影响接口的性能。

具体来说,减少Full GC的次数可以通过以下几种方式实现:
(1)优化代码,减少对象的创建和销毁,避免产生大量的垃圾对象,从而减少Full GC的触发次数。
(2)调整JVM的参数,如调整堆大小、调整垃圾回收器的类型和参数等,使得垃圾回收更加高效,减少Full GC的触发次数。
(3)使用对象池技术,对于一些需要频繁创建和销毁的对象,可以使用对象池技术,将这些对象缓存起来,避免频繁的创建和销毁操作,从而减少Full GC的触发次数。

也可以换一个大一点的内存

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flask框架的接口并发取决于多个因素,包括服务器硬件性能、操作系统限制、网络带宽以及应用程序本身的优化程度。在默认配置下,Flask可以处理一定数并发请求,但对于高并发场景,可能需要进行一些优化。 以下是一些提高Flask接口并发的建议: 1. 使用多线程/多进程:通过在应用程序中使用多线程或多进程,可以充分利用服务器的多核处理能力。Flask本身支持通过Gunicorn等WSGI服务器启动多个进程或线程来处理请求。 2. 使用异步处理:使用异步框架(如Flask-SocketIO、Flask-AsyncIO)或异步任务队列(如Celery)可以提高接口并发处理能力。异步处理可以使应用程序更高效地处理并发请求。 3. 启用并发服务器:使用像Gunicorn或uWSGI这样的并发服务器来部署Flask应用程序。这些服务器可以同时处理多个请求,并提供更高的并发能力。 4. 缓存和优化查询:对于频繁访问的数据,可以使用缓存来减少数据库查询的次数。此外,优化数据库查询语句和索引可以提高数据库的读取性能。 5. 负载均衡:使用负载均衡器(如Nginx)可以将请求分发到多个后端服务器,从而提高整体的并发处理能力。 需要注意的是,并发的提升也可能带来服务器资源的增加,包括CPU、内存和网络带宽等。因此,在进行并发优化时,需根据实际情况进行权衡和测试,以确保系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值