package ratelimiter
import "github.com/ydb-platform/ydb-go-sdk/v3/ratelimiter"
Example¶
Code:
{
ctx := context.TODO()
db, err := ydb.Open(ctx, "grpc://localhost:2136/local")
if err != nil {
fmt.Printf("failed to connect: %v", err)
return
}
defer db.Close(ctx) // cleanup resources
// create node
err = db.Coordination().CreateNode(ctx, "/local/ratelimiter_test", coordination.NodeConfig{
Path: "",
SelfCheckPeriodMillis: 1000,
SessionGracePeriodMillis: 1000,
ReadConsistencyMode: coordination.ConsistencyModeRelaxed,
AttachConsistencyMode: coordination.ConsistencyModeRelaxed,
RatelimiterCountersMode: coordination.RatelimiterCountersModeDetailed,
})
if err != nil {
fmt.Printf("failed to create node: %v", err)
return
}
defer func() {
// cleanup node
err = db.Coordination().DropNode(ctx, "/local/ratelimiter_test")
if err != nil {
fmt.Printf("failed to drop node: %v", err)
}
}()
// create resource
err = db.Ratelimiter().CreateResource(ctx, "/local/ratelimiter_test", ratelimiter.Resource{
ResourcePath: "test_resource",
HierarchicalDrr: ratelimiter.HierarchicalDrrSettings{
MaxUnitsPerSecond: 1,
MaxBurstSizeCoefficient: 2,
},
})
if err != nil {
fmt.Printf("failed to create resource: %v", err)
}
defer func() {
// cleanup resource
err = db.Ratelimiter().DropResource(ctx, "/local/ratelimiter_test", "test_resource")
if err != nil {
fmt.Printf("failed to drop resource: %v", err)
}
}()
// alter resource
err = db.Ratelimiter().AlterResource(ctx, "/local/ratelimiter_test", ratelimiter.Resource{
ResourcePath: "test_resource",
HierarchicalDrr: ratelimiter.HierarchicalDrrSettings{
MaxUnitsPerSecond: 3,
MaxBurstSizeCoefficient: 4,
},
})
if err != nil {
fmt.Printf("failed to alter resource: %v", err)
}
// acquire resource amount 1
err = db.Ratelimiter().AcquireResource(
ctx,
"/local/ratelimiter_test",
"test_resource",
1,
ratelimiter.WithAcquire(),
)
if err != nil {
fmt.Printf("failed to acquire resource: %v", err)
}
}
Index ¶
- func WithAcquire() options.AcquireOption
- func WithOperationCancelAfter(operationCancelAfter time.Duration) options.AcquireOption
- func WithOperationTimeout(operationTimeout time.Duration) options.AcquireOption
- func WithReport() options.AcquireOption
- type AcquireError
- type Client
- type HierarchicalDrrSettings
- type Resource
Examples ¶
Functions ¶
func WithAcquire ¶
func WithAcquire() options.AcquireOption
func WithOperationCancelAfter ¶
func WithOperationCancelAfter(operationCancelAfter time.Duration) options.AcquireOption
func WithOperationTimeout ¶
func WithOperationTimeout(operationTimeout time.Duration) options.AcquireOption
func WithReport ¶
func WithReport() options.AcquireOption
Types ¶
type AcquireError ¶
type Client ¶
type Client interface {
CreateResource(
ctx context.Context,
coordinationNodePath string,
resource Resource,
) (err error)
AlterResource(
ctx context.Context,
coordinationNodePath string,
resource Resource,
) (err error)
DropResource(
ctx context.Context,
coordinationNodePath string,
resourcePath string,
) (err error)
ListResource(
ctx context.Context,
coordinationNodePath string,
resourcePath string,
recursive bool,
) (_ []string, err error)
DescribeResource(
ctx context.Context,
coordinationNodePath string,
resourcePath string,
) (_ *Resource, err error)
AcquireResource(
ctx context.Context,
coordinationNodePath string,
resourcePath string,
amount uint64,
opts ...options.AcquireOption,
) (err error)
}
type HierarchicalDrrSettings ¶
type HierarchicalDrrSettings struct {
MaxUnitsPerSecond float64
MaxBurstSizeCoefficient float64
PrefetchCoefficient float64
PrefetchWatermark float64
}
type Resource ¶
type Resource struct {
ResourcePath string
HierarchicalDrr HierarchicalDrrSettings
}
Source Files ¶
errors.go ratelimiter.go resource.go
- Version
- v3.115.0 (latest)
- Published
- Aug 17, 2025
- Platform
- linux/amd64
- Imports
- 3 packages
- Last checked
- 8 months ago –
Tools for package owners.