Downstream usages of ratelimit package
Nelz
5 years ago
1 | 1 |
|
2 | 2 |
import (
|
3 | 3 |
"context"
|
|
4 |
"time"
|
4 | 5 |
|
5 | |
rl "github.com/juju/ratelimit"
|
|
6 |
"golang.org/x/time/rate"
|
|
7 |
|
6 | 8 |
stdopentracing "github.com/opentracing/opentracing-go"
|
7 | 9 |
"github.com/sony/gobreaker"
|
8 | 10 |
|
|
30 | 32 |
var sumEndpoint endpoint.Endpoint
|
31 | 33 |
{
|
32 | 34 |
sumEndpoint = MakeSumEndpoint(svc)
|
33 | |
sumEndpoint = ratelimit.NewTokenBucketLimiter(rl.NewBucketWithRate(1, 1))(sumEndpoint)
|
|
35 |
sumEndpoint = ratelimit.NewErroringLimiter(rate.NewLimiter(rate.Every(time.Second), 1))(sumEndpoint)
|
34 | 36 |
sumEndpoint = circuitbreaker.Gobreaker(gobreaker.NewCircuitBreaker(gobreaker.Settings{}))(sumEndpoint)
|
35 | 37 |
sumEndpoint = opentracing.TraceServer(trace, "Sum")(sumEndpoint)
|
36 | 38 |
sumEndpoint = LoggingMiddleware(log.With(logger, "method", "Sum"))(sumEndpoint)
|
|
39 | 41 |
var concatEndpoint endpoint.Endpoint
|
40 | 42 |
{
|
41 | 43 |
concatEndpoint = MakeConcatEndpoint(svc)
|
42 | |
concatEndpoint = ratelimit.NewTokenBucketLimiter(rl.NewBucketWithRate(100, 100))(concatEndpoint)
|
|
44 |
concatEndpoint = ratelimit.NewErroringLimiter(rate.NewLimiter(rate.Every(time.Second), 100))(concatEndpoint)
|
43 | 45 |
concatEndpoint = circuitbreaker.Gobreaker(gobreaker.NewCircuitBreaker(gobreaker.Settings{}))(concatEndpoint)
|
44 | 46 |
concatEndpoint = opentracing.TraceServer(trace, "Concat")(concatEndpoint)
|
45 | 47 |
concatEndpoint = LoggingMiddleware(log.With(logger, "method", "Concat"))(concatEndpoint)
|
6 | 6 |
|
7 | 7 |
"google.golang.org/grpc"
|
8 | 8 |
|
9 | |
jujuratelimit "github.com/juju/ratelimit"
|
10 | 9 |
stdopentracing "github.com/opentracing/opentracing-go"
|
11 | 10 |
"github.com/sony/gobreaker"
|
12 | 11 |
oldcontext "golang.org/x/net/context"
|
|
12 |
"golang.org/x/time/rate"
|
13 | 13 |
|
14 | 14 |
"github.com/go-kit/kit/circuitbreaker"
|
15 | 15 |
"github.com/go-kit/kit/endpoint"
|
|
75 | 75 |
// construct per-endpoint circuitbreaker middlewares to demonstrate how
|
76 | 76 |
// that's done, although they could easily be combined into a single breaker
|
77 | 77 |
// for the entire remote instance, too.
|
78 | |
limiter := ratelimit.NewTokenBucketLimiter(jujuratelimit.NewBucketWithRate(100, 100))
|
|
78 |
limiter := ratelimit.NewErroringLimiter(rate.NewLimiter(rate.Every(time.Second), 100))
|
79 | 79 |
|
80 | 80 |
// Each individual endpoint is an http/transport.Client (which implements
|
81 | 81 |
// endpoint.Endpoint) that gets wrapped with various middlewares. If you
|
10 | 10 |
"strings"
|
11 | 11 |
"time"
|
12 | 12 |
|
13 | |
jujuratelimit "github.com/juju/ratelimit"
|
|
13 |
"golang.org/x/time/rate"
|
|
14 |
|
14 | 15 |
stdopentracing "github.com/opentracing/opentracing-go"
|
15 | 16 |
"github.com/sony/gobreaker"
|
16 | 17 |
|
|
67 | 68 |
// construct per-endpoint circuitbreaker middlewares to demonstrate how
|
68 | 69 |
// that's done, although they could easily be combined into a single breaker
|
69 | 70 |
// for the entire remote instance, too.
|
70 | |
limiter := ratelimit.NewTokenBucketLimiter(jujuratelimit.NewBucketWithRate(100, 100))
|
|
71 |
limiter := ratelimit.NewErroringLimiter(rate.NewLimiter(rate.Every(time.Second), 100))
|
71 | 72 |
|
72 | 73 |
// Each individual endpoint is an http/transport.Client (which implements
|
73 | 74 |
// endpoint.Endpoint) that gets wrapped with various middlewares. If you
|
3 | 3 |
"context"
|
4 | 4 |
"time"
|
5 | 5 |
|
6 | |
jujuratelimit "github.com/juju/ratelimit"
|
|
6 |
"golang.org/x/time/rate"
|
|
7 |
|
7 | 8 |
"github.com/sony/gobreaker"
|
8 | 9 |
|
9 | 10 |
"github.com/go-kit/kit/circuitbreaker"
|
|
57 | 58 |
// construct per-endpoint circuitbreaker middlewares to demonstrate how
|
58 | 59 |
// that's done, although they could easily be combined into a single breaker
|
59 | 60 |
// for the entire remote instance, too.
|
60 | |
limiter := ratelimit.NewTokenBucketLimiter(jujuratelimit.NewBucketWithRate(100, 100))
|
|
61 |
limiter := ratelimit.NewErroringLimiter(rate.NewLimiter(rate.Every(time.Second), 100))
|
61 | 62 |
|
62 | 63 |
// Each individual endpoint is an http/transport.Client (which implements
|
63 | 64 |
// endpoint.Endpoint) that gets wrapped with various middlewares. If you
|
7 | 7 |
"strings"
|
8 | 8 |
"time"
|
9 | 9 |
|
10 | |
jujuratelimit "github.com/juju/ratelimit"
|
|
10 |
"golang.org/x/time/rate"
|
|
11 |
|
11 | 12 |
"github.com/sony/gobreaker"
|
12 | 13 |
|
13 | 14 |
"github.com/go-kit/kit/circuitbreaker"
|
|
46 | 47 |
var e endpoint.Endpoint
|
47 | 48 |
e = makeUppercaseProxy(ctx, instance)
|
48 | 49 |
e = circuitbreaker.Gobreaker(gobreaker.NewCircuitBreaker(gobreaker.Settings{}))(e)
|
49 | |
e = ratelimit.NewTokenBucketLimiter(jujuratelimit.NewBucketWithRate(float64(qps), int64(qps)))(e)
|
|
50 |
e = ratelimit.NewErroringLimiter(rate.NewLimiter(rate.Every(time.Second), qps))(e)
|
50 | 51 |
endpointer = append(endpointer, e)
|
51 | 52 |
}
|
52 | 53 |
|