Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessKeyPair ¶
type AccessKeyPair struct { AccessKey string `yaml:"accessKey" json:"accessKey,omitempty" property:"accessKey"` SecretKey string `yaml:"secretKey" json:"secretKey,omitempty" property:"secretKey"` ConsumerSide string `yaml:"consumerSide" json:"consumerSide,omitempty" property:"consumerSide"` ProviderSide string `yaml:"providerSide" json:"providerSide,omitempty" property:"providerSide"` Creator string `yaml:"creator" json:"creator,omitempty" property:"creator"` Options string `yaml:"options" json:"options,omitempty" property:"options"` }
AccessKeyPair stores the basic attributes for authentication.
type AccessKeyStorage ¶
type AccessKeyStorage interface {
GetAccessKeyPair(protocol.Invocation, *common.URL) *AccessKeyPair
}
AccessKeyStorage supports us to store our AccessKeyPair or load AccessKeyPair from other storage, such as filesystem.
type Authenticator ¶
type Authenticator interface { // Sign adds signature to the invocation Sign(protocol.Invocation, *common.URL) error // Authenticate verifies the signature of the request Authenticate(protocol.Invocation, *common.URL) error }
Authenticator defines how an Authenticator works. Custom Authenticator must be set by calling auth.SetAuthenticator before use.
type Filter ¶
type Filter interface { // Invoke is the core function of a filter, it determines the process of the filter Invoke(context.Context, protocol.Invoker, protocol.Invocation) protocol.Result // OnResponse updates the results from Invoke and then returns the modified results. OnResponse(context.Context, protocol.Result, protocol.Invoker, protocol.Invocation) protocol.Result }
Filter interface defines the functions of a filter Extension - Filter
type RejectedExecutionHandler ¶
type RejectedExecutionHandler interface { // RejectedExecution will be called if the invocation was rejected by some component. RejectedExecution(url *common.URL, invocation protocol.Invocation) protocol.Result }
RejectedExecutionHandler defines the handler to handle exceptions from invoking filters. *
- If the invocation cannot pass any validation in filter, like ExecuteLimitFilter and TpsLimitFilter,
- the implementation will be used.
- The common case is that sometimes you want to return the default value when the request was rejected.
- Or you want to be warned if any request was rejected.
- In such situation, implement this interface and register it by invoking extension.SetRejectedExecutionHandler.
type TpsLimitStrategy ¶
type TpsLimitStrategy interface { // IsAllowable will return true if this invocation is not over limitation IsAllowable() bool }
TpsLimitStrategy defines how to do the TPS limiting in method level.
- please register your implementation by invoking SetTpsLimitStrategy
- "UserProvider":
- registry: "hangzhouzk"
- protocol : "dubbo"
- interface : "com.ikurento.user.UserProvider"
- ... # other configuration
- tps.limiter: "method-service" # the name of limiter
- tps.limit.strategy: "name of implementation" # service-level
- methods:
- - name: "GetUser"
- tps.interval: 3000
- tps.limit.strategy: "name of implementation" # method-level
type TpsLimitStrategyCreator ¶
type TpsLimitStrategyCreator interface { // Create will create an instance of TpsLimitStrategy // It will be a little hard to understand this method. // The unit of interval is ms // for example, if the limit = 100, interval = 1000 // which means that the tps limitation is 100 times per 1000ms (100/1000ms) Create(limit int, interval int) TpsLimitStrategy }
TpsLimitStrategyCreator is the creator abstraction for TpsLimitStrategy
type TpsLimiter ¶
type TpsLimiter interface { // IsAllowable will check whether this invocation should be enabled for further process IsAllowable(*common.URL, protocol.Invocation) bool }
TpsLimiter defines the Limiter that judge if the TPS overs the threshold
- please register your implementation by invoking SetTpsLimiter
- The usage, for example:
- "UserProvider":
- registry: "hangzhouzk"
- protocol : "dubbo"
- interface : "com.ikurento.user.UserProvider"
- ... # other configuration
- tps.limiter: "the name of limiter",