001/**
002 * Copyright (c) 2015-2022, Michael Yang 杨福海 (fuhai999@gmail.com).
003 * <p>
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 * <p>
008 * http://www.apache.org/licenses/LICENSE-2.0
009 * <p>
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package io.jboot.components.limiter;
017
018import com.google.common.collect.Sets;
019
020import java.util.Set;
021
022/**
023 * 限制类型
024 */
025public class LimitType {
026
027    /**
028     * 令牌桶,通过 guava 的 RateLimiter 来实现
029     * 时间有关,每秒钟允许有多少个请求
030     */
031    public static final String TOKEN_BUCKET = "tb";
032
033    /**
034     * IP 并发量限制,通过 RateLimiter 来实现
035     * 每个 ip 在每 1 秒内允许请求的数量
036     */
037    public static final String IP_TOKEN_BUCKET = "iptb";
038
039    /**
040     * 并发量,通过 Semaphore 来实现
041     * 和并发有关,和请求时间无关
042     */
043    public static final String CONCURRENCY = "cc";
044
045    /**
046     * IP 并发量限制,通过 Semaphore 来实现
047     * 和并发有关,和请求时间无关
048     */
049    public static final String IP_CONCURRENCY = "ipcc";
050
051
052    public static Set<String> types = Sets.newHashSet(TOKEN_BUCKET, IP_TOKEN_BUCKET, CONCURRENCY, IP_CONCURRENCY);
053
054
055}