如何限制接口调用者对接口的调用频率?

问题:对某个对外暴露的接口加一个限制:调用者一分钟之内调用次数不能超过100次,如果超过100次就直接返回给调用者失败的信息。

给调用者一个SECRET,每次调用者需要调用接口的时候,都需要把这个SECRET带过来(为了安全需要对key进行一系列加密的措施)

一个SECRET就代表一个调用者,把相应的SECRET的调用次数放入缓存中(必须确保次数增加的原子性),并且把SECRET当做缓存的SECRET(这里如果区分方法的话,可以把方法和KEY做一次加密)。

这里主要的难点就是,如何判断调用者1分钟之内调用次数是否超过100?也就是很难确实这个1分钟的开始时间。

我现在的想法是:分别把当前秒调用的次数存入缓存。比如说,当前调用者调用次数为3,那么我就往缓存中加入KEY=SECRET_1,VALUE=3;然后调用者在第二秒调用的次数为4,那么就往缓存中加入KEY=SECRET_2,VALUE=3;如此循环,当循环到61秒的时候替换KEY=SECRET_1中得VAALUE,每次调用的时候计算SECRET_1~SECRET_60的值来判断调用次数,是否超过100次。(这里具体一秒钟调用几次,需要通过时间戳来算出是第几秒。这里以60秒为时间周期,并且以秒为一个时间单位,当然如果要求不是很准确的话,时间单位可以调大一点)

问题 请问有没有别的更好方法或者想法可以实现这个调用频率的限制?

Update:基于令牌桶的开放平台限流框架:limiter,持续开发中...

java对外接口安全问题_怎么保证对外暴露接口的安全性(调用频率限制)相关推荐

  1. 抽象类和接口设计_如何设计类和接口

    抽象类和接口设计 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它将指导您 ...

  2. lacp可以在access接口吗_【基础】防火墙接口类型全介绍

    物理接口 1) 防火墙支持的接口可以是二层接口或者三层接口 2) 二层接口:portswitch 3) 三层接口:undo portswitch 逻辑接口 1) VT(virtual template ...

  3. postman 获取接口参数_使用Postman管理API接口

    为了使服务端开发的API接口管理正规化流程化,所以,使用Postman这款神器来管理我们的接口,以方便后续项目的迭代开发. 一.什么是Postman Postman最基础的功能就是发送http请求,支 ...

  4. 华为设备接口视图_华为设备的交换机接口类型介绍及配置

    博文大纲: vlan是什么? 华为交换机的三种接口模式: 1.access模式. 2.trunk模式. 3.hybrid模式. hybrid接口的工作原理. 华为设备的各种接口模式应用场景及配置. 一 ...

  5. 其他系统 对外接口设计_外观模式:统一接口 VS.暴露细节

    什么是接口--java语言中的接口 Java类中定义的所有public型的方法都可以被简单地视为该类对外提供的接口. 抽象类中public型的抽象方法,可以被看成是整棵继承树的对外接口. 对于Java ...

  6. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...

    http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码  pu ...

  7. 如何解决java中的安全问题_如何解决java中“使用了未经检查或不安全的操作 请使用 -Xlint:unchecked 重新编译 ”的问题...

    导语:叶子写了一个Gradle构建的Spring Boot的项目,在IntelliJ IDEA的Terminal中使用命令Gradle build编译时提示:"ResultUtil.java ...

  8. java 静态内部类 线程安全问题_静态内部类-以及它的线程安全问题

    最近用上了静态内部类,作为建造者模式. 自然就会有个疑问.静态内部类,会不会有线程安全的问题?因为静态的,那么这个静态内部类是所有的外部类实例共用一个呢(这样会有线程安全的问题), 还是每个实例有自己 ...

  9. 百度地图java批量获得经纬度_从百度地图API接口批量获取地点的经纬度

    #!/usr/bin/python #coding:utf-8 import xlrd import xlwt import requests import urllib import math im ...

最新文章

  1. CSS动画:有活力的链接下划线
  2. 用cookie实现保存密码
  3. 给求职的同学的几点建议
  4. Oracle中如何删除某个用户下的所有数据的方法
  5. TYVJ P1051 选课 Label:多叉转二叉树形dp(虐心♥)
  6. R7-2 谁是赢家 (10 分)
  7. 整数数组的最大子数组
  8. PLOS_ONE_Genome-Wide Analysis of Long Noncoding RNA (lncRNA) Expression in Hepatoblastoma Tissues
  9. 《请君入瓮——APT攻防指南之兵不厌诈》—第8章8.5节安全贵在未雨绸缪
  10. react todos 简单实现
  11. WPS打不出英文引号
  12. 原 sublime text 批量删除空白行
  13. 数据转换器的工程师指南
  14. jquery获取tr下第某个td的值
  15. GCN - Semi-Supervised Classification with Graph Convolutional Networks 用图卷积进行半监督节点分类 ICLR 2017
  16. 虚拟私助理要来了,五个行业将受影响人 | 分析
  17. ​​【​观察】萨提亚为微软中国定下主基调 平台价值释放与生态伙伴共赢
  18. JS exports的用法
  19. 异步电机变压变频控制(Asynchronous VVVF)-恒压频比控制Simulink仿真
  20. 【计算机网络】彻底明白IP地址——计算相关地址

热门文章

  1. 四则运算之结对作业报告
  2. dup java_java虚拟机指令dup详解
  3. CNAS 认证机构认可规范文件清单
  4. 【SPSS笔记02】名义多选题的分析(名义多选题处理 相关分析)
  5. ABAQUS关联验证全部pass,但是cmd运行abaqus info=system找不到Fortran compiler ,Abaqus/Standard with user subroutine
  6. 将谷歌网盘的文件搬运到百度网盘
  7. 京东云服务器搭建php开发环境
  8. 蓝桥杯摔手机测试次数
  9. 2021深圳观澜中学高考成绩查询入口,2019深圳龙华中学、观澜中学、龙华高级中学录取分数线及高考成绩喜报...
  10. 精工机械表 调整时间,日期和星期的方法