在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Bucket4j: 基于Token-Bucket算法的Java限流库

Bucket4j: 基于Token-Bucket算法的Java限流库

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:6.77M
  • 下载次数:1
  • 浏览次数:167
  • 发布时间:2024-02-27
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】
Bucket4j是一个基于Java的限流库,它使用Token-Bucket算法实现。Bucket4j具有非常高的精确度,所有的计算都在整数算术中执行,这可以避免由舍入而引起的计算错误。Bucket4j还提供了丰富的配置管理功能,可以在运行时更改桶的配置。除了基本功能外,Bucket4j还支持在JVM集群中实现限流,并支持异步API。Bucket4j支持多种后端,例如JCache API、Hazelcast和Redis等。
【实例截图】
【核心代码】
文件清单
└── bucket4j-d24d02012dc3267f724381b581d255b96c0b3317
    ├── asciidoc
    │   ├── pom.xml
    │   └── src
    │       └── main
    │           └── docs
    │               └── asciidoc
    │                   ├── about.adoc
    │                   ├── basic
    │                   │   ├── basic-functionality-index.adoc
    │                   │   ├── builder-api.adoc
    │                   │   ├── concepts.adoc
    │                   │   ├── configuration-replacement.adoc
    │                   │   ├── limitations.adoc
    │                   │   ├── listener.adoc
    │                   │   ├── production-generic-checklist.adoc
    │                   │   ├── quick-start.adoc
    │                   │   └── verbose-api.adoc
    │                   ├── distributed
    │                   │   ├── concepts.adoc
    │                   │   ├── distributed-checklist.adoc
    │                   │   ├── distributed-index.adoc
    │                   │   ├── jcache
    │                   │   │   ├── coherence.adoc
    │                   │   │   ├── hazelcast.adoc
    │                   │   │   ├── ignite.adoc
    │                   │   │   ├── infinispan.adoc
    │                   │   │   └── jcache-usage.adoc
    │                   │   ├── jdbc
    │                   │   │   └── jdbc-integrations.adoc
    │                   │   └── redis
    │                   │       └── redis.adoc
    │                   ├── distributed-advanced
    │                   │   ├── advanced-index.adoc
    │                   │   ├── asynchronous.adoc
    │                   │   ├── implement-custom-database.adoc
    │                   │   └── implicit-configuration-replacement.adoc
    │                   ├── docinfo.html
    │                   ├── images
    │                   │   ├── Maxim_Bartkov.jpg
    │                   │   ├── photo.jpg
    │                   │   └── white-logo.png
    │                   ├── index.adoc
    │                   ├── previos-releases.adoc
    │                   ├── release-notes.adoc
    │                   └── toc.adoc
    ├── backward-compatibility-tests
    │   ├── common
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   └── java
    │   │       │       └── com
    │   │       │           └── bucket4j
    │   │       │               └── backward_compatibility
    │   │       │                   └── StartPostgreSQLContainer.java
    │   │       └── test
    │   │           └── resources
    │   │               └── logback-test.xml
    │   ├── current
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   └── java
    │   │       │       └── com
    │   │       │           └── bucket4j
    │   │       │               └── backward_compatibility
    │   │       │                   ├── HazelcastScenarios.java
    │   │       │                   └── PostgreSQLScenarios.java
    │   │       └── test
    │   │           └── resources
    │   │               └── logback-test.xml
    │   ├── pom.xml
    │   └── previous
    │       ├── pom.xml
    │       └── src
    │           ├── main
    │           │   └── java
    │           │       └── com
    │           │           └── bucket4j
    │           │               └── backward_compatibility
    │           │                   ├── HazelcastScenarios.java
    │           │                   └── PostgreSQLScenarios.java
    │           └── test
    │               └── resources
    │                   └── logback-test.xml
    ├── bucket4j-benchmarks
    │   ├── pom.xml
    │   └── src
    │       └── main
    │           └── java
    │               └── io
    │                   └── github
    │                       └── bucket4j
    │                           └── benchmark
    │                               ├── BaseLineWithoutSynchronization.java
    │                               ├── ConsumeMostlySuccess.java
    │                               ├── MemoryBenchmark.java
    │                               ├── state
    │                               │   ├── GuavaLimiterState.java
    │                               │   ├── LocalLockFreeState.java
    │                               │   ├── LocalSynchronizedState.java
    │                               │   ├── LocalUnsafeState_ieee754.java
    │                               │   ├── LocalUnsafeState.java
    │                               │   └── Resilience4jState.java
    │                               └── TryConsumeMostlySuccess.java
    ├── bucket4j-caffeine
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── caffeine
    │       │                       └── CaffeineProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── caffeine
    │           │                   └── CaffeineTest.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-coherence
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── grid
    │       │                       └── coherence
    │       │                           ├── CoherenceProcessor.java
    │       │                           ├── CoherenceProxyManager.java
    │       │                           └── pof
    │       │                               └── CoherenceEntryProcessorPofSerializer.java
    │       └── test
    │           ├── java
    │           │   ├── CoherencePofSerializerTest.java
    │           │   ├── CoherenceWithJdkSerializationTest.java
    │           │   └── CoherenceWithPofSerializationTest.java
    │           └── resources
    │               ├── bucket4j-pof-config-example.xml
    │               ├── logback-test.xml
    │               ├── test-coherence-config.xml
    │               └── test-coherence-jdk_serialization-config.xml
    ├── bucket4j-core
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   ├── AbstractBucket.java
    │       │                   ├── BandwidthBuilder.java
    │       │                   ├── Bandwidth.java
    │       │                   ├── BlockingBucket.java
    │       │                   ├── BlockingStrategy.java
    │       │                   ├── BucketConfiguration.java
    │       │                   ├── BucketExceptions.java
    │       │                   ├── Bucket.java
    │       │                   ├── BucketListener.java
    │       │                   ├── BucketState64BitsInteger.java
    │       │                   ├── BucketState.java
    │       │                   ├── ConfigurationBuilder.java
    │       │                   ├── ConsumptionProbe.java
    │       │                   ├── distributed
    │       │                   │   ├── AsyncBucketProxyAdapter.java
    │       │                   │   ├── AsyncBucketProxy.java
    │       │                   │   ├── AsyncOptimizationController.java
    │       │                   │   ├── AsyncVerboseBucket.java
    │       │                   │   ├── BucketProxy.java
    │       │                   │   ├── ExpirationAfterWriteStrategy.java
    │       │                   │   ├── jdbc
    │       │                   │   │   ├── BucketTableSettings.java
    │       │                   │   │   ├── PrimaryKeyMapper.java
    │       │                   │   │   ├── SQLProxyConfigurationBuilder.java
    │       │                   │   │   └── SQLProxyConfiguration.java
    │       │                   │   ├── OptimizationController.java
    │       │                   │   ├── proxy
    │       │                   │   │   ├── AbstractProxyManager.java
    │       │                   │   │   ├── AsyncCommandExecutor.java
    │       │                   │   │   ├── AsyncProxyManager.java
    │       │                   │   │   ├── BucketNotFoundException.java
    │       │                   │   │   ├── ClientSideConfig.java
    │       │                   │   │   ├── CommandExecutor.java
    │       │                   │   │   ├── DefaultAsyncBucketProxy.java
    │       │                   │   │   ├── DefaultBucketProxy.java
    │       │                   │   │   ├── ExecutionStrategy.java
    │       │                   │   │   ├── generic
    │       │                   │   │   │   ├── compare_and_swap
    │       │                   │   │   │   │   ├── AbstractCompareAndSwapBasedProxyManager.java
    │       │                   │   │   │   │   ├── AsyncCompareAndSwapOperation.java
    │       │                   │   │   │   │   └── CompareAndSwapOperation.java
    │       │                   │   │   │   ├── pessimistic_locking
    │       │                   │   │   │   │   ├── AbstractLockBasedProxyManager.java
    │       │                   │   │   │   │   └── LockBasedTransaction.java
    │       │                   │   │   │   └── select_for_update
    │       │                   │   │   │       ├── AbstractSelectForUpdateBasedProxyManager.java
    │       │                   │   │   │       ├── LockAndGetResult.java
    │       │                   │   │   │       └── SelectForUpdateBasedTransaction.java
    │       │                   │   │   ├── ImplicitConfigurationReplacement.java
    │       │                   │   │   ├── optimization
    │       │                   │   │   │   ├── batch
    │       │                   │   │   │   │   ├── AsyncBatchingExecutor.java
    │       │                   │   │   │   │   ├── BatchingExecutor.java
    │       │                   │   │   │   │   └── BatchingOptimization.java
    │       │                   │   │   │   ├── DefaultOptimizationListener.java
    │       │                   │   │   │   ├── delay
    │       │                   │   │   │   │   ├── DelayedCommandExecutor.java
    │       │                   │   │   │   │   └── DelayOptimization.java
    │       │                   │   │   │   ├── DelayParameters.java
    │       │                   │   │   │   ├── manual
    │       │                   │   │   │   │   ├── ManuallySyncingCommandExecutor.java
    │       │                   │   │   │   │   └── ManuallySyncingOptimization.java
    │       │                   │   │   │   ├── NopeOptimizationListener.java
    │       │                   │   │   │   ├── Optimization.java
    │       │                   │   │   │   ├── OptimizationListener.java
    │       │                   │   │   │   ├── Optimizations.java
    │       │                   │   │   │   ├── PredictionParameters.java
    │       │                   │   │   │   ├── predictive
    │       │                   │   │   │   │   ├── PredictiveCommandExecutor.java
    │       │                   │   │   │   │   ├── PredictiveOptimization.java
    │       │                   │   │   │   │   └── Sampling.java
    │       │                   │   │   │   └── skiponzero
    │       │                   │   │   │       ├── SkipSyncOnZeroCommandExecutor.java
    │       │                   │   │   │       └── SkipSyncOnZeroOptimization.java
    │       │                   │   │   ├── ProxyManager.java
    │       │                   │   │   ├── RecoveryStrategy.java
    │       │                   │   │   ├── RemoteAsyncBucketBuilder.java
    │       │                   │   │   └── RemoteBucketBuilder.java
    │       │                   │   ├── remote
    │       │                   │   │   ├── AbstractBinaryTransaction.java
    │       │                   │   │   ├── BucketNotFoundError.java
    │       │                   │   │   ├── CommandError.java
    │       │                   │   │   ├── CommandResult.java
    │       │                   │   │   ├── commands
    │       │                   │   │   │   ├── AddTokensCommand.java
    │       │                   │   │   │   ├── CheckConfigurationVersionAndExecuteCommand.java
    │       │                   │   │   │   ├── ConsumeAsMuchAsPossibleCommand.java
    │       │                   │   │   │   ├── ConsumeIgnoringRateLimitsCommand.java
    │       │                   │   │   │   ├── CreateInitialStateAndExecuteCommand.java
    │       │                   │   │   │   ├── CreateInitialStateWithVersionOrReplaceConfigurationAndExecuteCommand.java
    │       │                   │   │   │   ├── CreateSnapshotCommand.java
    │       │                   │   │   │   ├── EstimateAbilityToConsumeCommand.java
    │       │                   │   │   │   ├── ForceAddTokensCommand.java
    │       │                   │   │   │   ├── GetAvailableTokensCommand.java
    │       │                   │   │   │   ├── GetConfigurationCommand.java
    │       │                   │   │   │   ├── MultiCommand.java
    │       │                   │   │   │   ├── ReplaceConfigurationCommand.java
    │       │                   │   │   │   ├── ReserveAndCalculateTimeToSleepCommand.java
    │       │                   │   │   │   ├── ResetCommand.java
    │       │                   │   │   │   ├── SyncCommand.java
    │       │                   │   │   │   ├── TryConsumeAndReturnRemainingTokensCommand.java
    │       │                   │   │   │   ├── TryConsumeCommand.java
    │       │                   │   │   │   └── VerboseCommand.java
    │       │                   │   │   ├── ConfigurationNeedToBeReplacedError.java
    │       │                   │   │   ├── MultiResult.java
    │       │                   │   │   ├── MutableBucketEntry.java
    │       │                   │   │   ├── RemoteBucketState.java
    │       │                   │   │   ├── RemoteCommand.java
    │       │                   │   │   ├── RemoteStat.java
    │       │                   │   │   ├── RemoteVerboseResult.java
    │       │                   │   │   ├── Request.java
    │       │                   │   │   ├── UnsupportedNamedTypeError.java
    │       │                   │   │   ├── UnsupportedTypeError.java
    │       │                   │   │   ├── UsageOfObsoleteApiError.java
    │       │                   │   │   └── UsageOfUnsupportedApiError.java
    │       │                   │   ├── serialization
    │       │                   │   │   ├── DataOutputSerializationAdapter.java
    │       │                   │   │   ├── DeserializationAdapter.java
    │       │                   │   │   ├── InternalSerializationHelper.java
    │       │                   │   │   ├── Mapper.java
    │       │                   │   │   ├── PrimitiveSerializationHandles.java
    │       │                   │   │   ├── Scope.java
    │       │                   │   │   ├── SerializationAdapter.java
    │       │                   │   │   ├── SerializationHandle.java
    │       │                   │   │   └── SerializationHandles.java
    │       │                   │   └── versioning
    │       │                   │       ├── BackwardCompatibilityException.java
    │       │                   │       ├── UnsupportedNamedTypeException.java
    │       │                   │       ├── UnsupportedTypeException.java
    │       │                   │       ├── UsageOfObsoleteApiException.java
    │       │                   │       ├── UsageOfUnsupportedApiException.java
    │       │                   │       ├── Version.java
    │       │                   │       └── Versions.java
    │       │                   ├── EstimationProbe.java
    │       │                   ├── Experimental.java
    │       │                   ├── LimitChecker.java
    │       │                   ├── local
    │       │                   │   ├── LocalBucketBuilder.java
    │       │                   │   ├── LocalBucket.java
    │       │                   │   ├── LocalBucketSerializationHelper.java
    │       │                   │   ├── LockFreeBucket.java
    │       │                   │   ├── SynchronizationStrategy.java
    │       │                   │   ├── SynchronizedBucket.java
    │       │                   │   └── ThreadUnsafeBucket.java
    │       │                   ├── MathType.java
    │       │                   ├── Nothing.java
    │       │                   ├── Refill.java
    │       │                   ├── SchedulingBucket.java
    │       │                   ├── SimpleBucketListener.java
    │       │                   ├── TimeMeter.java
    │       │                   ├── TokensInheritanceStrategy.java
    │       │                   ├── UninterruptibleBlockingStrategy.java
    │       │                   ├── util
    │       │                   │   ├── ComparableByContent.java
    │       │                   │   └── concurrent
    │       │                   │       └── batch
    │       │                   │           ├── AsyncBatchHelper.java
    │       │                   │           └── BatchHelper.java
    │       │                   ├── VerboseBucket.java
    │       │                   └── VerboseResult.java
    │       └── test
    │           └── java
    │               └── io
    │                   └── github
    │                       └── bucket4j
    │                           ├── api_specifications
    │                           │   ├── blocking
    │                           │   │   ├── BlockingConsumeSpecification.groovy
    │                           │   │   └── BlockingTryConsumeSpecification.groovy
    │                           │   ├── regular
    │                           │   │   ├── AddTokensSpecification.groovy
    │                           │   │   ├── ConsumeAsMuchAsPossibleSpecification.groovy
    │                           │   │   ├── ConsumeIgnoringLimitsSpecification.groovy
    │                           │   │   ├── EstimateAbilityToConsumeSpecification.groovy
    │                           │   │   ├── ForceAddTokensSpecification.groovy
    │                           │   │   ├── GetAvailableTokensSpecification.groovy
    │                           │   │   ├── ResetTokensSpecification.groovy
    │                           │   │   ├── TryConsumeAndReturnRemainingSpecification.groovy
    │                           │   │   └── TryConsumeSpecification.groovy
    │                           │   └── scheduler
    │                           │       └── BlockingTryConsumeWithSchedulerSpecification.groovy
    │                           ├── BandwidthBuilderTest.groovy
    │                           ├── BlockingStrategyTest.java
    │                           ├── BucketListenerSpecification.groovy
    │                           ├── ConfigurationReplacementSpecification.groovy
    │                           ├── ConsumptionProbeTest.java
    │                           ├── core_algorithms
    │                           │   ├── BucketRoundingRulesSpecification.groovy
    │                           │   ├── FixedIntervalRefillSpecification.groovy
    │                           │   ├── HandlingArithmeticOverflowSpecification.groovy
    │                           │   ├── integer
    │                           │   │   ├── BucketStateSpecification.groovy
    │                           │   │   └── HandlingArithmeticOverflowSpecification.groovy
    │                           │   └── IntervallyAlignedRefillSpecification.groovy
    │                           ├── DetectionOfIllegalApiUsageSpecification.groovy
    │                           ├── distributed
    │                           │   ├── proxy
    │                           │   │   └── optimization
    │                           │   │       ├── batch
    │                           │   │       │   ├── BatchingCommandExecutorSpecification.groovy
    │                           │   │       │   └── mock
    │                           │   │       │       ├── CombinedMockCommand.java
    │                           │   │       │       ├── CombinedResult.java
    │                           │   │       │       ├── MockBatchExecutor.java
    │                           │   │       │       ├── MockCommand.java
    │                           │   │       │       ├── MockState.java
    │                           │   │       │       └── SingleMockCommand.java
    │                           │   │       ├── delay
    │                           │   │       │   ├── DelayedAsyncCommandExecutorSpecification.groovy
    │                           │   │       │   └── DelayedCommandExecutorSpecification.groovy
    │                           │   │       ├── OptimizationAsyncCornerCasesSpecification.groovy
    │                           │   │       ├── OptimizationCornerCasesSpecification.groovy
    │                           │   │       ├── predictive
    │                           │   │       │   ├── PredictiveAsyncCommandExecutorSpecification.groovy
    │                           │   │       │   └── PredictiveCommandExecutorSpecification.groovy
    │                           │   │       └── skipsynconzero
    │                           │   │           ├── SkipSyncOnZeroAsyncCommandExecutorSpecification.groovy
    │                           │   │           └── SkipSyncOnZeroCommandExecutorSpecification.groovy
    │                           │   ├── RemoteCornerCases.groovy
    │                           │   └── serialization
    │                           │       ├── AbstractSerializationTest.java
    │                           │       ├── HashMapOutputSerializationTest.java
    │                           │       ├── JdkDataOutputSerializationTest.java
    │                           │       └── JsonOutputSerializationTest.java
    │                           ├── ImplicitConfigurationReplacementSpecification.groovy
    │                           ├── local
    │                           │   ├── LocalBucketsSerializationTest.java
    │                           │   ├── LocalTest.java
    │                           │   └── LockFreeBucketLayout.java
    │                           ├── mock
    │                           │   ├── BlockingStrategyMock.java
    │                           │   ├── BucketType.java
    │                           │   ├── CompareAndSwapBasedProxyManagerMock.java
    │                           │   ├── LockBasedProxyManagerMock.java
    │                           │   ├── ProxyManagerMock.java
    │                           │   ├── SchedulerMock.java
    │                           │   ├── SelectForUpdateBasedProxyManagerMock.java
    │                           │   └── TimeMeterMock.java
    │                           ├── SchedulersSpecification.groovy
    │                           ├── tck
    │                           │   ├── AbstractDistributedBucketTest.java
    │                           │   └── ProxyManagerSpec.java
    │                           ├── ToStringSpecification.groovy
    │                           ├── util
    │                           │   ├── AsyncConsumerThread.java
    │                           │   ├── AsyncConsumptionScenario.java
    │                           │   ├── concurrent
    │                           │   │   ├── AsyncBatchHelperSpecification.groovy
    │                           │   │   └── BatchHelperSpecification.groovy
    │                           │   ├── ConsumerThread.java
    │                           │   ├── ConsumptionScenario.java
    │                           │   ├── Formatter.java
    │                           │   ├── PackageAccessor.java
    │                           │   └── PipeGenerator.java
    │                           └── VerboseApiTest.groovy
    ├── bucket4j-examples
    │   ├── pom.xml
    │   └── src
    │       └── test
    │           ├── java
    │           │   └── example
    │           │       └── distributed
    │           │           └── optimizers
    │           │               ├── batching
    │           │               │   └── HazelcastWithBatchingPerformanceExample.java
    │           │               ├── manual_syncing
    │           │               │   └── HazelcastWithManualSyningPerformanceExample.java
    │           │               └── skipsynconzero
    │           │                   ├── HazelcastSkipSyncOnZeroExample.java
    │           │                   └── RedisSkipSyncOnZeroExample.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-hazelcast-all
    │   ├── bucket4j-hazelcast
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   └── java
    │   │       │       └── io
    │   │       │           └── github
    │   │       │               └── bucket4j
    │   │       │                   └── grid
    │   │       │                       └── hazelcast
    │   │       │                           ├── HazelcastCompareAndSwapBasedProxyManager.java
    │   │       │                           ├── HazelcastEntryProcessor.java
    │   │       │                           ├── HazelcastLockBasedProxyManager.java
    │   │       │                           ├── HazelcastOffloadableEntryProcessor.java
    │   │       │                           ├── HazelcastProxyManager.java
    │   │       │                           ├── serialization
    │   │       │                           │   ├── HazelcastEntryProcessorSerializer.java
    │   │       │                           │   ├── HazelcastOffloadableEntryProcessorSerializer.java
    │   │       │                           │   └── SimpleBackupProcessorSerializer.java
    │   │       │                           └── SimpleBackupProcessor.java
    │   │       └── test
    │   │           ├── java
    │   │           │   └── io
    │   │           │       └── github
    │   │           │           └── bucket4j
    │   │           │               └── hazelcast
    │   │           │                   ├── HazelcastSerializerTest.java
    │   │           │                   ├── HazelcastTest.java
    │   │           │                   └── HazelcastWithCustomSerializersTest.java
    │   │           └── resources
    │   │               └── logback-test.xml
    │   ├── bucket4j-hazelcast-3
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   └── java
    │   │       │       └── io
    │   │       │           └── github
    │   │       │               └── bucket4j
    │   │       │                   └── grid
    │   │       │                       └── hazelcast
    │   │       │                           ├── HazelcastCompareAndSwapProxyManager.java
    │   │       │                           ├── HazelcastEntryProcessor.java
    │   │       │                           ├── HazelcastLockBasedProxyManager.java
    │   │       │                           ├── HazelcastProxyManager.java
    │   │       │                           ├── serialization
    │   │       │                           │   ├── HazelcastEntryProcessorSerializer.java
    │   │       │                           │   └── SimpleBackupProcessorSerializer.java
    │   │       │                           └── SimpleBackupProcessor.java
    │   │       └── test
    │   │           ├── java
    │   │           │   └── io
    │   │           │       └── github
    │   │           │           └── bucket4j
    │   │           │               └── hazelcast
    │   │           │                   ├── HazelcastSerializerTest.java
    │   │           │                   ├── HazelcastTest.java
    │   │           │                   └── HazelcastWithCustomSerializersTest.java
    │   │           └── resources
    │   │               └── logback-test.xml
    │   └── pom.xml
    ├── bucket4j-ignite
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── grid
    │       │                       └── ignite
    │       │                           ├── thick
    │       │                           │   └── IgniteProxyManager.java
    │       │                           └── thin
    │       │                               ├── cas
    │       │                               │   └── IgniteThinClientCasBasedProxyManager.java
    │       │                               ├── compute
    │       │                               │   ├── Bucket4jComputeJob.java
    │       │                               │   ├── Bucket4jComputeTask.java
    │       │                               │   ├── Bucket4jComputeTaskParams.java
    │       │                               │   ├── IgniteEntryProcessor.java
    │       │                               │   └── IgniteThinClientProxyManager.java
    │       │                               └── ThinClientUtils.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── grid
    │           │                   └── ignite
    │           │                       ├── IgniteTest.java
    │           │                       └── IgniteThinClientTest.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-infinispan-all
    │   ├── bucket4j-infinispan
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   └── java
    │   │       │       └── io
    │   │       │           └── github
    │   │       │               └── bucket4j
    │   │       │                   └── grid
    │   │       │                       └── infinispan
    │   │       │                           ├── InfinispanProcessor.java
    │   │       │                           ├── InfinispanProxyManager.java
    │   │       │                           └── serialization
    │   │       │                               ├── Bucket4jProtobufContextInitializer.java
    │   │       │                               └── InfinispanProcessorMarshaller.java
    │   │       └── test
    │   │           ├── java
    │   │           │   └── io
    │   │           │       └── github
    │   │           │           └── bucket4j
    │   │           │               └── grid
    │   │           │                   └── infinispan
    │   │           │                       └── InfinispanTest.java
    │   │           └── resources
    │   │               └── logback-test.xml
    │   └── pom.xml
    ├── bucket4j-jcache
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── grid
    │       │                       └── jcache
    │       │                           ├── CompatibilityTest.java
    │       │                           └── JCacheProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── grid
    │           │                   └── jcache
    │           │                       ├── ecache
    │           │                       │   └── EhcacheCompatibilityInvestigation.java
    │           │                       ├── hazelcast
    │           │                       │   └── HazelcastJCacheTest.java
    │           │                       ├── ignite
    │           │                       │   └── IgniteJCacheTest.java
    │           │                       └── infinispan
    │           │                           ├── InfinispanCompatibilityInvestigationTest.java
    │           │                           └── InfinispanJCacheTest.java
    │           └── resources
    │               ├── infinispan-jcache-cluster.xml
    │               └── logback-test.xml
    ├── bucket4j-mariadb
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── mariadb
    │       │                       └── MariaDBSelectForUpdateBasedProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── mariadb
    │           │                   └── MariaDBSelectForUpdateLockBasedTransactionTest.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-mssql
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── mssql
    │       │                       └── MSSQLSelectForUpdateBasedProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── mssql
    │           │                   └── MSSQLSelectForUpdateBasedProxyManagerTest.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-mysql
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── mysql
    │       │                       └── MySQLSelectForUpdateBasedProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── mysql
    │           │                   └── MySQLSelectForUpdateLockBasedTransactionTest.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-oracle
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── oracle
    │       │                       └── OracleSelectForUpdateBasedProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── oracle
    │           │                   └── OracleSelectForUpdateLockBasedTransactionTest.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-parent
    │   └── pom.xml
    ├── bucket4j-postgresql
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── postgresql
    │       │                       ├── PostgreSQLadvisoryLockBasedProxyManager.java
    │       │                       └── PostgreSQLSelectForUpdateBasedProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── postgresql
    │           │                   └── PostgreSQLTest.java
    │           └── resources
    │               └── logback-test.xml
    ├── bucket4j-redis
    │   ├── pom.xml
    │   └── src
    │       ├── main
    │       │   └── java
    │       │       └── io
    │       │           └── github
    │       │               └── bucket4j
    │       │                   └── redis
    │       │                       ├── AbstractRedisProxyManagerBuilder.java
    │       │                       ├── consts
    │       │                       │   └── LuaScripts.java
    │       │                       ├── jedis
    │       │                       │   └── cas
    │       │                       │       └── JedisBasedProxyManager.java
    │       │                       ├── lettuce
    │       │                       │   └── cas
    │       │                       │       └── LettuceBasedProxyManager.java
    │       │                       └── redisson
    │       │                           └── cas
    │       │                               └── RedissonBasedProxyManager.java
    │       └── test
    │           ├── java
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── redis
    │           │                   ├── RedisClusterTest.java
    │           │                   └── RedisStandaloneTest.java
    │           ├── lua
    │           │   ├── bucket4j-redis.lua
    │           │   └── increment-counter.lua
    │           └── resources
    │               └── logback-test.xml
    ├── experimental
    │   ├── bucket4j-lua
    │   │   ├── pom.xml
    │   │   └── src
    │   │       ├── main
    │   │       │   └── lua
    │   │       │       └── bucket4j.lua
    │   │       └── test
    │   │           ├── java
    │   │           │   ├── io
    │   │           │   │   └── github
    │   │           │   │       └── bucket4j
    │   │           │   │           └── lua
    │   │           │   │               └── Bucket4jScript.java
    │   │           │   └── luna_example
    │   │           │       └── LunaExample.java
    │   │           └── resources
    │   │               └── logback-test.xml
    │   └── pom.xml
    ├── LICENSE.txt
    ├── lincheck-tests
    │   ├── pom.xml
    │   └── src
    │       └── test
    │           ├── kotlin
    │           │   └── io
    │           │       └── github
    │           │           └── bucket4j
    │           │               └── distributed
    │           │                   └── proxy
    │           │                       └── optimization
    │           │                           └── batch
    │           │                               └── mock
    │           │                                   ├── BatchingAsyncExecutorLincheckTest.kt
    │           │                                   └── BatchingExecutorLincheckTest.kt
    │           └── resources
    │               └── logback-test.xml
    ├── mvnw
    ├── mvnw.cmd
    ├── pom.xml
    └── README.md

363 directories, 392 files

标签:

实例下载地址

Bucket4j: 基于Token-Bucket算法的Java限流库

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警