当前位置: 首页 > news >正文

无锡 做公司网站专业制作

无锡 做公司网站,专业制作,站群系统开发,花木公司网站源码在分布式系统和高并发场景中#xff0c;限流是一个非常常见且重要的需求。以下是一些常用的限流工具和库#xff0c;包括它们的特点和使用场景#xff1a; 1. Guava RateLimiter Google 的 Guava 库中的 RateLimiter 是一个简单且高效的限流工具#xff0c;适用于单节点应…在分布式系统和高并发场景中限流是一个非常常见且重要的需求。以下是一些常用的限流工具和库包括它们的特点和使用场景 1. Guava RateLimiter Google 的 Guava 库中的 RateLimiter 是一个简单且高效的限流工具适用于单节点应用。 优点: 易于使用高效 缺点: 仅适用于单节点环境不支持分布式限流 示例代码: import com.google.common.util.concurrent.RateLimiter;public class GuavaRateLimiterExample {public static void main(String[] args) {// 创建一个每秒允许10个请求的RateLimiterRateLimiter rateLimiter RateLimiter.create(10.0);for (int i 0; i 20; i) {// 尝试获取一个许可if (rateLimiter.tryAcquire()) {System.out.println(Acquired permit (i 1));// 执行限流操作} else {System.out.println(Could not acquire permit (i 1));}}} }2. Redis Lua 脚本 使用 Redis 和 Lua 脚本可以实现分布式限流因为 Redis 本身是一个高性能的分布式缓存和存储系统。 优点: 支持分布式高性能 缺点: 实现复杂度较高需要编写和维护 Lua 脚本 示例代码Lua脚本: local key KEYS[1] local limit tonumber(ARGV[1]) local current tonumber(redis.call(get, key) or 0)if current 1 limit thenreturn 0 elseredis.call(INCRBY, key, 1)redis.call(EXPIRE, key, 1)return 1 end Java代码调用Lua脚本: import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool;public class RedisRateLimiter {private JedisPool jedisPool;public RedisRateLimiter(JedisPool jedisPool) {this.jedisPool jedisPool;}public boolean tryAcquire(String key, int limit) {try (Jedis jedis jedisPool.getResource()) {String luaScript ...; // 上述Lua脚本内容Object result jedis.eval(luaScript, 1, key, String.valueOf(limit));return result.equals(1L);}} } 3. Redisson RRateLimiter Redisson 是一个基于 Redis 的 Java 客户端提供了多种分布式数据结构和服务其中包括 RRateLimiter 用于分布式限流。 优点: 支持分布式使用方便集成良好 缺点: 依赖 Redis 示例代码: import org.redisson.Redisson; import org.redisson.api.RRateLimiter; import org.redisson.api.RedissonClient; import org.redisson.config.Config;public class RedissonRateLimiterExample {public static void main(String[] args) {Config config new Config();config.useSingleServer().setAddress(redis://127.0.0.1:6379);RedissonClient redisson Redisson.create(config);RRateLimiter rateLimiter redisson.getRateLimiter(myRateLimiter);rateLimiter.trySetRate(RRateLimiter.RateType.OVERALL, 5, 1, RateIntervalUnit.SECONDS);for (int i 0; i 10; i) {if (rateLimiter.tryAcquire()) {System.out.println(Acquired permit (i 1));} else {System.out.println(Could not acquire permit (i 1));}}redisson.shutdown();} } dependencygroupIdorg.redisson/groupIdartifactIdredisson-spring-boot-starter/artifactId/dependencyspring:redis:redisson:config: |singleServerConfig:address: redis://xxxxx:6383connectionPoolSize: 30connectionMinimumIdleSize: 30password: xxxdatabase: 0connectTimeout: 1000timeout: 500retryAttempts: 3retryInterval: 1000threads: 10nettyThreads: 10transportMode: NIOComponent Configuration public class XXXControlConfig {Autowiredprivate RedissonClient redissonClient;Autowiredprivate xxxControlProperties xxxControlProperties;/*** 拆章滑动窗口*/Beanpublic RRateLimiter rateLimiter() {RRateLimiter rateLimiter redissonClient.getRateLimiter(xxx);rateLimiter.trySetRate(RateType.OVERALL,flowControlProperties.getRate().getInterval(),flowControlProperties.getRate().getPermits(),RateIntervalUnit.MINUTES);return rateLimiter;}/*** 试听最大并发数*/Beanpublic RSemaphore semaphore() {RSemaphore semaphore redissonClient.getSemaphore(xxxxx);semaphore.trySetPermits(flowControlProperties.getSemaphore().getPermits());return semaphore;}Autowiredprivate RRateLimiter rateLimiter;if(flowControlProperties.getRate().isEnabled() !rateLimiter.tryAcquire()) {throw new SystemException(Code, 系统繁忙请稍后再试);} 4. Bucket4j Bucket4j 是一个 Java 限流库提供了灵活的令牌桶算法实现可用于本地或分布式限流通过第三方存储如 Hazelcast。 优点: 灵活支持多种存储后端 缺点: 配置相对复杂 示例代码: import io.github.bucket4j.Bandwidth; import io.github.bucket4j.Bucket; import io.github.bucket4j.Bucket4j; import io.github.bucket4j.Refill;import java.time.Duration;public class Bucket4jExample {public static void main(String[] args) {Bandwidth limit Bandwidth.classic(10, Refill.greedy(10, Duration.ofSeconds(1)));Bucket bucket Bucket4j.builder().addLimit(limit).build();for (int i 0; i 20; i) {if (bucket.tryConsume(1)) {System.out.println(Acquired permit (i 1));} else {System.out.println(Could not acquire permit (i 1));}}} } 这些工具各有优缺点可以根据你的具体需求选择合适的限流工具。如果你需要分布式限流推荐使用 Redis 相关的解决方案如 Redisson 或者自定义 Lua 脚本。如果是单节点应用Guava 的 RateLimiter 或 Bucket4j 都是不错的选择。
http://www.hkea.cn/news/14327333/

相关文章:

  • 对高校网站建设的期待假冒建设厅网站
  • 网站建立平台 cms常宁网站
  • 河南平顶山网站建设公司wordpress 反广告屏蔽
  • 佛山企业网站开发公司开发一个app需要什么条件
  • 平潭综合实验区交通与建设网站黄骅贴吧的最新消息
  • iis配置网站权限苏州市网站建设培训班
  • 县城乡建设局网站中国建设信息化期刊官网
  • 成都微信网站建设报价微擎wordpress
  • 建设文化网站好处seo教程pdf
  • 网站换ip注意浏阳seo
  • 如何避免网站模板侵权设计公司是做什么的
  • 建设一个会员积分网站如何推广一个新平台
  • 宿迁专业网站三合一建设兰州网站建设搜王道下拉
  • 备案查询网站大连金普新区
  • 我做网站网站制作app软件
  • 所有购物网站的名字做网站的学什么代码
  • 网站开发公司如何运营网站上的图片多大合适
  • 网站建设与管理专业自我评价北京网页设计师工资有多少
  • 企业网站开发语言上海网站开发设计
  • 网站建设整体策划公司网站建设 目录
  • 网站建设需要什么知识wordpress发微信公众号
  • 关于医院网站建设的通知网站建设简述需求分析的基本概念及内容
  • 高质量的集团网站建设北京网站设计公司哪个好
  • 网站设计步骤百度推广工作怎么样
  • 霸州网站制作大型电商网站开发成本
  • ...课程网站建设简介企业网站免费推广方案
  • 餐饮外哪个网站做推广网站建设最好的公司排名
  • 河北省建设工程协会网站上海互联网企业100强
  • 全国网站建设公司排名做软件需要网站有哪些
  • 济南企业型网站seo月薪