Documentation ¶
Overview ¶
Package config is a generated protocol buffer package.
The `redisquota` adapter can be used to support Istio's quota management system. It depends on a Redis server to store quota values.
This adapter supports the [quota template](https://istio.io/docs/reference/config/policy-and-telemetry/templates/quota/).
It is generated from these files:
mixer/adapter/redisquota/config/config.proto
It has these top-level messages:
Params
Index ¶
- Variables
- type Params
- func (*Params) Descriptor() ([]byte, []int)
- func (m *Params) Marshal() (dAtA []byte, err error)
- func (m *Params) MarshalTo(dAtA []byte) (int, error)
- func (*Params) ProtoMessage()
- func (m *Params) Reset()
- func (m *Params) Size() (n int)
- func (this *Params) String() string
- func (m *Params) Unmarshal(dAtA []byte) error
- type Params_Override
- func (*Params_Override) Descriptor() ([]byte, []int)
- func (m *Params_Override) GetDimensions() map[string]string
- func (m *Params_Override) GetMaxAmount() int64
- func (m *Params_Override) Marshal() (dAtA []byte, err error)
- func (m *Params_Override) MarshalTo(dAtA []byte) (int, error)
- func (*Params_Override) ProtoMessage()
- func (m *Params_Override) Reset()
- func (m *Params_Override) Size() (n int)
- func (this *Params_Override) String() string
- func (m *Params_Override) Unmarshal(dAtA []byte) error
- type Params_Quota
- func (*Params_Quota) Descriptor() ([]byte, []int)
- func (m *Params_Quota) GetBucketDuration() time.Duration
- func (m *Params_Quota) GetMaxAmount() int64
- func (m *Params_Quota) GetName() string
- func (m *Params_Quota) GetOverrides() []*Params_Override
- func (m *Params_Quota) GetRateLimitAlgorithm() Params_QuotaAlgorithm
- func (m *Params_Quota) GetValidDuration() time.Duration
- func (m *Params_Quota) Marshal() (dAtA []byte, err error)
- func (m *Params_Quota) MarshalTo(dAtA []byte) (int, error)
- func (*Params_Quota) ProtoMessage()
- func (m *Params_Quota) Reset()
- func (m *Params_Quota) Size() (n int)
- func (this *Params_Quota) String() string
- func (m *Params_Quota) Unmarshal(dAtA []byte) error
- type Params_QuotaAlgorithm
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrInvalidLengthConfig = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowConfig = fmt.Errorf("proto: integer overflow") )
View Source
var Params_QuotaAlgorithm_name = map[int32]string{
0: "FIXED_WINDOW",
1: "ROLLING_WINDOW",
}
View Source
var Params_QuotaAlgorithm_value = map[string]int32{
"FIXED_WINDOW": 0,
"ROLLING_WINDOW": 1,
}
Functions ¶
This section is empty.
Types ¶
type Params ¶
type Params struct { // The set of known quotas. At least one quota configuration is required Quotas []Params_Quota `protobuf:"bytes,1,rep,name=quotas" json:"quotas"` // Redis connection string <hostname>:<port number> // ex) localhost:6379 RedisServerUrl string `protobuf:"bytes,2,opt,name=redis_server_url,json=redisServerUrl,proto3" json:"redis_server_url,omitempty"` // Maximum number of idle connections to redis // Default is 10 connections per every CPU as reported by runtime.NumCPU. ConnectionPoolSize int64 `protobuf:"varint,3,opt,name=connection_pool_size,json=connectionPoolSize,proto3" json:"connection_pool_size,omitempty"` }
redisquota adapter supports the rate limit quota using either fixed or rolling window algorithm. And it is using Redis as a shared data storage.
Example configuration:
```yaml redisServerUrl: localhost:6379 connectionPoolSize: 10 quotas:
- name: requestcount.quota.istio-system maxAmount: 50 validDuration: 60s bucketDuration: 1s rateLimitAlgorithm: ROLLING_WINDOW overrides:
- dimensions: destination: ratings source: reviews maxAmount: 12
- dimensions: destination: reviews maxAmount: 5
```
func (*Params) Descriptor ¶
func (*Params) ProtoMessage ¶
func (*Params) ProtoMessage()
type Params_Override ¶
type Params_Override struct { // The specific dimensions for which this override applies. // String representation of instance dimensions is used to check against configured dimensions. // dimensions should not be empty Dimensions map[string]string `` /* 144-byte string literal not displayed */ // The upper limit for this quota override. // This value should be bigger than 0 MaxAmount int64 `protobuf:"varint,2,opt,name=max_amount,json=maxAmount,proto3" json:"max_amount,omitempty"` }
func (*Params_Override) Descriptor ¶
func (*Params_Override) Descriptor() ([]byte, []int)
func (*Params_Override) GetDimensions ¶
func (m *Params_Override) GetDimensions() map[string]string
func (*Params_Override) GetMaxAmount ¶
func (m *Params_Override) GetMaxAmount() int64
func (*Params_Override) Marshal ¶
func (m *Params_Override) Marshal() (dAtA []byte, err error)
func (*Params_Override) ProtoMessage ¶
func (*Params_Override) ProtoMessage()
func (*Params_Override) Reset ¶
func (m *Params_Override) Reset()
func (*Params_Override) Size ¶
func (m *Params_Override) Size() (n int)
func (*Params_Override) String ¶
func (this *Params_Override) String() string
func (*Params_Override) Unmarshal ¶
func (m *Params_Override) Unmarshal(dAtA []byte) error
type Params_Quota ¶
type Params_Quota struct { // The name of the quota Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The upper limit for this quota. max_amount should be bigger than 0 MaxAmount int64 `protobuf:"varint,2,opt,name=max_amount,json=maxAmount,proto3" json:"max_amount,omitempty"` // The amount of time allocated quota remains valid before it is // automatically released. This is only meaningful for rate limit quotas. // value should be 0 < valid_duration ValidDuration time.Duration `protobuf:"bytes,3,opt,name=valid_duration,json=validDuration,stdduration" json:"valid_duration"` // bucket_duration will be ignored if rate_limit_algorithm is FIXED_WINDOW // value should be 0 < bucket_duration < valid_duration BucketDuration time.Duration `protobuf:"bytes,4,opt,name=bucket_duration,json=bucketDuration,stdduration" json:"bucket_duration"` // Quota management algorithm. The default value is FIXED_WINDOW RateLimitAlgorithm Params_QuotaAlgorithm `` /* 171-byte string literal not displayed */ // Overrides associated with this quota. // The first matching override is applied. Overrides []*Params_Override `protobuf:"bytes,6,rep,name=overrides" json:"overrides,omitempty"` }
func (*Params_Quota) Descriptor ¶
func (*Params_Quota) Descriptor() ([]byte, []int)
func (*Params_Quota) GetBucketDuration ¶
func (m *Params_Quota) GetBucketDuration() time.Duration
func (*Params_Quota) GetMaxAmount ¶
func (m *Params_Quota) GetMaxAmount() int64
func (*Params_Quota) GetName ¶
func (m *Params_Quota) GetName() string
func (*Params_Quota) GetOverrides ¶
func (m *Params_Quota) GetOverrides() []*Params_Override
func (*Params_Quota) GetRateLimitAlgorithm ¶
func (m *Params_Quota) GetRateLimitAlgorithm() Params_QuotaAlgorithm
func (*Params_Quota) GetValidDuration ¶
func (m *Params_Quota) GetValidDuration() time.Duration
func (*Params_Quota) Marshal ¶
func (m *Params_Quota) Marshal() (dAtA []byte, err error)
func (*Params_Quota) ProtoMessage ¶
func (*Params_Quota) ProtoMessage()
func (*Params_Quota) Reset ¶
func (m *Params_Quota) Reset()
func (*Params_Quota) Size ¶
func (m *Params_Quota) Size() (n int)
func (*Params_Quota) String ¶
func (this *Params_Quota) String() string
func (*Params_Quota) Unmarshal ¶
func (m *Params_Quota) Unmarshal(dAtA []byte) error
type Params_QuotaAlgorithm ¶
type Params_QuotaAlgorithm int32
Algorithms for rate-limiting:
const ( // FIXED_WINDOW The fixed window approach can allow 2x peak specified rate, whereas the rolling-window doesn't. FIXED_WINDOW Params_QuotaAlgorithm = 0 // ROLLING_WINDOW The rolling window algorithm's additional precision comes at the cost of increased redis resource usage. ROLLING_WINDOW Params_QuotaAlgorithm = 1 )
func (Params_QuotaAlgorithm) EnumDescriptor ¶
func (Params_QuotaAlgorithm) EnumDescriptor() ([]byte, []int)
func (Params_QuotaAlgorithm) String ¶
func (x Params_QuotaAlgorithm) String() string
Click to show internal directories.
Click to hide internal directories.