高并发下接口核心业务方法限流
2017-03-21 14:46
183 查看
高并发下,为防止某个接口的主要方法被高频率的反复调用甚至是竞争伙伴恶意请求服务器导致服务器爆掉,获取接口处理业务效率缓慢。需要对接口的核心业务方法进行限制,比如说1分钟之内只允许调用1000次改接口。超过1000次的线程被阻塞,直到1分钟结束或者其他线程处理完毕。
java伪代码实现(1分钟之类方法只能被调用10次,剩余线程阻塞)
执行结果:
java伪代码实现(1分钟之类方法只能被调用10次,剩余线程阻塞)
package com.hbut.inspiration.controller; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ServiceTest { static BlockingQueue<Integer> blockingQueue = new ArrayBlockingQueue<Integer>(10); static ScheduledExecutorService service = Executors.newScheduledThreadPool(1); static ExecutorService executor= Executors.newFixedThreadPool(1000); public static void main(String[] args){ service.scheduleAtFixedRate(new Runnable() { @Override public void run() { System.out.println("60s秒钟到期"); blockingQueue.clear(); } }, 60, 60,TimeUnit.SECONDS); for(int i=0;i<1000;i++){ executor.submit(new ServiceTest().new Schedual()); } } //核心业务方法、需限制1分钟之类只能被调用10次 public void test(){ try { blockingQueue.put(1); System.out.println(Thread.currentThread().getName()+"执行其他的业务!"); //blockingQueue.poll(); } catch (InterruptedException e) { e.printStackTrace(); } } class Schedual implements Runnable{ public void run() { test(); } } }
执行结果:
相关文章推荐
- 看接口方法梳理业务员,接口完成的是业务
- 高并发业务接口开发思路(实战) 推荐
- xx并发压测xx系统注册、查询、绑定邮箱等业务,数据库连接报异常及解决方法
- Java并发编程核心方法与框架-CountDownLatch的使用
- Java并发编程核心方法与框架-ScheduledExecutorService的使用
- Java并发编程核心方法与框架-Executors的使用
- PHP接口并发测试的方法
- 【hibernate框架】核心开发接口-load和get方法
- Java并发编程核心方法与框架-CyclicBarrier的使用
- Java并发编程核心方法与框架-Fork-Join分治编程(一)
- Java并发编程核心方法与框架-Semaphore的使用
- Java并发编程核心方法与框架-TheadPoolExecutor的使用
- Java并发编程核心方法与框架-Fork-Join分治编程(二)
- java包 + 接口的定义与实现接口抽象方法 + 并发视频
- 电商实例、业务并发、网站并发及解决方法
- Java并发19:Lock系列-Lock接口基本方法学习实例
- Java并发20:Lock系列-Condition接口基本方法学习实例
- Java并发编程核心方法与框架-phaser的使用
- Java并发编程核心方法与框架-Fork-Join分治编程(二)
- Java并发编程核心方法与框架-集合框架结构简要