From 1789b12db2a40c1fded066910d6cc9bea53cda8d Mon Sep 17 00:00:00 2001 From: Kevin Wan Date: Mon, 8 Feb 2021 22:23:36 +0800 Subject: [PATCH] move examples into zero-examples (#453) * move examples to zero-examples * tidy go.mod * add examples refer in readme --- example/bloom/bloom.go | 18 - example/bookstore/api/bookstore.api | 29 -- example/bookstore/api/bookstore.go | 31 -- example/bookstore/api/etc/bookstore-api.yaml | 13 - .../bookstore/api/internal/config/config.go | 12 - .../api/internal/handler/addhandler.go | 29 -- .../api/internal/handler/checkhandler.go | 29 -- .../bookstore/api/internal/handler/routes.go | 27 -- .../bookstore/api/internal/logic/addlogic.go | 39 -- .../api/internal/logic/checklogic.go | 40 -- .../api/internal/svc/servicecontext.go | 23 - example/bookstore/api/internal/types/types.go | 20 - example/bookstore/go.mod | 12 - example/bookstore/go.sum | 418 ----------------- example/bookstore/rpc/add/add.go | 38 -- example/bookstore/rpc/add/add.proto | 16 - example/bookstore/rpc/add/add/add.pb.go | 305 ------------- example/bookstore/rpc/add/adder/adder.go | 38 -- example/bookstore/rpc/add/etc/add.yaml | 10 - .../rpc/add/internal/config/config.go | 12 - .../rpc/add/internal/logic/addlogic.go | 39 -- .../rpc/add/internal/server/adderserver.go | 27 -- .../rpc/add/internal/svc/servicecontext.go | 20 - example/bookstore/rpc/check/check.go | 38 -- example/bookstore/rpc/check/check.proto | 16 - example/bookstore/rpc/check/check/check.pb.go | 306 ------------- .../bookstore/rpc/check/checker/checker.go | 38 -- example/bookstore/rpc/check/etc/check.yaml | 10 - .../rpc/check/internal/config/config.go | 12 - .../rpc/check/internal/logic/checklogic.go | 36 -- .../check/internal/server/checkerserver.go | 27 -- .../rpc/check/internal/svc/servicecontext.go | 20 - example/bookstore/rpc/model/book.sql | 6 - example/bookstore/rpc/model/bookmodel.go | 100 ---- example/bookstore/rpc/model/vars.go | 5 - example/breaker/main.go | 139 ------ example/breaker/plot.py | 15 - example/config/loadfromyaml/date.yml | 2 - example/config/loadfromyaml/main.go | 21 - example/etcd/pub/Dockerfile | 22 - example/etcd/pub/pub.go | 27 -- example/etcd/sub/Dockerfile | 22 - example/etcd/sub/sub.go | 24 - example/filex/pread.go | 139 ------ example/fx/fx_test.go | 33 -- example/fx/square.go | 35 -- example/graceful/dns/api/Dockerfile | 26 -- example/graceful/dns/api/config/config.go | 11 - .../graceful/dns/api/etc/graceful-api.json | 9 - example/graceful/dns/api/graceful.api | 11 - example/graceful/dns/api/graceful.go | 32 -- .../dns/api/handler/gracefulhandler.go | 43 -- example/graceful/dns/api/handler/routes.go | 19 - .../graceful/dns/api/svc/servicecontext.go | 7 - example/graceful/dns/api/types/types.go | 7 - example/graceful/dns/rpc/Dockerfile | 22 - example/graceful/dns/rpc/etc/config.json | 4 - example/graceful/dns/rpc/graceful.proto | 15 - .../graceful/dns/rpc/graceful/graceful.pb.go | 159 ------- example/graceful/dns/rpc/gracefulrpc.go | 50 -- example/graceful/etcd/api/Dockerfile | 28 -- example/graceful/etcd/api/config/config.go | 11 - .../graceful/etcd/api/etc/graceful-api.json | 12 - example/graceful/etcd/api/graceful.api | 11 - example/graceful/etcd/api/graceful.go | 32 -- .../etcd/api/handler/gracefulhandler.go | 43 -- example/graceful/etcd/api/handler/routes.go | 19 - .../graceful/etcd/api/svc/servicecontext.go | 7 - example/graceful/etcd/api/types/types.go | 7 - .../etcd/discov/discov-namespace.yaml | 4 - example/graceful/etcd/discov/etcd.yaml | 319 ------------- example/graceful/etcd/rpc/Dockerfile | 24 - .../graceful/etcd/rpc/etc/graceful-rpc.json | 8 - example/graceful/etcd/rpc/graceful.proto | 15 - .../graceful/etcd/rpc/graceful/graceful.pb.go | 159 ------- example/graceful/etcd/rpc/gracefulrpc.go | 50 -- example/http/breaker/client/client.go | 170 ------- example/http/breaker/good.sh | 3 - example/http/breaker/heavy.sh | 3 - example/http/breaker/server.go | 59 --- example/http/breaker/start.sh | 5 - example/http/demo/main.go | 70 --- example/http/post/main.go | 65 --- example/http/shedding/Dockerfile | 11 - example/http/shedding/main.go | 63 --- example/limit/period/periodlimit.go | 67 --- example/limit/token/tokenlimit.go | 66 --- example/load/main.go | 148 ------ example/load/plot.py | 14 - example/load/simulate/client/main.go | 95 ---- example/load/simulate/client/plot.py | 13 - example/load/simulate/cpu/Dockerfile | 26 -- example/load/simulate/cpu/cpu-accuracy.md | 27 -- example/load/simulate/cpu/main.go | 7 - example/load/simulate/server/server.go | 71 --- example/logging/logging.go | 30 -- example/logging/redirector/main.go | 20 - example/mapreduce/countfunc/countfunc.go | 127 ------ example/mapreduce/deadlock/main.go | 36 -- example/mapreduce/finishvoid/finishvoid.go | 35 -- example/mapreduce/flatmap/flatmap.go | 31 -- example/mapreduce/goroutineleak/leak.go | 69 --- example/mapreduce/irregular/irregular.go | 28 -- example/mapreduce/mr/mr.go | 114 ----- example/mongo/time.go | 36 -- example/periodicalexecutor/pe.go | 22 - example/pool/pool.go | 53 --- example/rpc/client/direct/Dockerfile | 22 - example/rpc/client/direct/client.go | 45 -- example/rpc/client/lb/main.go | 57 --- example/rpc/client/stream/client.go | 61 --- example/rpc/client/unary/client.go | 39 -- example/rpc/client/unary/config.json | 5 - example/rpc/client/unary/config_etcd.json | 8 - example/rpc/proxy/Dockerfile | 16 - example/rpc/proxy/proxy.go | 49 -- example/rpc/remote/stream/greet.pb.go | 190 -------- example/rpc/remote/stream/greet.proto | 15 - example/rpc/remote/unary/greet.pb.go | 158 ------- example/rpc/remote/unary/greet.proto | 17 - example/rpc/server/stream/etc/config.json | 17 - example/rpc/server/stream/server.go | 49 -- example/rpc/server/unary/Dockerfile | 23 - example/rpc/server/unary/etc/config.json | 13 - example/rpc/server/unary/etc/config1.json | 13 - example/rpc/server/unary/etc/k8s.json | 12 - example/rpc/server/unary/server.go | 63 --- example/shorturl/api/etc/shorturl-api.yaml | 8 - .../shorturl/api/internal/config/config.go | 11 - .../api/internal/handler/expandhandler.go | 29 -- .../shorturl/api/internal/handler/routes.go | 25 - .../api/internal/handler/shortenhandler.go | 29 -- .../api/internal/logic/expandlogic.go | 38 -- .../api/internal/logic/shortenlogic.go | 38 -- .../api/internal/svc/servicecontext.go | 20 - example/shorturl/api/internal/types/types.go | 18 - example/shorturl/api/shorturl.api | 33 -- example/shorturl/api/shorturl.go | 28 -- example/shorturl/go.mod | 11 - example/shorturl/go.sum | 431 ------------------ .../shorturl/rpc/transform/etc/transform.yaml | 12 - .../rpc/transform/internal/config/config.go | 13 - .../transform/internal/logic/expandlogic.go | 35 -- .../transform/internal/logic/shortenlogic.go | 41 -- .../internal/server/transformerserver.go | 32 -- .../transform/internal/svc/servicecontext.go | 20 - .../shorturl/rpc/transform/model/shorturl.sql | 6 - .../rpc/transform/model/shorturlmodel.go | 86 ---- example/shorturl/rpc/transform/model/vars.go | 5 - .../shorturl/rpc/transform/pb/transform.pb.go | 230 ---------- example/shorturl/rpc/transform/transform.go | 40 -- .../shorturl/rpc/transform/transform.proto | 24 - .../rpc/transform/transformer/transformer.go | 96 ---- .../transform/transformer/transformer_mock.go | 64 --- .../rpc/transform/transformer/types.go | 26 -- example/signal/main.go | 70 --- example/siphash/sharding.go | 8 - example/siphash/sharding_test.go | 52 --- example/stat/Dockerfile | 8 - example/stat/main.go | 31 -- example/stringx/filter/filter.go | 21 - example/stringx/replace/replace.go | 16 - example/syncx/sharedcalls/main.go | 34 -- example/timingwheel/leak/leak.go | 60 --- example/timingwheel/main.go | 78 ---- example/tracing/edge/config.json | 13 - example/tracing/edge/main.go | 61 --- example/tracing/portal/etc/config.json | 19 - example/tracing/portal/server.go | 61 --- example/tracing/remote/portal/portal.pb.go | 158 ------- example/tracing/remote/portal/portal.proto | 15 - example/tracing/remote/user/user.pb.go | 159 ------- example/tracing/remote/user/user.proto | 17 - example/tracing/user/etc/config.json | 11 - example/tracing/user/server.go | 54 --- go.mod | 3 - go.sum | 20 - readme-cn.md | 1 + readme.md | 1 + 179 files changed, 2 insertions(+), 8376 deletions(-) delete mode 100644 example/bloom/bloom.go delete mode 100644 example/bookstore/api/bookstore.api delete mode 100644 example/bookstore/api/bookstore.go delete mode 100644 example/bookstore/api/etc/bookstore-api.yaml delete mode 100644 example/bookstore/api/internal/config/config.go delete mode 100644 example/bookstore/api/internal/handler/addhandler.go delete mode 100644 example/bookstore/api/internal/handler/checkhandler.go delete mode 100644 example/bookstore/api/internal/handler/routes.go delete mode 100644 example/bookstore/api/internal/logic/addlogic.go delete mode 100644 example/bookstore/api/internal/logic/checklogic.go delete mode 100644 example/bookstore/api/internal/svc/servicecontext.go delete mode 100644 example/bookstore/api/internal/types/types.go delete mode 100644 example/bookstore/go.mod delete mode 100644 example/bookstore/go.sum delete mode 100755 example/bookstore/rpc/add/add.go delete mode 100755 example/bookstore/rpc/add/add.proto delete mode 100644 example/bookstore/rpc/add/add/add.pb.go delete mode 100755 example/bookstore/rpc/add/adder/adder.go delete mode 100755 example/bookstore/rpc/add/etc/add.yaml delete mode 100755 example/bookstore/rpc/add/internal/config/config.go delete mode 100755 example/bookstore/rpc/add/internal/logic/addlogic.go delete mode 100755 example/bookstore/rpc/add/internal/server/adderserver.go delete mode 100755 example/bookstore/rpc/add/internal/svc/servicecontext.go delete mode 100755 example/bookstore/rpc/check/check.go delete mode 100755 example/bookstore/rpc/check/check.proto delete mode 100644 example/bookstore/rpc/check/check/check.pb.go delete mode 100755 example/bookstore/rpc/check/checker/checker.go delete mode 100755 example/bookstore/rpc/check/etc/check.yaml delete mode 100755 example/bookstore/rpc/check/internal/config/config.go delete mode 100755 example/bookstore/rpc/check/internal/logic/checklogic.go delete mode 100755 example/bookstore/rpc/check/internal/server/checkerserver.go delete mode 100755 example/bookstore/rpc/check/internal/svc/servicecontext.go delete mode 100644 example/bookstore/rpc/model/book.sql delete mode 100755 example/bookstore/rpc/model/bookmodel.go delete mode 100644 example/bookstore/rpc/model/vars.go delete mode 100644 example/breaker/main.go delete mode 100644 example/breaker/plot.py delete mode 100644 example/config/loadfromyaml/date.yml delete mode 100644 example/config/loadfromyaml/main.go delete mode 100644 example/etcd/pub/Dockerfile delete mode 100644 example/etcd/pub/pub.go delete mode 100644 example/etcd/sub/Dockerfile delete mode 100644 example/etcd/sub/sub.go delete mode 100644 example/filex/pread.go delete mode 100644 example/fx/fx_test.go delete mode 100644 example/fx/square.go delete mode 100644 example/graceful/dns/api/Dockerfile delete mode 100644 example/graceful/dns/api/config/config.go delete mode 100644 example/graceful/dns/api/etc/graceful-api.json delete mode 100644 example/graceful/dns/api/graceful.api delete mode 100644 example/graceful/dns/api/graceful.go delete mode 100644 example/graceful/dns/api/handler/gracefulhandler.go delete mode 100644 example/graceful/dns/api/handler/routes.go delete mode 100644 example/graceful/dns/api/svc/servicecontext.go delete mode 100644 example/graceful/dns/api/types/types.go delete mode 100644 example/graceful/dns/rpc/Dockerfile delete mode 100644 example/graceful/dns/rpc/etc/config.json delete mode 100644 example/graceful/dns/rpc/graceful.proto delete mode 100644 example/graceful/dns/rpc/graceful/graceful.pb.go delete mode 100644 example/graceful/dns/rpc/gracefulrpc.go delete mode 100644 example/graceful/etcd/api/Dockerfile delete mode 100644 example/graceful/etcd/api/config/config.go delete mode 100644 example/graceful/etcd/api/etc/graceful-api.json delete mode 100644 example/graceful/etcd/api/graceful.api delete mode 100644 example/graceful/etcd/api/graceful.go delete mode 100644 example/graceful/etcd/api/handler/gracefulhandler.go delete mode 100644 example/graceful/etcd/api/handler/routes.go delete mode 100644 example/graceful/etcd/api/svc/servicecontext.go delete mode 100644 example/graceful/etcd/api/types/types.go delete mode 100644 example/graceful/etcd/discov/discov-namespace.yaml delete mode 100644 example/graceful/etcd/discov/etcd.yaml delete mode 100644 example/graceful/etcd/rpc/Dockerfile delete mode 100644 example/graceful/etcd/rpc/etc/graceful-rpc.json delete mode 100644 example/graceful/etcd/rpc/graceful.proto delete mode 100644 example/graceful/etcd/rpc/graceful/graceful.pb.go delete mode 100644 example/graceful/etcd/rpc/gracefulrpc.go delete mode 100644 example/http/breaker/client/client.go delete mode 100644 example/http/breaker/good.sh delete mode 100644 example/http/breaker/heavy.sh delete mode 100644 example/http/breaker/server.go delete mode 100644 example/http/breaker/start.sh delete mode 100644 example/http/demo/main.go delete mode 100644 example/http/post/main.go delete mode 100644 example/http/shedding/Dockerfile delete mode 100644 example/http/shedding/main.go delete mode 100644 example/limit/period/periodlimit.go delete mode 100644 example/limit/token/tokenlimit.go delete mode 100644 example/load/main.go delete mode 100644 example/load/plot.py delete mode 100644 example/load/simulate/client/main.go delete mode 100644 example/load/simulate/client/plot.py delete mode 100644 example/load/simulate/cpu/Dockerfile delete mode 100644 example/load/simulate/cpu/cpu-accuracy.md delete mode 100644 example/load/simulate/cpu/main.go delete mode 100644 example/load/simulate/server/server.go delete mode 100644 example/logging/logging.go delete mode 100644 example/logging/redirector/main.go delete mode 100644 example/mapreduce/countfunc/countfunc.go delete mode 100644 example/mapreduce/deadlock/main.go delete mode 100644 example/mapreduce/finishvoid/finishvoid.go delete mode 100644 example/mapreduce/flatmap/flatmap.go delete mode 100644 example/mapreduce/goroutineleak/leak.go delete mode 100644 example/mapreduce/irregular/irregular.go delete mode 100644 example/mapreduce/mr/mr.go delete mode 100644 example/mongo/time.go delete mode 100644 example/periodicalexecutor/pe.go delete mode 100644 example/pool/pool.go delete mode 100644 example/rpc/client/direct/Dockerfile delete mode 100644 example/rpc/client/direct/client.go delete mode 100644 example/rpc/client/lb/main.go delete mode 100644 example/rpc/client/stream/client.go delete mode 100644 example/rpc/client/unary/client.go delete mode 100644 example/rpc/client/unary/config.json delete mode 100644 example/rpc/client/unary/config_etcd.json delete mode 100644 example/rpc/proxy/Dockerfile delete mode 100644 example/rpc/proxy/proxy.go delete mode 100644 example/rpc/remote/stream/greet.pb.go delete mode 100644 example/rpc/remote/stream/greet.proto delete mode 100644 example/rpc/remote/unary/greet.pb.go delete mode 100644 example/rpc/remote/unary/greet.proto delete mode 100644 example/rpc/server/stream/etc/config.json delete mode 100644 example/rpc/server/stream/server.go delete mode 100644 example/rpc/server/unary/Dockerfile delete mode 100644 example/rpc/server/unary/etc/config.json delete mode 100644 example/rpc/server/unary/etc/config1.json delete mode 100644 example/rpc/server/unary/etc/k8s.json delete mode 100644 example/rpc/server/unary/server.go delete mode 100644 example/shorturl/api/etc/shorturl-api.yaml delete mode 100644 example/shorturl/api/internal/config/config.go delete mode 100644 example/shorturl/api/internal/handler/expandhandler.go delete mode 100644 example/shorturl/api/internal/handler/routes.go delete mode 100644 example/shorturl/api/internal/handler/shortenhandler.go delete mode 100644 example/shorturl/api/internal/logic/expandlogic.go delete mode 100644 example/shorturl/api/internal/logic/shortenlogic.go delete mode 100644 example/shorturl/api/internal/svc/servicecontext.go delete mode 100644 example/shorturl/api/internal/types/types.go delete mode 100644 example/shorturl/api/shorturl.api delete mode 100644 example/shorturl/api/shorturl.go delete mode 100644 example/shorturl/go.mod delete mode 100644 example/shorturl/go.sum delete mode 100755 example/shorturl/rpc/transform/etc/transform.yaml delete mode 100755 example/shorturl/rpc/transform/internal/config/config.go delete mode 100755 example/shorturl/rpc/transform/internal/logic/expandlogic.go delete mode 100755 example/shorturl/rpc/transform/internal/logic/shortenlogic.go delete mode 100755 example/shorturl/rpc/transform/internal/server/transformerserver.go delete mode 100755 example/shorturl/rpc/transform/internal/svc/servicecontext.go delete mode 100644 example/shorturl/rpc/transform/model/shorturl.sql delete mode 100755 example/shorturl/rpc/transform/model/shorturlmodel.go delete mode 100755 example/shorturl/rpc/transform/model/vars.go delete mode 100644 example/shorturl/rpc/transform/pb/transform.pb.go delete mode 100755 example/shorturl/rpc/transform/transform.go delete mode 100644 example/shorturl/rpc/transform/transform.proto delete mode 100755 example/shorturl/rpc/transform/transformer/transformer.go delete mode 100644 example/shorturl/rpc/transform/transformer/transformer_mock.go delete mode 100755 example/shorturl/rpc/transform/transformer/types.go delete mode 100644 example/signal/main.go delete mode 100644 example/siphash/sharding.go delete mode 100644 example/siphash/sharding_test.go delete mode 100644 example/stat/Dockerfile delete mode 100644 example/stat/main.go delete mode 100644 example/stringx/filter/filter.go delete mode 100644 example/stringx/replace/replace.go delete mode 100644 example/syncx/sharedcalls/main.go delete mode 100644 example/timingwheel/leak/leak.go delete mode 100644 example/timingwheel/main.go delete mode 100644 example/tracing/edge/config.json delete mode 100644 example/tracing/edge/main.go delete mode 100644 example/tracing/portal/etc/config.json delete mode 100644 example/tracing/portal/server.go delete mode 100644 example/tracing/remote/portal/portal.pb.go delete mode 100644 example/tracing/remote/portal/portal.proto delete mode 100644 example/tracing/remote/user/user.pb.go delete mode 100644 example/tracing/remote/user/user.proto delete mode 100644 example/tracing/user/etc/config.json delete mode 100644 example/tracing/user/server.go diff --git a/example/bloom/bloom.go b/example/bloom/bloom.go deleted file mode 100644 index cd812f47..00000000 --- a/example/bloom/bloom.go +++ /dev/null @@ -1,18 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/tal-tech/go-zero/core/bloom" - "github.com/tal-tech/go-zero/core/stores/redis" -) - -func main() { - store := redis.NewRedis("localhost:6379", "node") - filter := bloom.New(store, "testbloom", 64) - filter.Add([]byte("kevin")) - filter.Add([]byte("wan")) - fmt.Println(filter.Exists([]byte("kevin"))) - fmt.Println(filter.Exists([]byte("wan"))) - fmt.Println(filter.Exists([]byte("nothing"))) -} diff --git a/example/bookstore/api/bookstore.api b/example/bookstore/api/bookstore.api deleted file mode 100644 index 31764359..00000000 --- a/example/bookstore/api/bookstore.api +++ /dev/null @@ -1,29 +0,0 @@ -type ( - addReq { - book string `form:"book"` - price int64 `form:"price"` - } - - addResp { - ok bool `json:"ok"` - } -) - -type ( - checkReq { - book string `form:"book"` - } - - checkResp { - found bool `json:"found"` - price int64 `json:"price"` - } -) - -service bookstore-api { - @handler AddHandler - get /add (addReq) returns (addResp) - - @handler CheckHandler - get /check (checkReq) returns (checkResp) -} \ No newline at end of file diff --git a/example/bookstore/api/bookstore.go b/example/bookstore/api/bookstore.go deleted file mode 100644 index 5db086c0..00000000 --- a/example/bookstore/api/bookstore.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "flag" - "fmt" - - "bookstore/api/internal/config" - "bookstore/api/internal/handler" - "bookstore/api/internal/svc" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/rest" -) - -var configFile = flag.String("f", "etc/bookstore-api.yaml", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - - ctx := svc.NewServiceContext(c) - server := rest.MustNewServer(c.RestConf) - defer server.Stop() - - handler.RegisterHandlers(server, ctx) - - fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port) - server.Start() -} diff --git a/example/bookstore/api/etc/bookstore-api.yaml b/example/bookstore/api/etc/bookstore-api.yaml deleted file mode 100644 index eb6f47fe..00000000 --- a/example/bookstore/api/etc/bookstore-api.yaml +++ /dev/null @@ -1,13 +0,0 @@ -Name: bookstore-api -Host: 0.0.0.0 -Port: 8888 -Add: - Etcd: - Hosts: - - localhost:2379 - Key: add.rpc -Check: - Etcd: - Hosts: - - localhost:2379 - Key: check.rpc \ No newline at end of file diff --git a/example/bookstore/api/internal/config/config.go b/example/bookstore/api/internal/config/config.go deleted file mode 100644 index 50e5af8d..00000000 --- a/example/bookstore/api/internal/config/config.go +++ /dev/null @@ -1,12 +0,0 @@ -package config - -import ( - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/zrpc" -) - -type Config struct { - rest.RestConf - Add zrpc.RpcClientConf - Check zrpc.RpcClientConf -} diff --git a/example/bookstore/api/internal/handler/addhandler.go b/example/bookstore/api/internal/handler/addhandler.go deleted file mode 100644 index 5c02e7dc..00000000 --- a/example/bookstore/api/internal/handler/addhandler.go +++ /dev/null @@ -1,29 +0,0 @@ -package handler - -import ( - "net/http" - - "bookstore/api/internal/logic" - "bookstore/api/internal/svc" - "bookstore/api/internal/types" - - "github.com/tal-tech/go-zero/rest/httpx" -) - -func AddHandler(ctx *svc.ServiceContext) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req types.AddReq - if err := httpx.Parse(r, &req); err != nil { - httpx.Error(w, err) - return - } - - l := logic.NewAddLogic(r.Context(), ctx) - resp, err := l.Add(req) - if err != nil { - httpx.Error(w, err) - } else { - httpx.WriteJson(w, http.StatusOK, resp) - } - } -} diff --git a/example/bookstore/api/internal/handler/checkhandler.go b/example/bookstore/api/internal/handler/checkhandler.go deleted file mode 100644 index 35130b55..00000000 --- a/example/bookstore/api/internal/handler/checkhandler.go +++ /dev/null @@ -1,29 +0,0 @@ -package handler - -import ( - "net/http" - - "bookstore/api/internal/logic" - "bookstore/api/internal/svc" - "bookstore/api/internal/types" - - "github.com/tal-tech/go-zero/rest/httpx" -) - -func CheckHandler(ctx *svc.ServiceContext) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req types.CheckReq - if err := httpx.Parse(r, &req); err != nil { - httpx.Error(w, err) - return - } - - l := logic.NewCheckLogic(r.Context(), ctx) - resp, err := l.Check(req) - if err != nil { - httpx.Error(w, err) - } else { - httpx.WriteJson(w, http.StatusOK, resp) - } - } -} diff --git a/example/bookstore/api/internal/handler/routes.go b/example/bookstore/api/internal/handler/routes.go deleted file mode 100644 index 5f618068..00000000 --- a/example/bookstore/api/internal/handler/routes.go +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package handler - -import ( - "net/http" - - "bookstore/api/internal/svc" - - "github.com/tal-tech/go-zero/rest" -) - -func RegisterHandlers(engine *rest.Server, serverCtx *svc.ServiceContext) { - engine.AddRoutes( - []rest.Route{ - { - Method: http.MethodGet, - Path: "/add", - Handler: AddHandler(serverCtx), - }, - { - Method: http.MethodGet, - Path: "/check", - Handler: CheckHandler(serverCtx), - }, - }, - ) -} diff --git a/example/bookstore/api/internal/logic/addlogic.go b/example/bookstore/api/internal/logic/addlogic.go deleted file mode 100644 index f2102b7d..00000000 --- a/example/bookstore/api/internal/logic/addlogic.go +++ /dev/null @@ -1,39 +0,0 @@ -package logic - -import ( - "context" - - "bookstore/api/internal/svc" - "bookstore/api/internal/types" - "bookstore/rpc/add/adder" - - "github.com/tal-tech/go-zero/core/logx" -) - -type AddLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) AddLogic { - return AddLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *AddLogic) Add(req types.AddReq) (*types.AddResp, error) { - resp, err := l.svcCtx.Adder.Add(l.ctx, &adder.AddReq{ - Book: req.Book, - Price: req.Price, - }) - if err != nil { - return nil, err - } - - return &types.AddResp{ - Ok: resp.Ok, - }, nil -} diff --git a/example/bookstore/api/internal/logic/checklogic.go b/example/bookstore/api/internal/logic/checklogic.go deleted file mode 100644 index 9563a228..00000000 --- a/example/bookstore/api/internal/logic/checklogic.go +++ /dev/null @@ -1,40 +0,0 @@ -package logic - -import ( - "context" - - "bookstore/api/internal/svc" - "bookstore/api/internal/types" - "bookstore/rpc/check/checker" - - "github.com/tal-tech/go-zero/core/logx" -) - -type CheckLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewCheckLogic(ctx context.Context, svcCtx *svc.ServiceContext) CheckLogic { - return CheckLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *CheckLogic) Check(req types.CheckReq) (*types.CheckResp, error) { - resp, err := l.svcCtx.Checker.Check(l.ctx, &checker.CheckReq{ - Book: req.Book, - }) - if err != nil { - logx.Error(err) - return &types.CheckResp{}, err - } - - return &types.CheckResp{ - Found: resp.Found, - Price: resp.Price, - }, nil -} diff --git a/example/bookstore/api/internal/svc/servicecontext.go b/example/bookstore/api/internal/svc/servicecontext.go deleted file mode 100644 index d0ba409d..00000000 --- a/example/bookstore/api/internal/svc/servicecontext.go +++ /dev/null @@ -1,23 +0,0 @@ -package svc - -import ( - "bookstore/api/internal/config" - "bookstore/rpc/add/adder" - "bookstore/rpc/check/checker" - - "github.com/tal-tech/go-zero/zrpc" -) - -type ServiceContext struct { - Config config.Config - Adder adder.Adder - Checker checker.Checker -} - -func NewServiceContext(c config.Config) *ServiceContext { - return &ServiceContext{ - Config: c, - Adder: adder.NewAdder(zrpc.MustNewClient(c.Add)), - Checker: checker.NewChecker(zrpc.MustNewClient(c.Check)), - } -} diff --git a/example/bookstore/api/internal/types/types.go b/example/bookstore/api/internal/types/types.go deleted file mode 100644 index a7bf3c2d..00000000 --- a/example/bookstore/api/internal/types/types.go +++ /dev/null @@ -1,20 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package types - -type AddReq struct { - Book string `form:"book"` - Price int64 `form:"price"` -} - -type AddResp struct { - Ok bool `json:"ok"` -} - -type CheckReq struct { - Book string `form:"book"` -} - -type CheckResp struct { - Found bool `json:"found"` - Price int64 `json:"price"` -} diff --git a/example/bookstore/go.mod b/example/bookstore/go.mod deleted file mode 100644 index 6ce1004b..00000000 --- a/example/bookstore/go.mod +++ /dev/null @@ -1,12 +0,0 @@ -module bookstore - -go 1.15 - -require ( - github.com/golang/mock v1.4.3 - github.com/golang/protobuf v1.4.2 - github.com/tal-tech/go-zero v1.0.27 - golang.org/x/net v0.0.0-20200707034311-ab3426394381 - google.golang.org/grpc v1.29.1 - google.golang.org/protobuf v1.25.0 -) diff --git a/example/bookstore/go.sum b/example/bookstore/go.sum deleted file mode 100644 index 26965d3d..00000000 --- a/example/bookstore/go.sum +++ /dev/null @@ -1,418 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= -github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM= -github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6 h1:45bxf7AZMwWcqkLzDAQugVEwedisr5nRJ1r+7LYnv0U= -github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis v2.5.0+incompatible h1:yBHoLpsyjupjz3NL3MhKMVkR41j82Yjf3KFv7ApYzUI= -github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dsymonds/gotoc v0.0.0-20160928043926-5aebcfc91819/go.mod h1:MvzMVHq8BH2Ji/o8TGDocVA70byvLrAgFTxkEnmjO4Y= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4 h1:qk/FSDDxo05wdJH28W+p5yivv7LuLYLRXPPD8KQCtZs= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-redis/redis v6.15.7+incompatible h1:3skhDh95XQMpnqeqNftPkQD9jL9e5e36z/1SUm6dy1U= -github.com/go-redis/redis v6.15.7+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-xorm/builder v0.3.4 h1:FxkeGB4Cggdw3tPwutLCpfjng2jugfkg6LDMrd/KsoY= -github.com/go-xorm/builder v0.3.4/go.mod h1:KxkQkNN1DpPKTedxXyTQcmH+rXfvk4LZ9SOOBoZBAxw= -github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:9wScpmSP5A3Bk8V3XHWUcJmYTh+ZnlHVyc+A4oZYS3Y= -github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.4.3 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= -github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gops v0.3.7/go.mod h1:bj0cwMmX1X4XIJFTjR99R5sCxNssNJ8HebFNvoQlmgY= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.14.3 h1:OCJlWkOUoTnl0neNGlf4fUm3TmbEtguw7vR+nGtnDjY= -github.com/grpc-ecosystem/grpc-gateway v1.14.3/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/iancoleman/strcase v0.1.2/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= -github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= -github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/keybase/go-ps v0.0.0-20161005175911-668c8856d999/go.mod h1:hY+WOq6m2FpbvyrI93sMaypsttvaIL5nhVR92dTMUcQ= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.5.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.5.1 h1:bdHYieyGlH+6OLEk2YQha8THib30KP0/yD0YH9m6xcA= -github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/tal-tech/go-zero v1.0.16 h1:oT7sOFftEUdD/XcXF0xEugX9yhnw4DcQkeMNFLi5KO8= -github.com/tal-tech/go-zero v1.0.16/go.mod h1:y2wBHTkxNJw79K9/wCSeDKzv2pCT6x45oOmXEsJdQK8= -github.com/tal-tech/go-zero v1.0.27 h1:QMIbaTxibMc/OsO5RTAuKZ8ndbl2dGN6pITQEtp2x/A= -github.com/tal-tech/go-zero v1.0.27/go.mod h1:JtNXlsh/CgeIHyQnt5C5M2IcSevW7V0NAnqO93TQgm8= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6 h1:lYIiVDtZnyTWlNwiAxLj0bbpTcx1BWCFhXjfsvmPdNc= -github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb h1:ZkM6LRnq40pR1Ox0hTHlnpkcOTuFIDQpZ1IN8rKKhX0= -github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ= -go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= -go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698 h1:jWtjCJX1qxhHISBMLRztWwR+EXkI7MJAF2HjHAE/x/I= -go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698/go.mod h1:YoUyTScD3Vcv2RBm3eGVOq7i1ULiz3OuXoQFWOirmAM= -go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/automaxprocs v1.3.0 h1:II28aZoGdaglS5vVNnspf28lnZpXScxtIozx1lAjdb0= -go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= -go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.14.1 h1:nYDKopTbvAPq/NrUVZwT15y2lpROBiLLyoRTbXOYWOo= -go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20171017063910-8dbc5d05d6ed/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1 h1:sIky/MyNRSHTrdxfsiUSS4WIAMvInbeXljJz+jDjeYE= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200410132612-ae9902aceb98 h1:ibc1eDGW5ajwA4qzFTj0WHlD9eofMe1gAre+A0a3Vhs= -golang.org/x/tools v0.0.0-20200410132612-ae9902aceb98/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f h1:ohwtWcCwB/fZUxh/vjazHorYmBnua3NmY3CAjwC7mEA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/goversion v1.0.0/go.mod h1:Eih9y/uIBS3ulggl7KNJ09xGSLcuNaLgmvvqa07sgfo= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/example/bookstore/rpc/add/add.go b/example/bookstore/rpc/add/add.go deleted file mode 100755 index 18ea96bb..00000000 --- a/example/bookstore/rpc/add/add.go +++ /dev/null @@ -1,38 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: add.proto - -package main - -import ( - "flag" - "fmt" - - "bookstore/rpc/add/add" - "bookstore/rpc/add/internal/config" - "bookstore/rpc/add/internal/server" - "bookstore/rpc/add/internal/svc" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/add.yaml", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - ctx := svc.NewServiceContext(c) - adderSrv := server.NewAdderServer(ctx) - - s, err := zrpc.NewServer(c.RpcServerConf, func(grpcServer *grpc.Server) { - add.RegisterAdderServer(grpcServer, adderSrv) - }) - logx.Must(err) - - fmt.Printf("Starting rpc server at %s...\n", c.ListenOn) - s.Start() -} diff --git a/example/bookstore/rpc/add/add.proto b/example/bookstore/rpc/add/add.proto deleted file mode 100755 index ee9671cd..00000000 --- a/example/bookstore/rpc/add/add.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -package add; - -message addReq { - string book = 1; - int64 price = 2; -} - -message addResp { - bool ok = 1; -} - -service adder { - rpc add(addReq) returns(addResp); -} diff --git a/example/bookstore/rpc/add/add/add.pb.go b/example/bookstore/rpc/add/add/add.pb.go deleted file mode 100644 index ffd8d1b5..00000000 --- a/example/bookstore/rpc/add/add/add.pb.go +++ /dev/null @@ -1,305 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: add.proto - -package add - -import ( - context "context" - proto "github.com/golang/protobuf/proto" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type AddReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Book string `protobuf:"bytes,1,opt,name=book,proto3" json:"book,omitempty"` - Price int64 `protobuf:"varint,2,opt,name=price,proto3" json:"price,omitempty"` -} - -func (x *AddReq) Reset() { - *x = AddReq{} - if protoimpl.UnsafeEnabled { - mi := &file_add_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddReq) ProtoMessage() {} - -func (x *AddReq) ProtoReflect() protoreflect.Message { - mi := &file_add_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddReq.ProtoReflect.Descriptor instead. -func (*AddReq) Descriptor() ([]byte, []int) { - return file_add_proto_rawDescGZIP(), []int{0} -} - -func (x *AddReq) GetBook() string { - if x != nil { - return x.Book - } - return "" -} - -func (x *AddReq) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 -} - -type AddResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` -} - -func (x *AddResp) Reset() { - *x = AddResp{} - if protoimpl.UnsafeEnabled { - mi := &file_add_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddResp) ProtoMessage() {} - -func (x *AddResp) ProtoReflect() protoreflect.Message { - mi := &file_add_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AddResp.ProtoReflect.Descriptor instead. -func (*AddResp) Descriptor() ([]byte, []int) { - return file_add_proto_rawDescGZIP(), []int{1} -} - -func (x *AddResp) GetOk() bool { - if x != nil { - return x.Ok - } - return false -} - -var File_add_proto protoreflect.FileDescriptor - -var file_add_proto_rawDesc = []byte{ - 0x0a, 0x09, 0x61, 0x64, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x61, 0x64, 0x64, - 0x22, 0x32, 0x0a, 0x06, 0x61, 0x64, 0x64, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, - 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x22, 0x19, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x32, - 0x29, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x03, 0x61, 0x64, 0x64, 0x12, - 0x0b, 0x2e, 0x61, 0x64, 0x64, 0x2e, 0x61, 0x64, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x0c, 0x2e, 0x61, - 0x64, 0x64, 0x2e, 0x61, 0x64, 0x64, 0x52, 0x65, 0x73, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_add_proto_rawDescOnce sync.Once - file_add_proto_rawDescData = file_add_proto_rawDesc -) - -func file_add_proto_rawDescGZIP() []byte { - file_add_proto_rawDescOnce.Do(func() { - file_add_proto_rawDescData = protoimpl.X.CompressGZIP(file_add_proto_rawDescData) - }) - return file_add_proto_rawDescData -} - -var file_add_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_add_proto_goTypes = []interface{}{ - (*AddReq)(nil), // 0: add.addReq - (*AddResp)(nil), // 1: add.addResp -} -var file_add_proto_depIdxs = []int32{ - 0, // 0: add.adder.add:input_type -> add.addReq - 1, // 1: add.adder.add:output_type -> add.addResp - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_add_proto_init() } -func file_add_proto_init() { - if File_add_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_add_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_add_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_add_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_add_proto_goTypes, - DependencyIndexes: file_add_proto_depIdxs, - MessageInfos: file_add_proto_msgTypes, - }.Build() - File_add_proto = out.File - file_add_proto_rawDesc = nil - file_add_proto_goTypes = nil - file_add_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// AdderClient is the client API for Adder service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type AdderClient interface { - Add(ctx context.Context, in *AddReq, opts ...grpc.CallOption) (*AddResp, error) -} - -type adderClient struct { - cc grpc.ClientConnInterface -} - -func NewAdderClient(cc grpc.ClientConnInterface) AdderClient { - return &adderClient{cc} -} - -func (c *adderClient) Add(ctx context.Context, in *AddReq, opts ...grpc.CallOption) (*AddResp, error) { - out := new(AddResp) - err := c.cc.Invoke(ctx, "/add.adder/add", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// AdderServer is the server API for Adder service. -type AdderServer interface { - Add(context.Context, *AddReq) (*AddResp, error) -} - -// UnimplementedAdderServer can be embedded to have forward compatible implementations. -type UnimplementedAdderServer struct { -} - -func (*UnimplementedAdderServer) Add(context.Context, *AddReq) (*AddResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method Add not implemented") -} - -func RegisterAdderServer(s *grpc.Server, srv AdderServer) { - s.RegisterService(&_Adder_serviceDesc, srv) -} - -func _Adder_Add_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AddReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AdderServer).Add(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/add.adder/Add", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AdderServer).Add(ctx, req.(*AddReq)) - } - return interceptor(ctx, in, info, handler) -} - -var _Adder_serviceDesc = grpc.ServiceDesc{ - ServiceName: "add.adder", - HandlerType: (*AdderServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "add", - Handler: _Adder_Add_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "add.proto", -} diff --git a/example/bookstore/rpc/add/adder/adder.go b/example/bookstore/rpc/add/adder/adder.go deleted file mode 100755 index be75b708..00000000 --- a/example/bookstore/rpc/add/adder/adder.go +++ /dev/null @@ -1,38 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: add.proto - -//go:generate mockgen -destination ./adder_mock.go -package adder -source $GOFILE - -package adder - -import ( - "context" - - "bookstore/rpc/add/add" - - "github.com/tal-tech/go-zero/zrpc" -) - -type ( - AddReq = add.AddReq - AddResp = add.AddResp - - Adder interface { - Add(ctx context.Context, in *AddReq) (*AddResp, error) - } - - defaultAdder struct { - cli zrpc.Client - } -) - -func NewAdder(cli zrpc.Client) Adder { - return &defaultAdder{ - cli: cli, - } -} - -func (m *defaultAdder) Add(ctx context.Context, in *AddReq) (*AddResp, error) { - client := add.NewAdderClient(m.cli.Conn()) - return client.Add(ctx, in) -} diff --git a/example/bookstore/rpc/add/etc/add.yaml b/example/bookstore/rpc/add/etc/add.yaml deleted file mode 100755 index f41f1581..00000000 --- a/example/bookstore/rpc/add/etc/add.yaml +++ /dev/null @@ -1,10 +0,0 @@ -Name: add.rpc -ListenOn: 127.0.0.1:8080 -Etcd: - Hosts: - - 127.0.0.1:2379 - Key: add.rpc -DataSource: root:@tcp(localhost:3306)/gozero -Table: book -Cache: - - Host: localhost:6379 \ No newline at end of file diff --git a/example/bookstore/rpc/add/internal/config/config.go b/example/bookstore/rpc/add/internal/config/config.go deleted file mode 100755 index 255f5d02..00000000 --- a/example/bookstore/rpc/add/internal/config/config.go +++ /dev/null @@ -1,12 +0,0 @@ -package config - -import ( - "github.com/tal-tech/go-zero/core/stores/cache" - "github.com/tal-tech/go-zero/zrpc" -) - -type Config struct { - zrpc.RpcServerConf - DataSource string - Cache cache.CacheConf -} diff --git a/example/bookstore/rpc/add/internal/logic/addlogic.go b/example/bookstore/rpc/add/internal/logic/addlogic.go deleted file mode 100755 index 5c34a0b3..00000000 --- a/example/bookstore/rpc/add/internal/logic/addlogic.go +++ /dev/null @@ -1,39 +0,0 @@ -package logic - -import ( - "context" - - add "bookstore/rpc/add/adder" - "bookstore/rpc/add/internal/svc" - "bookstore/rpc/model" - - "github.com/tal-tech/go-zero/core/logx" -) - -type AddLogic struct { - ctx context.Context - svcCtx *svc.ServiceContext - logx.Logger -} - -func NewAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddLogic { - return &AddLogic{ - ctx: ctx, - svcCtx: svcCtx, - Logger: logx.WithContext(ctx), - } -} - -func (l *AddLogic) Add(in *add.AddReq) (*add.AddResp, error) { - _, err := l.svcCtx.Model.Insert(model.Book{ - Book: in.Book, - Price: in.Price, - }) - if err != nil { - return nil, err - } - - return &add.AddResp{ - Ok: true, - }, nil -} diff --git a/example/bookstore/rpc/add/internal/server/adderserver.go b/example/bookstore/rpc/add/internal/server/adderserver.go deleted file mode 100755 index fef7497c..00000000 --- a/example/bookstore/rpc/add/internal/server/adderserver.go +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: add.proto - -package server - -import ( - "context" - - "bookstore/rpc/add/add" - "bookstore/rpc/add/internal/logic" - "bookstore/rpc/add/internal/svc" -) - -type AdderServer struct { - svcCtx *svc.ServiceContext -} - -func NewAdderServer(svcCtx *svc.ServiceContext) *AdderServer { - return &AdderServer{ - svcCtx: svcCtx, - } -} - -func (s *AdderServer) Add(ctx context.Context, in *add.AddReq) (*add.AddResp, error) { - l := logic.NewAddLogic(ctx, s.svcCtx) - return l.Add(in) -} diff --git a/example/bookstore/rpc/add/internal/svc/servicecontext.go b/example/bookstore/rpc/add/internal/svc/servicecontext.go deleted file mode 100755 index 730499b5..00000000 --- a/example/bookstore/rpc/add/internal/svc/servicecontext.go +++ /dev/null @@ -1,20 +0,0 @@ -package svc - -import ( - "bookstore/rpc/add/internal/config" - "bookstore/rpc/model" - - "github.com/tal-tech/go-zero/core/stores/sqlx" -) - -type ServiceContext struct { - c config.Config - Model model.BookModel -} - -func NewServiceContext(c config.Config) *ServiceContext { - return &ServiceContext{ - c: c, - Model: model.NewBookModel(sqlx.NewMysql(c.DataSource), c.Cache), - } -} diff --git a/example/bookstore/rpc/check/check.go b/example/bookstore/rpc/check/check.go deleted file mode 100755 index 6ea55525..00000000 --- a/example/bookstore/rpc/check/check.go +++ /dev/null @@ -1,38 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: check.proto - -package main - -import ( - "flag" - "fmt" - - "bookstore/rpc/check/check" - "bookstore/rpc/check/internal/config" - "bookstore/rpc/check/internal/server" - "bookstore/rpc/check/internal/svc" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/check.yaml", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - ctx := svc.NewServiceContext(c) - checkerSrv := server.NewCheckerServer(ctx) - - s, err := zrpc.NewServer(c.RpcServerConf, func(grpcServer *grpc.Server) { - check.RegisterCheckerServer(grpcServer, checkerSrv) - }) - logx.Must(err) - - fmt.Printf("Starting rpc server at %s...\n", c.ListenOn) - s.Start() -} diff --git a/example/bookstore/rpc/check/check.proto b/example/bookstore/rpc/check/check.proto deleted file mode 100755 index 4f2b1df8..00000000 --- a/example/bookstore/rpc/check/check.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -package check; - -message checkReq { - string book = 1; -} - -message checkResp { - bool found = 1; - int64 price = 2; -} - -service checker { - rpc check(checkReq) returns(checkResp); -} diff --git a/example/bookstore/rpc/check/check/check.pb.go b/example/bookstore/rpc/check/check/check.pb.go deleted file mode 100644 index eddf2e34..00000000 --- a/example/bookstore/rpc/check/check/check.pb.go +++ /dev/null @@ -1,306 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.25.0 -// protoc v3.14.0 -// source: check.proto - -package check - -import ( - context "context" - proto "github.com/golang/protobuf/proto" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// This is a compile-time assertion that a sufficiently up-to-date version -// of the legacy proto package is being used. -const _ = proto.ProtoPackageIsVersion4 - -type CheckReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Book string `protobuf:"bytes,1,opt,name=book,proto3" json:"book,omitempty"` -} - -func (x *CheckReq) Reset() { - *x = CheckReq{} - if protoimpl.UnsafeEnabled { - mi := &file_check_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CheckReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CheckReq) ProtoMessage() {} - -func (x *CheckReq) ProtoReflect() protoreflect.Message { - mi := &file_check_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CheckReq.ProtoReflect.Descriptor instead. -func (*CheckReq) Descriptor() ([]byte, []int) { - return file_check_proto_rawDescGZIP(), []int{0} -} - -func (x *CheckReq) GetBook() string { - if x != nil { - return x.Book - } - return "" -} - -type CheckResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Found bool `protobuf:"varint,1,opt,name=found,proto3" json:"found,omitempty"` - Price int64 `protobuf:"varint,2,opt,name=price,proto3" json:"price,omitempty"` -} - -func (x *CheckResp) Reset() { - *x = CheckResp{} - if protoimpl.UnsafeEnabled { - mi := &file_check_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CheckResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CheckResp) ProtoMessage() {} - -func (x *CheckResp) ProtoReflect() protoreflect.Message { - mi := &file_check_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CheckResp.ProtoReflect.Descriptor instead. -func (*CheckResp) Descriptor() ([]byte, []int) { - return file_check_proto_rawDescGZIP(), []int{1} -} - -func (x *CheckResp) GetFound() bool { - if x != nil { - return x.Found - } - return false -} - -func (x *CheckResp) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 -} - -var File_check_proto protoreflect.FileDescriptor - -var file_check_proto_rawDesc = []byte{ - 0x0a, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x22, 0x1e, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x62, 0x6f, 0x6f, 0x6b, 0x22, 0x37, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x05, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x35, 0x0a, - 0x07, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x05, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x12, 0x0f, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_check_proto_rawDescOnce sync.Once - file_check_proto_rawDescData = file_check_proto_rawDesc -) - -func file_check_proto_rawDescGZIP() []byte { - file_check_proto_rawDescOnce.Do(func() { - file_check_proto_rawDescData = protoimpl.X.CompressGZIP(file_check_proto_rawDescData) - }) - return file_check_proto_rawDescData -} - -var file_check_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_check_proto_goTypes = []interface{}{ - (*CheckReq)(nil), // 0: check.checkReq - (*CheckResp)(nil), // 1: check.checkResp -} -var file_check_proto_depIdxs = []int32{ - 0, // 0: check.checker.check:input_type -> check.checkReq - 1, // 1: check.checker.check:output_type -> check.checkResp - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_check_proto_init() } -func file_check_proto_init() { - if File_check_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_check_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_check_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_check_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_check_proto_goTypes, - DependencyIndexes: file_check_proto_depIdxs, - MessageInfos: file_check_proto_msgTypes, - }.Build() - File_check_proto = out.File - file_check_proto_rawDesc = nil - file_check_proto_goTypes = nil - file_check_proto_depIdxs = nil -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// CheckerClient is the client API for Checker service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type CheckerClient interface { - Check(ctx context.Context, in *CheckReq, opts ...grpc.CallOption) (*CheckResp, error) -} - -type checkerClient struct { - cc grpc.ClientConnInterface -} - -func NewCheckerClient(cc grpc.ClientConnInterface) CheckerClient { - return &checkerClient{cc} -} - -func (c *checkerClient) Check(ctx context.Context, in *CheckReq, opts ...grpc.CallOption) (*CheckResp, error) { - out := new(CheckResp) - err := c.cc.Invoke(ctx, "/check.checker/check", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// CheckerServer is the server API for Checker service. -type CheckerServer interface { - Check(context.Context, *CheckReq) (*CheckResp, error) -} - -// UnimplementedCheckerServer can be embedded to have forward compatible implementations. -type UnimplementedCheckerServer struct { -} - -func (*UnimplementedCheckerServer) Check(context.Context, *CheckReq) (*CheckResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method Check not implemented") -} - -func RegisterCheckerServer(s *grpc.Server, srv CheckerServer) { - s.RegisterService(&_Checker_serviceDesc, srv) -} - -func _Checker_Check_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CheckReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(CheckerServer).Check(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/check.checker/Check", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CheckerServer).Check(ctx, req.(*CheckReq)) - } - return interceptor(ctx, in, info, handler) -} - -var _Checker_serviceDesc = grpc.ServiceDesc{ - ServiceName: "check.checker", - HandlerType: (*CheckerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "check", - Handler: _Checker_Check_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "check.proto", -} diff --git a/example/bookstore/rpc/check/checker/checker.go b/example/bookstore/rpc/check/checker/checker.go deleted file mode 100755 index a69fd92f..00000000 --- a/example/bookstore/rpc/check/checker/checker.go +++ /dev/null @@ -1,38 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: check.proto - -//go:generate mockgen -destination ./checker_mock.go -package checker -source $GOFILE - -package checker - -import ( - "context" - - "bookstore/rpc/check/check" - - "github.com/tal-tech/go-zero/zrpc" -) - -type ( - CheckReq = check.CheckReq - CheckResp = check.CheckResp - - Checker interface { - Check(ctx context.Context, in *CheckReq) (*CheckResp, error) - } - - defaultChecker struct { - cli zrpc.Client - } -) - -func NewChecker(cli zrpc.Client) Checker { - return &defaultChecker{ - cli: cli, - } -} - -func (m *defaultChecker) Check(ctx context.Context, in *CheckReq) (*CheckResp, error) { - client := check.NewCheckerClient(m.cli.Conn()) - return client.Check(ctx, in) -} diff --git a/example/bookstore/rpc/check/etc/check.yaml b/example/bookstore/rpc/check/etc/check.yaml deleted file mode 100755 index 957b2606..00000000 --- a/example/bookstore/rpc/check/etc/check.yaml +++ /dev/null @@ -1,10 +0,0 @@ -Name: check.rpc -ListenOn: 127.0.0.1:8081 -Etcd: - Hosts: - - 127.0.0.1:2379 - Key: check.rpc -DataSource: root:@tcp(localhost:3306)/gozero -Table: book -Cache: - - Host: localhost:6379 \ No newline at end of file diff --git a/example/bookstore/rpc/check/internal/config/config.go b/example/bookstore/rpc/check/internal/config/config.go deleted file mode 100755 index 255f5d02..00000000 --- a/example/bookstore/rpc/check/internal/config/config.go +++ /dev/null @@ -1,12 +0,0 @@ -package config - -import ( - "github.com/tal-tech/go-zero/core/stores/cache" - "github.com/tal-tech/go-zero/zrpc" -) - -type Config struct { - zrpc.RpcServerConf - DataSource string - Cache cache.CacheConf -} diff --git a/example/bookstore/rpc/check/internal/logic/checklogic.go b/example/bookstore/rpc/check/internal/logic/checklogic.go deleted file mode 100755 index 46e1b4b2..00000000 --- a/example/bookstore/rpc/check/internal/logic/checklogic.go +++ /dev/null @@ -1,36 +0,0 @@ -package logic - -import ( - "context" - - check "bookstore/rpc/check/checker" - "bookstore/rpc/check/internal/svc" - - "github.com/tal-tech/go-zero/core/logx" -) - -type CheckLogic struct { - ctx context.Context - svcCtx *svc.ServiceContext - logx.Logger -} - -func NewCheckLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CheckLogic { - return &CheckLogic{ - ctx: ctx, - svcCtx: svcCtx, - Logger: logx.WithContext(ctx), - } -} - -func (l *CheckLogic) Check(in *check.CheckReq) (*check.CheckResp, error) { - resp, err := l.svcCtx.Model.FindOne(in.Book) - if err != nil { - return nil, err - } - - return &check.CheckResp{ - Found: true, - Price: resp.Price, - }, nil -} diff --git a/example/bookstore/rpc/check/internal/server/checkerserver.go b/example/bookstore/rpc/check/internal/server/checkerserver.go deleted file mode 100755 index f2e226f7..00000000 --- a/example/bookstore/rpc/check/internal/server/checkerserver.go +++ /dev/null @@ -1,27 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: check.proto - -package server - -import ( - "context" - - "bookstore/rpc/check/check" - "bookstore/rpc/check/internal/logic" - "bookstore/rpc/check/internal/svc" -) - -type CheckerServer struct { - svcCtx *svc.ServiceContext -} - -func NewCheckerServer(svcCtx *svc.ServiceContext) *CheckerServer { - return &CheckerServer{ - svcCtx: svcCtx, - } -} - -func (s *CheckerServer) Check(ctx context.Context, in *check.CheckReq) (*check.CheckResp, error) { - l := logic.NewCheckLogic(ctx, s.svcCtx) - return l.Check(in) -} diff --git a/example/bookstore/rpc/check/internal/svc/servicecontext.go b/example/bookstore/rpc/check/internal/svc/servicecontext.go deleted file mode 100755 index 61df0ecf..00000000 --- a/example/bookstore/rpc/check/internal/svc/servicecontext.go +++ /dev/null @@ -1,20 +0,0 @@ -package svc - -import ( - "bookstore/rpc/check/internal/config" - "bookstore/rpc/model" - - "github.com/tal-tech/go-zero/core/stores/sqlx" -) - -type ServiceContext struct { - c config.Config - Model model.BookModel -} - -func NewServiceContext(c config.Config) *ServiceContext { - return &ServiceContext{ - c: c, - Model: model.NewBookModel(sqlx.NewMysql(c.DataSource), c.Cache), - } -} diff --git a/example/bookstore/rpc/model/book.sql b/example/bookstore/rpc/model/book.sql deleted file mode 100644 index 7332585a..00000000 --- a/example/bookstore/rpc/model/book.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE `book` -( - `book` varchar(255) NOT NULL COMMENT 'book name', - `price` int NOT NULL COMMENT 'book price', - PRIMARY KEY(`book`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/example/bookstore/rpc/model/bookmodel.go b/example/bookstore/rpc/model/bookmodel.go deleted file mode 100755 index 1a82c286..00000000 --- a/example/bookstore/rpc/model/bookmodel.go +++ /dev/null @@ -1,100 +0,0 @@ -package model - -import ( - "database/sql" - "fmt" - "strings" - - "github.com/tal-tech/go-zero/core/stores/cache" - "github.com/tal-tech/go-zero/core/stores/sqlc" - "github.com/tal-tech/go-zero/core/stores/sqlx" - "github.com/tal-tech/go-zero/core/stringx" - "github.com/tal-tech/go-zero/tools/goctl/model/sql/builderx" -) - -var ( - bookFieldNames = builderx.FieldNames(&Book{}) - bookRows = strings.Join(bookFieldNames, ",") - bookRowsExpectAutoSet = strings.Join(stringx.Remove(bookFieldNames, "create_time", "update_time"), ",") - bookRowsWithPlaceHolder = strings.Join(stringx.Remove(bookFieldNames, "book", "create_time", "update_time"), "=?,") + "=?" - - cacheBookPrefix = "cache#Book#book#" -) - -type ( - BookModel interface { - Insert(data Book) (sql.Result, error) - FindOne(book string) (*Book, error) - Update(data Book) error - Delete(book string) error - } - - defaultBookModel struct { - sqlc.CachedConn - table string - } - - Book struct { - Book string `db:"book"` // book name - Price int64 `db:"price"` // book price - } -) - -func NewBookModel(conn sqlx.SqlConn, c cache.CacheConf) BookModel { - return &defaultBookModel{ - CachedConn: sqlc.NewConn(conn, c), - table: "book", - } -} - -func (m *defaultBookModel) Insert(data Book) (sql.Result, error) { - query := fmt.Sprintf("insert into %s (%s) values (?, ?)", m.table, bookRowsExpectAutoSet) - ret, err := m.ExecNoCache(query, data.Book, data.Price) - - return ret, err -} - -func (m *defaultBookModel) FindOne(book string) (*Book, error) { - bookKey := fmt.Sprintf("%s%v", cacheBookPrefix, book) - var resp Book - err := m.QueryRow(&resp, bookKey, func(conn sqlx.SqlConn, v interface{}) error { - query := fmt.Sprintf("select %s from %s where book = ? limit 1", bookRows, m.table) - return conn.QueryRow(v, query, book) - }) - switch err { - case nil: - return &resp, nil - case sqlc.ErrNotFound: - return nil, ErrNotFound - default: - return nil, err - } -} - -func (m *defaultBookModel) Update(data Book) error { - bookKey := fmt.Sprintf("%s%v", cacheBookPrefix, data.Book) - _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("update %s set %s where book = ?", m.table, bookRowsWithPlaceHolder) - return conn.Exec(query, data.Price, data.Book) - }, bookKey) - return err -} - -func (m *defaultBookModel) Delete(book string) error { - - bookKey := fmt.Sprintf("%s%v", cacheBookPrefix, book) - _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) { - query := fmt.Sprintf("delete from %s where book = ?", m.table) - return conn.Exec(query, book) - }, bookKey) - return err -} - -func (m *defaultBookModel) formatPrimary(primary interface{}) string { - return fmt.Sprintf("%s%v", cacheBookPrefix, primary) -} - -func (m *defaultBookModel) queryPrimary(conn sqlx.SqlConn, v, primary interface{}) error { - query := fmt.Sprintf("select %s from %s where book = ? limit 1", bookRows, m.table) - return conn.QueryRow(v, query, primary) -} diff --git a/example/bookstore/rpc/model/vars.go b/example/bookstore/rpc/model/vars.go deleted file mode 100644 index b7a5e88f..00000000 --- a/example/bookstore/rpc/model/vars.go +++ /dev/null @@ -1,5 +0,0 @@ -package model - -import "github.com/tal-tech/go-zero/core/stores/sqlx" - -var ErrNotFound = sqlx.ErrNotFound diff --git a/example/breaker/main.go b/example/breaker/main.go deleted file mode 100644 index 23cae92e..00000000 --- a/example/breaker/main.go +++ /dev/null @@ -1,139 +0,0 @@ -package main - -import ( - "fmt" - "math/rand" - "os" - "sync" - "sync/atomic" - "time" - - "github.com/tal-tech/go-zero/core/breaker" - "github.com/tal-tech/go-zero/core/lang" - "github.com/tal-tech/go-zero/core/logx" - "gopkg.in/cheggaaa/pb.v1" -) - -const ( - duration = time.Minute * 5 - breakRange = 20 - workRange = 50 - requestInterval = time.Millisecond - // multiply to make it visible in plot - stateFator = float64(time.Second/requestInterval) / 2 -) - -type ( - server struct { - state int32 - } - - metric struct { - calls int64 - } -) - -func (m *metric) addCall() { - atomic.AddInt64(&m.calls, 1) -} - -func (m *metric) reset() int64 { - return atomic.SwapInt64(&m.calls, 0) -} - -func newServer() *server { - return &server{} -} - -func (s *server) serve(m *metric) bool { - m.addCall() - return atomic.LoadInt32(&s.state) == 1 -} - -func (s *server) start() { - go func() { - r := rand.New(rand.NewSource(time.Now().UnixNano())) - var state int32 - for { - var v int32 - if state == 0 { - v = r.Int31n(breakRange) - } else { - v = r.Int31n(workRange) - } - time.Sleep(time.Second * time.Duration(v+1)) - state ^= 1 - atomic.StoreInt32(&s.state, state) - } - }() -} - -func runBreaker(s *server, br breaker.Breaker, duration time.Duration, m *metric) { - ticker := time.NewTicker(requestInterval) - defer ticker.Stop() - done := make(chan lang.PlaceholderType) - - go func() { - time.Sleep(duration) - close(done) - }() - - for { - select { - case <-ticker.C: - _ = br.Do(func() error { - if s.serve(m) { - return nil - } else { - return breaker.ErrServiceUnavailable - } - }) - case <-done: - return - } - } -} - -func main() { - srv := newServer() - srv.start() - - gb := breaker.NewBreaker() - fp, err := os.Create("result.csv") - logx.Must(err) - defer fp.Close() - fmt.Fprintln(fp, "seconds,state,googleCalls,netflixCalls") - - var gm, nm metric - go func() { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - var seconds int - for range ticker.C { - seconds++ - gcalls := gm.reset() - ncalls := nm.reset() - fmt.Fprintf(fp, "%d,%.2f,%d,%d\n", - seconds, float64(atomic.LoadInt32(&srv.state))*stateFator, gcalls, ncalls) - } - }() - - var waitGroup sync.WaitGroup - waitGroup.Add(1) - go func() { - runBreaker(srv, gb, duration, &gm) - waitGroup.Done() - }() - - go func() { - bar := pb.New(int(duration / time.Second)).Start() - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for range ticker.C { - bar.Increment() - } - bar.Finish() - }() - - waitGroup.Wait() -} diff --git a/example/breaker/plot.py b/example/breaker/plot.py deleted file mode 100644 index 62c9911a..00000000 --- a/example/breaker/plot.py +++ /dev/null @@ -1,15 +0,0 @@ -import click -import pandas as pd -import matplotlib.pyplot as plt - - -@click.command() -@click.option("--csv", default="result.csv") -def main(csv): - df = pd.read_csv(csv, index_col="seconds") - df.plot() - plt.show() - - -if __name__ == "__main__": - main() diff --git a/example/config/loadfromyaml/date.yml b/example/config/loadfromyaml/date.yml deleted file mode 100644 index a28fb2fd..00000000 --- a/example/config/loadfromyaml/date.yml +++ /dev/null @@ -1,2 +0,0 @@ -#date: "2019-06-20 00:00:00" -date: "2019-06-19T16:00:00Z" \ No newline at end of file diff --git a/example/config/loadfromyaml/main.go b/example/config/loadfromyaml/main.go deleted file mode 100644 index 7713dd86..00000000 --- a/example/config/loadfromyaml/main.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "time" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/core/logx" -) - -type TimeHolder struct { - Date time.Time `json:"date"` -} - -func main() { - th := &TimeHolder{} - err := conf.LoadConfig("./date.yml", th) - if err != nil { - logx.Error(err) - } - logx.Infof("%+v", th) -} diff --git a/example/etcd/pub/Dockerfile b/example/etcd/pub/Dockerfile deleted file mode 100644 index f290fe17..00000000 --- a/example/etcd/pub/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM golang:1.13-alpine AS builder - -LABEL stage=gobuilder - -ENV CGO_ENABLED 0 -ENV GOOS linux -ENV GOPROXY https://goproxy.cn,direct - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/pub example/etcd/pub/pub.go - - -FROM alpine - -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/pub /app/pub - -CMD ["./pub"] diff --git a/example/etcd/pub/pub.go b/example/etcd/pub/pub.go deleted file mode 100644 index 45025792..00000000 --- a/example/etcd/pub/pub.go +++ /dev/null @@ -1,27 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "time" - - "github.com/tal-tech/go-zero/core/discov" -) - -var value = flag.String("v", "value", "the value") - -func main() { - flag.Parse() - - client := discov.NewPublisher([]string{"etcd.discovery:2379"}, "028F2C35852D", *value) - if err := client.KeepAlive(); err != nil { - log.Fatal(err) - } - defer client.Stop() - - for { - time.Sleep(time.Second) - fmt.Println(*value) - } -} diff --git a/example/etcd/sub/Dockerfile b/example/etcd/sub/Dockerfile deleted file mode 100644 index 9e81330f..00000000 --- a/example/etcd/sub/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM golang:1.13-alpine AS builder - -LABEL stage=gobuilder - -ENV CGO_ENABLED 0 -ENV GOOS linux -ENV GOPROXY https://goproxy.cn,direct - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/sub example/etcd/sub/sub.go - - -FROM alpine - -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/sub /app/sub - -CMD ["./sub"] diff --git a/example/etcd/sub/sub.go b/example/etcd/sub/sub.go deleted file mode 100644 index 284f7f3a..00000000 --- a/example/etcd/sub/sub.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import ( - "fmt" - "time" - - "github.com/tal-tech/go-zero/core/discov" - "github.com/tal-tech/go-zero/core/logx" -) - -func main() { - sub, err := discov.NewSubscriber([]string{"etcd.discovery:2379"}, "028F2C35852D", discov.Exclusive()) - logx.Must(err) - - ticker := time.NewTicker(time.Second * 3) - defer ticker.Stop() - - for { - select { - case <-ticker.C: - fmt.Println("values:", sub.Values()) - } - } -} diff --git a/example/filex/pread.go b/example/filex/pread.go deleted file mode 100644 index d4d377d1..00000000 --- a/example/filex/pread.go +++ /dev/null @@ -1,139 +0,0 @@ -package main - -import ( - "bufio" - "errors" - "flag" - "fmt" - "log" - "os" - "runtime" - "strconv" - "strings" - "time" - - "github.com/tal-tech/go-zero/core/filex" - "github.com/tal-tech/go-zero/core/fx" - "github.com/tal-tech/go-zero/core/logx" - "gopkg.in/cheggaaa/pb.v1" -) - -var ( - file = flag.String("f", "", "the input file") - concurrent = flag.Int("c", runtime.NumCPU(), "concurrent goroutines") - wordVecDic TXDictionary -) - -type ( - Vector []float64 - - TXDictionary struct { - EmbeddingCount int64 - Dim int64 - Dict map[string]Vector - } - - pair struct { - key string - vec Vector - } -) - -func FastLoad(filename string) error { - if filename == "" { - return errors.New("no available dictionary") - } - - now := time.Now() - defer func() { - logx.Infof("article2vec init dictionary end used %v", time.Since(now)) - }() - - dicFile, err := os.Open(filename) - if err != nil { - return err - } - defer dicFile.Close() - - header, err := filex.FirstLine(filename) - if err != nil { - return err - } - - total := strings.Split(header, " ") - wordVecDic.EmbeddingCount, err = strconv.ParseInt(total[0], 10, 64) - if err != nil { - return err - } - - wordVecDic.Dim, err = strconv.ParseInt(total[1], 10, 64) - if err != nil { - return err - } - - wordVecDic.Dict = make(map[string]Vector, wordVecDic.EmbeddingCount) - - ranges, err := filex.SplitLineChunks(filename, *concurrent) - if err != nil { - return err - } - - info, err := os.Stat(filename) - if err != nil { - return err - } - - bar := pb.New64(info.Size()).SetUnits(pb.U_BYTES).Start() - fx.From(func(source chan<- interface{}) { - for _, each := range ranges { - source <- each - } - }).Walk(func(item interface{}, pipe chan<- interface{}) { - offsetRange := item.(filex.OffsetRange) - scanner := bufio.NewScanner(filex.NewRangeReader(dicFile, offsetRange.Start, offsetRange.Stop)) - scanner.Buffer([]byte{}, 1<<20) - reader := filex.NewProgressScanner(scanner, bar) - if offsetRange.Start == 0 { - // skip header - reader.Scan() - } - for reader.Scan() { - text := reader.Text() - elements := strings.Split(text, " ") - vec := make(Vector, wordVecDic.Dim) - for i, ele := range elements { - if i == 0 { - continue - } - - v, err := strconv.ParseFloat(ele, 64) - if err != nil { - return - } - - vec[i-1] = v - } - pipe <- pair{ - key: elements[0], - vec: vec, - } - } - }).ForEach(func(item interface{}) { - p := item.(pair) - wordVecDic.Dict[p.key] = p.vec - }) - - return nil -} - -func main() { - flag.Parse() - - start := time.Now() - if err := FastLoad(*file); err != nil { - log.Fatal(err) - } - - fmt.Println(len(wordVecDic.Dict)) - fmt.Println(time.Since(start)) -} diff --git a/example/fx/fx_test.go b/example/fx/fx_test.go deleted file mode 100644 index 37df046d..00000000 --- a/example/fx/fx_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package main - -import ( - "fmt" - "testing" - - "github.com/tal-tech/go-zero/core/fx" -) - -func TestFxSplit(t *testing.T) { - fx.Just(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).Split(4).ForEach(func(item interface{}) { - vals := item.([]interface{}) - fmt.Println(len(vals)) - }) -} - -func BenchmarkFx(b *testing.B) { - type Mixed struct { - Name string - Age int - Gender int - } - for i := 0; i < b.N; i++ { - var mx Mixed - fx.Parallel(func() { - mx.Name = "hello" - }, func() { - mx.Age = 20 - }, func() { - mx.Gender = 1 - }) - } -} diff --git a/example/fx/square.go b/example/fx/square.go deleted file mode 100644 index 6bcedbf8..00000000 --- a/example/fx/square.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/tal-tech/go-zero/core/fx" -) - -func main() { - result, err := fx.From(func(source chan<- interface{}) { - for i := 0; i < 10; i++ { - source <- i - } - }).Map(func(item interface{}) interface{} { - i := item.(int) - return i * i - }).Filter(func(item interface{}) bool { - i := item.(int) - return i%2 == 0 - }).Distinct(func(item interface{}) interface{} { - return item - }).Reduce(func(pipe <-chan interface{}) (interface{}, error) { - var result int - for item := range pipe { - i := item.(int) - result += i - } - return result, nil - }) - if err != nil { - fmt.Println(err) - } else { - fmt.Println(result) - } -} diff --git a/example/graceful/dns/api/Dockerfile b/example/graceful/dns/api/Dockerfile deleted file mode 100644 index 02f82ca1..00000000 --- a/example/graceful/dns/api/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM golang:1.13 AS builder - -ENV CGO_ENABLED 0 -ENV GOOS linux - -RUN apt-get update -RUN apt-get install -y apt-utils upx - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/graceful example/graceful/dns/api/graceful.go -RUN upx /app/graceful - - -FROM alpine - -RUN apk update --no-cache -RUN apk add --no-cache ca-certificates -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/graceful /app/graceful -COPY example/graceful/dns/api/etc/graceful-api.json /app/etc/config.json - -CMD ["./graceful", "-f", "etc/config.json"] diff --git a/example/graceful/dns/api/config/config.go b/example/graceful/dns/api/config/config.go deleted file mode 100644 index d0a35d0c..00000000 --- a/example/graceful/dns/api/config/config.go +++ /dev/null @@ -1,11 +0,0 @@ -package config - -import ( - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/zrpc" -) - -type Config struct { - rest.RestConf - Rpc zrpc.RpcClientConf -} diff --git a/example/graceful/dns/api/etc/graceful-api.json b/example/graceful/dns/api/etc/graceful-api.json deleted file mode 100644 index ea8d1437..00000000 --- a/example/graceful/dns/api/etc/graceful-api.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Name": "graceful-api", - "Host": "0.0.0.0", - "Port": 8888, - "MaxConns": 1000000, - "Rpc": { - "Server": "dns:///gracefulrpc:3456" - } -} \ No newline at end of file diff --git a/example/graceful/dns/api/graceful.api b/example/graceful/dns/api/graceful.api deleted file mode 100644 index be4323d3..00000000 --- a/example/graceful/dns/api/graceful.api +++ /dev/null @@ -1,11 +0,0 @@ -type Response { - Host string `json:"host"` - Time int64 `json:"time"` -} - -service graceful-api { - @server( - handler: GracefulHandler - ) - get /api/graceful() returns(Response) -} \ No newline at end of file diff --git a/example/graceful/dns/api/graceful.go b/example/graceful/dns/api/graceful.go deleted file mode 100644 index 9aa04cec..00000000 --- a/example/graceful/dns/api/graceful.go +++ /dev/null @@ -1,32 +0,0 @@ -package main - -import ( - "flag" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/graceful/dns/api/config" - "github.com/tal-tech/go-zero/example/graceful/dns/api/handler" - "github.com/tal-tech/go-zero/example/graceful/dns/api/svc" - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/zrpc" -) - -var configFile = flag.String("f", "etc/graceful-api.json", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - - client := zrpc.MustNewClient(c.Rpc) - ctx := &svc.ServiceContext{ - Client: client, - } - - engine := rest.MustNewServer(c.RestConf) - defer engine.Stop() - - handler.RegisterHandlers(engine, ctx) - engine.Start() -} diff --git a/example/graceful/dns/api/handler/gracefulhandler.go b/example/graceful/dns/api/handler/gracefulhandler.go deleted file mode 100644 index 9953e2b9..00000000 --- a/example/graceful/dns/api/handler/gracefulhandler.go +++ /dev/null @@ -1,43 +0,0 @@ -package handler - -import ( - "context" - "fmt" - "net/http" - "os" - "time" - - "github.com/tal-tech/go-zero/core/executors" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/example/graceful/dns/api/svc" - "github.com/tal-tech/go-zero/example/graceful/dns/api/types" - "github.com/tal-tech/go-zero/example/graceful/dns/rpc/graceful" - "github.com/tal-tech/go-zero/rest/httpx" -) - -func gracefulHandler(ctx *svc.ServiceContext) http.HandlerFunc { - logger := executors.NewLessExecutor(time.Second) - return func(w http.ResponseWriter, r *http.Request) { - host, err := os.Hostname() - if err != nil { - http.Error(w, http.StatusText(http.StatusNotImplemented), http.StatusNotImplemented) - return - } - - conn := ctx.Client.Conn() - client := graceful.NewGraceServiceClient(conn) - rp, err := client.Grace(context.Background(), &graceful.Request{From: host}) - if err != nil { - logx.Error(err) - http.Error(w, http.StatusText(http.StatusBadGateway), http.StatusBadGateway) - return - } - - var resp types.Response - resp.Host = rp.Host - logger.DoOrDiscard(func() { - fmt.Printf("%s from host: %s\n", time.Now().Format("15:04:05"), rp.Host) - }) - httpx.OkJson(w, resp) - } -} diff --git a/example/graceful/dns/api/handler/routes.go b/example/graceful/dns/api/handler/routes.go deleted file mode 100644 index 4b5c900b..00000000 --- a/example/graceful/dns/api/handler/routes.go +++ /dev/null @@ -1,19 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package handler - -import ( - "net/http" - - "github.com/tal-tech/go-zero/example/graceful/dns/api/svc" - "github.com/tal-tech/go-zero/rest" -) - -func RegisterHandlers(engine *rest.Server, ctx *svc.ServiceContext) { - engine.AddRoutes([]rest.Route{ - { - Method: http.MethodGet, - Path: "/api/graceful", - Handler: gracefulHandler(ctx), - }, - }) -} diff --git a/example/graceful/dns/api/svc/servicecontext.go b/example/graceful/dns/api/svc/servicecontext.go deleted file mode 100644 index b6cb91fb..00000000 --- a/example/graceful/dns/api/svc/servicecontext.go +++ /dev/null @@ -1,7 +0,0 @@ -package svc - -import "github.com/tal-tech/go-zero/zrpc" - -type ServiceContext struct { - Client zrpc.Client -} diff --git a/example/graceful/dns/api/types/types.go b/example/graceful/dns/api/types/types.go deleted file mode 100644 index cb22125d..00000000 --- a/example/graceful/dns/api/types/types.go +++ /dev/null @@ -1,7 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package types - -type Response struct { - Host string `json:"host"` - Time int64 `json:"time"` -} diff --git a/example/graceful/dns/rpc/Dockerfile b/example/graceful/dns/rpc/Dockerfile deleted file mode 100644 index 9ad2e511..00000000 --- a/example/graceful/dns/rpc/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM golang:1.13 AS builder - -ENV CGO_ENABLED 0 -ENV GOOS linux - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/gracefulrpc example/graceful/dns/rpc/gracefulrpc.go - - -FROM alpine - -RUN apk update --no-cache -RUN apk add --no-cache ca-certificates -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/gracefulrpc /app/gracefulrpc -COPY example/graceful/dns/rpc/etc/config.json /app/etc/config.json - -CMD ["./gracefulrpc", "-f", "etc/config.json"] diff --git a/example/graceful/dns/rpc/etc/config.json b/example/graceful/dns/rpc/etc/config.json deleted file mode 100644 index fb520d97..00000000 --- a/example/graceful/dns/rpc/etc/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Name": "rpc.grace", - "ListenOn": "0.0.0.0:3456" -} diff --git a/example/graceful/dns/rpc/graceful.proto b/example/graceful/dns/rpc/graceful.proto deleted file mode 100644 index 1c6e465f..00000000 --- a/example/graceful/dns/rpc/graceful.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package graceful; - -message Request { - string from = 1; -} - -message Response { - string host = 2; -} - -service GraceService { - rpc grace(Request) returns(Response); -} \ No newline at end of file diff --git a/example/graceful/dns/rpc/graceful/graceful.pb.go b/example/graceful/dns/rpc/graceful/graceful.pb.go deleted file mode 100644 index 3d19d3d0..00000000 --- a/example/graceful/dns/rpc/graceful/graceful.pb.go +++ /dev/null @@ -1,159 +0,0 @@ -// Code generated by protoc-gen-go. -// source: graceful.proto -// DO NOT EDIT! - -/* -Package graceful is a generated protocol buffer package. - -It is generated from these files: - graceful.proto - -It has these top-level messages: - Request - Response -*/ -package graceful - -import ( - "fmt" - "math" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Request struct { - From string `protobuf:"bytes,1,opt,name=from" json:"from,omitempty"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} -func (*Request) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Request) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -type Response struct { - Host string `protobuf:"bytes,2,opt,name=host" json:"host,omitempty"` -} - -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} -func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Response) GetHost() string { - if m != nil { - return m.Host - } - return "" -} - -func init() { - proto.RegisterType((*Request)(nil), "graceful.Request") - proto.RegisterType((*Response)(nil), "graceful.Response") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for GraceService service - -type GraceServiceClient interface { - Grace(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) -} - -type graceServiceClient struct { - cc *grpc.ClientConn -} - -func NewGraceServiceClient(cc *grpc.ClientConn) GraceServiceClient { - return &graceServiceClient{cc} -} - -func (c *graceServiceClient) Grace(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) { - out := new(Response) - err := grpc.Invoke(ctx, "/graceful.GraceService/grace", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for GraceService service - -type GraceServiceServer interface { - Grace(context.Context, *Request) (*Response, error) -} - -func RegisterGraceServiceServer(s *grpc.Server, srv GraceServiceServer) { - s.RegisterService(&_GraceService_serviceDesc, srv) -} - -func _GraceService_Grace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GraceServiceServer).Grace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/graceful.GraceService/Grace", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GraceServiceServer).Grace(ctx, req.(*Request)) - } - return interceptor(ctx, in, info, handler) -} - -var _GraceService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "graceful.GraceService", - HandlerType: (*GraceServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "grace", - Handler: _GraceService_Grace_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "graceful.proto", -} - -func init() { proto.RegisterFile("graceful.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 134 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4b, 0x2f, 0x4a, 0x4c, - 0x4e, 0x4d, 0x2b, 0xcd, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0xf1, 0x95, 0x64, - 0xb9, 0xd8, 0x83, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0x84, 0xb8, 0x58, 0xd2, 0x8a, 0xf2, - 0x73, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xc0, 0x6c, 0x25, 0x39, 0x2e, 0x8e, 0xa0, 0xd4, - 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0x90, 0x7c, 0x46, 0x7e, 0x71, 0x89, 0x04, 0x13, 0x44, 0x1e, - 0xc4, 0x36, 0xb2, 0xe3, 0xe2, 0x71, 0x07, 0x19, 0x15, 0x9c, 0x5a, 0x54, 0x96, 0x99, 0x9c, 0x2a, - 0xa4, 0xc7, 0xc5, 0x0a, 0x36, 0x5a, 0x48, 0x50, 0x0f, 0x6e, 0x25, 0xd4, 0x7c, 0x29, 0x21, 0x64, - 0x21, 0x88, 0x99, 0x49, 0x6c, 0x60, 0xf7, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x81, 0x87, - 0xc8, 0xc1, 0xa1, 0x00, 0x00, 0x00, -} diff --git a/example/graceful/dns/rpc/gracefulrpc.go b/example/graceful/dns/rpc/gracefulrpc.go deleted file mode 100644 index d33449b0..00000000 --- a/example/graceful/dns/rpc/gracefulrpc.go +++ /dev/null @@ -1,50 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "os" - "time" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/graceful/dns/rpc/graceful" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/config.json", "the config file") - -type GracefulServer struct{} - -func NewGracefulServer() *GracefulServer { - return &GracefulServer{} -} - -func (gs *GracefulServer) Grace(ctx context.Context, req *graceful.Request) (*graceful.Response, error) { - fmt.Println("=>", req) - - time.Sleep(time.Millisecond * 10) - - hostname, err := os.Hostname() - if err != nil { - return nil, err - } - - return &graceful.Response{ - Host: hostname, - }, nil -} - -func main() { - flag.Parse() - - var c zrpc.RpcServerConf - conf.MustLoad(*configFile, &c) - - server := zrpc.MustNewServer(c, func(grpcServer *grpc.Server) { - graceful.RegisterGraceServiceServer(grpcServer, NewGracefulServer()) - }) - defer server.Stop() - server.Start() -} diff --git a/example/graceful/etcd/api/Dockerfile b/example/graceful/etcd/api/Dockerfile deleted file mode 100644 index e096b462..00000000 --- a/example/graceful/etcd/api/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM golang:alpine AS builder - -LABEL stage=gobuilder - -ENV CGO_ENABLED 0 -ENV GOOS linux - -RUN apk update -RUN apk add upx - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/graceful example/graceful/etcd/api/graceful.go -RUN upx /app/graceful - - -FROM alpine - -RUN apk update --no-cache -RUN apk add --no-cache ca-certificates -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/graceful /app/graceful -COPY example/graceful/etcd/api/etc/graceful-api.json /app/etc/config.json - -CMD ["./graceful", "-f", "etc/config.json"] diff --git a/example/graceful/etcd/api/config/config.go b/example/graceful/etcd/api/config/config.go deleted file mode 100644 index d0a35d0c..00000000 --- a/example/graceful/etcd/api/config/config.go +++ /dev/null @@ -1,11 +0,0 @@ -package config - -import ( - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/zrpc" -) - -type Config struct { - rest.RestConf - Rpc zrpc.RpcClientConf -} diff --git a/example/graceful/etcd/api/etc/graceful-api.json b/example/graceful/etcd/api/etc/graceful-api.json deleted file mode 100644 index a13f5fab..00000000 --- a/example/graceful/etcd/api/etc/graceful-api.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "Name": "graceful-api", - "Host": "0.0.0.0", - "Port": 8888, - "MaxConns": 1000000, - "Rpc": { - "Etcd": { - "Hosts": ["etcd.discov:2379"], - "Key": "zrpc" - } - } -} diff --git a/example/graceful/etcd/api/graceful.api b/example/graceful/etcd/api/graceful.api deleted file mode 100644 index be4323d3..00000000 --- a/example/graceful/etcd/api/graceful.api +++ /dev/null @@ -1,11 +0,0 @@ -type Response { - Host string `json:"host"` - Time int64 `json:"time"` -} - -service graceful-api { - @server( - handler: GracefulHandler - ) - get /api/graceful() returns(Response) -} \ No newline at end of file diff --git a/example/graceful/etcd/api/graceful.go b/example/graceful/etcd/api/graceful.go deleted file mode 100644 index ad8c83b6..00000000 --- a/example/graceful/etcd/api/graceful.go +++ /dev/null @@ -1,32 +0,0 @@ -package main - -import ( - "flag" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/graceful/etcd/api/config" - "github.com/tal-tech/go-zero/example/graceful/etcd/api/handler" - "github.com/tal-tech/go-zero/example/graceful/etcd/api/svc" - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/zrpc" -) - -var configFile = flag.String("f", "etc/graceful-api.json", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - - client := zrpc.MustNewClient(c.Rpc) - ctx := &svc.ServiceContext{ - Client: client, - } - - engine := rest.MustNewServer(c.RestConf) - defer engine.Stop() - - handler.RegisterHandlers(engine, ctx) - engine.Start() -} diff --git a/example/graceful/etcd/api/handler/gracefulhandler.go b/example/graceful/etcd/api/handler/gracefulhandler.go deleted file mode 100644 index ec766410..00000000 --- a/example/graceful/etcd/api/handler/gracefulhandler.go +++ /dev/null @@ -1,43 +0,0 @@ -package handler - -import ( - "context" - "fmt" - "net/http" - "os" - "time" - - "github.com/tal-tech/go-zero/core/executors" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/example/graceful/etcd/api/svc" - "github.com/tal-tech/go-zero/example/graceful/etcd/api/types" - "github.com/tal-tech/go-zero/example/graceful/etcd/rpc/graceful" - "github.com/tal-tech/go-zero/rest/httpx" -) - -func gracefulHandler(ctx *svc.ServiceContext) http.HandlerFunc { - logger := executors.NewLessExecutor(time.Second) - return func(w http.ResponseWriter, r *http.Request) { - host, err := os.Hostname() - if err != nil { - http.Error(w, http.StatusText(http.StatusNotImplemented), http.StatusNotImplemented) - return - } - - conn := ctx.Client.Conn() - client := graceful.NewGraceServiceClient(conn) - rp, err := client.Grace(context.Background(), &graceful.Request{From: host}) - if err != nil { - logx.Error(err) - http.Error(w, http.StatusText(http.StatusBadGateway), http.StatusBadGateway) - return - } - - var resp types.Response - resp.Host = rp.Host - logger.DoOrDiscard(func() { - fmt.Printf("%s from host: %s\n", time.Now().Format("15:04:05"), rp.Host) - }) - httpx.OkJson(w, resp) - } -} diff --git a/example/graceful/etcd/api/handler/routes.go b/example/graceful/etcd/api/handler/routes.go deleted file mode 100644 index 6b3d605d..00000000 --- a/example/graceful/etcd/api/handler/routes.go +++ /dev/null @@ -1,19 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package handler - -import ( - "net/http" - - "github.com/tal-tech/go-zero/example/graceful/etcd/api/svc" - "github.com/tal-tech/go-zero/rest" -) - -func RegisterHandlers(engine *rest.Server, ctx *svc.ServiceContext) { - engine.AddRoutes([]rest.Route{ - { - Method: http.MethodGet, - Path: "/api/graceful", - Handler: gracefulHandler(ctx), - }, - }) -} diff --git a/example/graceful/etcd/api/svc/servicecontext.go b/example/graceful/etcd/api/svc/servicecontext.go deleted file mode 100644 index b6cb91fb..00000000 --- a/example/graceful/etcd/api/svc/servicecontext.go +++ /dev/null @@ -1,7 +0,0 @@ -package svc - -import "github.com/tal-tech/go-zero/zrpc" - -type ServiceContext struct { - Client zrpc.Client -} diff --git a/example/graceful/etcd/api/types/types.go b/example/graceful/etcd/api/types/types.go deleted file mode 100644 index cb22125d..00000000 --- a/example/graceful/etcd/api/types/types.go +++ /dev/null @@ -1,7 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package types - -type Response struct { - Host string `json:"host"` - Time int64 `json:"time"` -} diff --git a/example/graceful/etcd/discov/discov-namespace.yaml b/example/graceful/etcd/discov/discov-namespace.yaml deleted file mode 100644 index 16b397bc..00000000 --- a/example/graceful/etcd/discov/discov-namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: discov diff --git a/example/graceful/etcd/discov/etcd.yaml b/example/graceful/etcd/discov/etcd.yaml deleted file mode 100644 index d3b2878d..00000000 --- a/example/graceful/etcd/discov/etcd.yaml +++ /dev/null @@ -1,319 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: etcd - namespace: discov -spec: - ports: - - name: etcd-port - port: 2379 - protocol: TCP - targetPort: 2379 - selector: - app: etcd - ---- - -apiVersion: v1 -kind: Pod -metadata: - labels: - app: etcd - etcd_node: etcd0 - name: etcd0 - namespace: discov -spec: - containers: - - command: - - /usr/local/bin/etcd - - --name - - etcd0 - - --initial-advertise-peer-urls - - http://etcd0:2380 - - --listen-peer-urls - - http://0.0.0.0:2380 - - --listen-client-urls - - http://0.0.0.0:2379 - - --advertise-client-urls - - http://etcd0:2379 - - --initial-cluster - - etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380,etcd4=http://etcd4:2380 - - --initial-cluster-state - - new - image: quay.io/coreos/etcd:latest - name: etcd0 - ports: - - containerPort: 2379 - name: client - protocol: TCP - - containerPort: 2380 - name: server - protocol: TCP - restartPolicy: Always - ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - etcd_node: etcd0 - name: etcd0 - namespace: discov -spec: - ports: - - name: client - port: 2379 - protocol: TCP - targetPort: 2379 - - name: server - port: 2380 - protocol: TCP - targetPort: 2380 - selector: - etcd_node: etcd0 - ---- - -apiVersion: v1 -kind: Pod -metadata: - labels: - app: etcd - etcd_node: etcd1 - name: etcd1 - namespace: discov -spec: - containers: - - command: - - /usr/local/bin/etcd - - --name - - etcd1 - - --initial-advertise-peer-urls - - http://etcd1:2380 - - --listen-peer-urls - - http://0.0.0.0:2380 - - --listen-client-urls - - http://0.0.0.0:2379 - - --advertise-client-urls - - http://etcd1:2379 - - --initial-cluster - - etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380,etcd4=http://etcd4:2380 - - --initial-cluster-state - - new - image: quay.io/coreos/etcd:latest - name: etcd1 - ports: - - containerPort: 2379 - name: client - protocol: TCP - - containerPort: 2380 - name: server - protocol: TCP - restartPolicy: Always - ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - etcd_node: etcd1 - name: etcd1 - namespace: discov -spec: - ports: - - name: client - port: 2379 - protocol: TCP - targetPort: 2379 - - name: server - port: 2380 - protocol: TCP - targetPort: 2380 - selector: - etcd_node: etcd1 - ---- - -apiVersion: v1 -kind: Pod -metadata: - labels: - app: etcd - etcd_node: etcd2 - name: etcd2 - namespace: discov -spec: - containers: - - command: - - /usr/local/bin/etcd - - --name - - etcd2 - - --initial-advertise-peer-urls - - http://etcd2:2380 - - --listen-peer-urls - - http://0.0.0.0:2380 - - --listen-client-urls - - http://0.0.0.0:2379 - - --advertise-client-urls - - http://etcd2:2379 - - --initial-cluster - - etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380,etcd4=http://etcd4:2380 - - --initial-cluster-state - - new - image: quay.io/coreos/etcd:latest - name: etcd2 - ports: - - containerPort: 2379 - name: client - protocol: TCP - - containerPort: 2380 - name: server - protocol: TCP - restartPolicy: Always - ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - etcd_node: etcd2 - name: etcd2 - namespace: discov -spec: - ports: - - name: client - port: 2379 - protocol: TCP - targetPort: 2379 - - name: server - port: 2380 - protocol: TCP - targetPort: 2380 - selector: - etcd_node: etcd2 - ---- - -apiVersion: v1 -kind: Pod -metadata: - labels: - app: etcd - etcd_node: etcd3 - name: etcd3 - namespace: discov -spec: - containers: - - command: - - /usr/local/bin/etcd - - --name - - etcd3 - - --initial-advertise-peer-urls - - http://etcd3:2380 - - --listen-peer-urls - - http://0.0.0.0:2380 - - --listen-client-urls - - http://0.0.0.0:2379 - - --advertise-client-urls - - http://etcd3:2379 - - --initial-cluster - - etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380,etcd4=http://etcd4:2380 - - --initial-cluster-state - - new - image: quay.io/coreos/etcd:latest - name: etcd3 - ports: - - containerPort: 2379 - name: client - protocol: TCP - - containerPort: 2380 - name: server - protocol: TCP - restartPolicy: Always - ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - etcd_node: etcd3 - name: etcd3 - namespace: discov -spec: - ports: - - name: client - port: 2379 - protocol: TCP - targetPort: 2379 - - name: server - port: 2380 - protocol: TCP - targetPort: 2380 - selector: - etcd_node: etcd3 - ---- - -apiVersion: v1 -kind: Pod -metadata: - labels: - app: etcd - etcd_node: etcd4 - name: etcd4 - namespace: discov -spec: - containers: - - command: - - /usr/local/bin/etcd - - --name - - etcd4 - - --initial-advertise-peer-urls - - http://etcd4:2380 - - --listen-peer-urls - - http://0.0.0.0:2380 - - --listen-client-urls - - http://0.0.0.0:2379 - - --advertise-client-urls - - http://etcd4:2379 - - --initial-cluster - - etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380,etcd4=http://etcd4:2380 - - --initial-cluster-state - - new - image: quay.io/coreos/etcd:latest - name: etcd4 - ports: - - containerPort: 2379 - name: client - protocol: TCP - - containerPort: 2380 - name: server - protocol: TCP - restartPolicy: Always - ---- - -apiVersion: v1 -kind: Service -metadata: - labels: - etcd_node: etcd4 - name: etcd4 - namespace: discov -spec: - ports: - - name: client - port: 2379 - protocol: TCP - targetPort: 2379 - - name: server - port: 2380 - protocol: TCP - targetPort: 2380 - selector: - etcd_node: etcd4 - diff --git a/example/graceful/etcd/rpc/Dockerfile b/example/graceful/etcd/rpc/Dockerfile deleted file mode 100644 index 9d27948c..00000000 --- a/example/graceful/etcd/rpc/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -FROM golang:alpine AS builder - -LABEL stage=gobuilder - -ENV CGO_ENABLED 0 -ENV GOOS linux - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/gracefulrpc example/graceful/etcd/rpc/gracefulrpc.go - - -FROM alpine - -RUN apk update --no-cache -RUN apk add --no-cache ca-certificates -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/gracefulrpc /app/gracefulrpc -COPY example/graceful/etcd/rpc/etc/graceful-rpc.json /app/etc/config.json - -CMD ["./gracefulrpc", "-f", "etc/config.json"] diff --git a/example/graceful/etcd/rpc/etc/graceful-rpc.json b/example/graceful/etcd/rpc/etc/graceful-rpc.json deleted file mode 100644 index 73a96797..00000000 --- a/example/graceful/etcd/rpc/etc/graceful-rpc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Name": "rpc.grace", - "ListenOn": "0.0.0.0:3456", - "Etcd": { - "Hosts": ["etcd.discov:2379"], - "Key": "zrpc" - } -} diff --git a/example/graceful/etcd/rpc/graceful.proto b/example/graceful/etcd/rpc/graceful.proto deleted file mode 100644 index 1c6e465f..00000000 --- a/example/graceful/etcd/rpc/graceful.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package graceful; - -message Request { - string from = 1; -} - -message Response { - string host = 2; -} - -service GraceService { - rpc grace(Request) returns(Response); -} \ No newline at end of file diff --git a/example/graceful/etcd/rpc/graceful/graceful.pb.go b/example/graceful/etcd/rpc/graceful/graceful.pb.go deleted file mode 100644 index 3d19d3d0..00000000 --- a/example/graceful/etcd/rpc/graceful/graceful.pb.go +++ /dev/null @@ -1,159 +0,0 @@ -// Code generated by protoc-gen-go. -// source: graceful.proto -// DO NOT EDIT! - -/* -Package graceful is a generated protocol buffer package. - -It is generated from these files: - graceful.proto - -It has these top-level messages: - Request - Response -*/ -package graceful - -import ( - "fmt" - "math" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Request struct { - From string `protobuf:"bytes,1,opt,name=from" json:"from,omitempty"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} -func (*Request) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Request) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -type Response struct { - Host string `protobuf:"bytes,2,opt,name=host" json:"host,omitempty"` -} - -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} -func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Response) GetHost() string { - if m != nil { - return m.Host - } - return "" -} - -func init() { - proto.RegisterType((*Request)(nil), "graceful.Request") - proto.RegisterType((*Response)(nil), "graceful.Response") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for GraceService service - -type GraceServiceClient interface { - Grace(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) -} - -type graceServiceClient struct { - cc *grpc.ClientConn -} - -func NewGraceServiceClient(cc *grpc.ClientConn) GraceServiceClient { - return &graceServiceClient{cc} -} - -func (c *graceServiceClient) Grace(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) { - out := new(Response) - err := grpc.Invoke(ctx, "/graceful.GraceService/grace", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for GraceService service - -type GraceServiceServer interface { - Grace(context.Context, *Request) (*Response, error) -} - -func RegisterGraceServiceServer(s *grpc.Server, srv GraceServiceServer) { - s.RegisterService(&_GraceService_serviceDesc, srv) -} - -func _GraceService_Grace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GraceServiceServer).Grace(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/graceful.GraceService/Grace", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GraceServiceServer).Grace(ctx, req.(*Request)) - } - return interceptor(ctx, in, info, handler) -} - -var _GraceService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "graceful.GraceService", - HandlerType: (*GraceServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "grace", - Handler: _GraceService_Grace_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "graceful.proto", -} - -func init() { proto.RegisterFile("graceful.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 134 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4b, 0x2f, 0x4a, 0x4c, - 0x4e, 0x4d, 0x2b, 0xcd, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0xf1, 0x95, 0x64, - 0xb9, 0xd8, 0x83, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0x84, 0xb8, 0x58, 0xd2, 0x8a, 0xf2, - 0x73, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xc0, 0x6c, 0x25, 0x39, 0x2e, 0x8e, 0xa0, 0xd4, - 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0x90, 0x7c, 0x46, 0x7e, 0x71, 0x89, 0x04, 0x13, 0x44, 0x1e, - 0xc4, 0x36, 0xb2, 0xe3, 0xe2, 0x71, 0x07, 0x19, 0x15, 0x9c, 0x5a, 0x54, 0x96, 0x99, 0x9c, 0x2a, - 0xa4, 0xc7, 0xc5, 0x0a, 0x36, 0x5a, 0x48, 0x50, 0x0f, 0x6e, 0x25, 0xd4, 0x7c, 0x29, 0x21, 0x64, - 0x21, 0x88, 0x99, 0x49, 0x6c, 0x60, 0xf7, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x81, 0x87, - 0xc8, 0xc1, 0xa1, 0x00, 0x00, 0x00, -} diff --git a/example/graceful/etcd/rpc/gracefulrpc.go b/example/graceful/etcd/rpc/gracefulrpc.go deleted file mode 100644 index 5d2e54aa..00000000 --- a/example/graceful/etcd/rpc/gracefulrpc.go +++ /dev/null @@ -1,50 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "os" - "time" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/graceful/etcd/rpc/graceful" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/config.json", "the config file") - -type GracefulServer struct{} - -func NewGracefulServer() *GracefulServer { - return &GracefulServer{} -} - -func (gs *GracefulServer) Grace(ctx context.Context, req *graceful.Request) (*graceful.Response, error) { - fmt.Println("=>", req) - - time.Sleep(time.Millisecond * 10) - - hostname, err := os.Hostname() - if err != nil { - return nil, err - } - - return &graceful.Response{ - Host: hostname, - }, nil -} - -func main() { - flag.Parse() - - var c zrpc.RpcServerConf - conf.MustLoad(*configFile, &c) - - server := zrpc.MustNewServer(c, func(grpcServer *grpc.Server) { - graceful.RegisterGraceServiceServer(grpcServer, NewGracefulServer()) - }) - defer server.Stop() - server.Start() -} diff --git a/example/http/breaker/client/client.go b/example/http/breaker/client/client.go deleted file mode 100644 index 3b9c60bb..00000000 --- a/example/http/breaker/client/client.go +++ /dev/null @@ -1,170 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "net/http" - "os" - "sync" - "time" - - "github.com/tal-tech/go-zero/core/lang" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/threading" - "gopkg.in/cheggaaa/pb.v1" -) - -var ( - freq = flag.Int("freq", 100, "frequency") - duration = flag.String("duration", "10s", "duration") -) - -type ( - counting struct { - ok int - fail int - reject int - errs int - unknown int - } - - metric struct { - counting - lock sync.Mutex - } -) - -func (m *metric) addOk() { - m.lock.Lock() - m.ok++ - m.lock.Unlock() -} - -func (m *metric) addFail() { - m.lock.Lock() - m.ok++ - m.lock.Unlock() -} - -func (m *metric) addReject() { - m.lock.Lock() - m.ok++ - m.lock.Unlock() -} - -func (m *metric) addErrs() { - m.lock.Lock() - m.errs++ - m.lock.Unlock() -} - -func (m *metric) addUnknown() { - m.lock.Lock() - m.unknown++ - m.lock.Unlock() -} - -func (m *metric) reset() counting { - m.lock.Lock() - result := counting{ - ok: m.ok, - fail: m.fail, - reject: m.reject, - errs: m.errs, - unknown: m.unknown, - } - - m.ok = 0 - m.fail = 0 - m.reject = 0 - m.errs = 0 - m.unknown = 0 - m.lock.Unlock() - - return result -} - -func runRequests(url string, frequency int, metrics *metric, done <-chan lang.PlaceholderType) { - ticker := time.NewTicker(time.Second / time.Duration(frequency)) - defer ticker.Stop() - - for { - select { - case <-ticker.C: - go func() { - resp, err := http.Get(url) - if err != nil { - metrics.addErrs() - return - } - defer resp.Body.Close() - - switch resp.StatusCode { - case http.StatusOK: - metrics.addOk() - case http.StatusInternalServerError: - metrics.addFail() - case http.StatusServiceUnavailable: - metrics.addReject() - default: - metrics.addUnknown() - } - }() - case <-done: - return - } - } -} - -func main() { - flag.Parse() - - fp, err := os.Create("result.csv") - logx.Must(err) - defer fp.Close() - fmt.Fprintln(fp, "seconds,goodOk,goodFail,goodReject,goodErrs,goodUnknowns,goodDropRatio,"+ - "heavyOk,heavyFail,heavyReject,heavyErrs,heavyUnknowns,heavyDropRatio") - - var gm, hm metric - dur, err := time.ParseDuration(*duration) - logx.Must(err) - done := make(chan lang.PlaceholderType) - group := threading.NewRoutineGroup() - group.RunSafe(func() { - runRequests("http://localhost:8080/heavy", *freq, &hm, done) - }) - group.RunSafe(func() { - runRequests("http://localhost:8080/good", *freq, &gm, done) - }) - - go func() { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - var seconds int - for range ticker.C { - seconds++ - g := gm.reset() - h := hm.reset() - fmt.Fprintf(fp, "%d,%d,%d,%d,%d,%d,%.1f,%d,%d,%d,%d,%d,%.1f\n", - seconds, g.ok, g.fail, g.reject, g.errs, g.unknown, - float32(g.reject)/float32(g.ok+g.fail+g.reject+g.unknown), - h.ok, h.fail, h.reject, h.errs, h.unknown, - float32(h.reject)/float32(h.ok+h.fail+h.reject+h.unknown)) - } - }() - - go func() { - bar := pb.New(int(dur / time.Second)).Start() - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for range ticker.C { - bar.Increment() - } - bar.Finish() - }() - - <-time.After(dur) - close(done) - group.Wait() - time.Sleep(time.Millisecond * 900) -} diff --git a/example/http/breaker/good.sh b/example/http/breaker/good.sh deleted file mode 100644 index 4f93a398..00000000 --- a/example/http/breaker/good.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -hey -z 60s http://localhost:8080/good diff --git a/example/http/breaker/heavy.sh b/example/http/breaker/heavy.sh deleted file mode 100644 index 92b34a37..00000000 --- a/example/http/breaker/heavy.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -hey -z 60s http://localhost:8080/heavy diff --git a/example/http/breaker/server.go b/example/http/breaker/server.go deleted file mode 100644 index 4e5fc65a..00000000 --- a/example/http/breaker/server.go +++ /dev/null @@ -1,59 +0,0 @@ -package main - -import ( - "net/http" - "runtime" - "time" - - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/service" - "github.com/tal-tech/go-zero/core/stat" - "github.com/tal-tech/go-zero/core/syncx" - "github.com/tal-tech/go-zero/rest" -) - -func main() { - logx.Disable() - stat.SetReporter(nil) - server := rest.MustNewServer(rest.RestConf{ - ServiceConf: service.ServiceConf{ - Name: "breaker", - Log: logx.LogConf{ - Mode: "console", - }, - }, - Host: "0.0.0.0", - Port: 8080, - MaxConns: 1000, - Timeout: 3000, - }) - latch := syncx.NewLimit(10) - server.AddRoute(rest.Route{ - Method: http.MethodGet, - Path: "/heavy", - Handler: func(w http.ResponseWriter, r *http.Request) { - if latch.TryBorrow() { - defer latch.Return() - runtime.LockOSThread() - defer runtime.UnlockOSThread() - begin := time.Now() - for { - if time.Now().Sub(begin) > time.Millisecond*50 { - break - } - } - } else { - w.WriteHeader(http.StatusInternalServerError) - } - }, - }) - server.AddRoute(rest.Route{ - Method: http.MethodGet, - Path: "/good", - Handler: func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusOK) - }, - }) - defer server.Stop() - server.Start() -} diff --git a/example/http/breaker/start.sh b/example/http/breaker/start.sh deleted file mode 100644 index d9874ea8..00000000 --- a/example/http/breaker/start.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -GOOS=linux go build -ldflags="-s -w" server.go -docker run --rm -it --cpus=1 -p 8080:8080 -v `pwd`:/app -w /app alpine /app/server -rm -f server diff --git a/example/http/demo/main.go b/example/http/demo/main.go deleted file mode 100644 index 9838c8ab..00000000 --- a/example/http/demo/main.go +++ /dev/null @@ -1,70 +0,0 @@ -package main - -import ( - "flag" - "net/http" - - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/service" - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/rest/httpx" -) - -var ( - port = flag.Int("port", 3333, "the port to listen") - timeout = flag.Int64("timeout", 0, "timeout of milliseconds") -) - -type Request struct { - User string `form:"user,options=a|b"` -} - -func first(next http.HandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - w.Header().Add("X-Middleware", "first") - next(w, r) - } -} - -func second(next http.HandlerFunc) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - w.Header().Add("X-Middleware", "second") - next(w, r) - } -} - -func handle(w http.ResponseWriter, r *http.Request) { - var req Request - err := httpx.Parse(r, &req) - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - httpx.OkJson(w, "helllo, "+req.User) -} - -func main() { - flag.Parse() - - engine := rest.MustNewServer(rest.RestConf{ - ServiceConf: service.ServiceConf{ - Log: logx.LogConf{ - Mode: "console", - }, - }, - Port: *port, - Timeout: *timeout, - MaxConns: 500, - }, rest.WithNotAllowedHandler(rest.CorsHandler())) - defer engine.Stop() - - engine.Use(first) - engine.Use(second) - engine.AddRoute(rest.Route{ - Method: http.MethodGet, - Path: "/", - Handler: handle, - }) - engine.Start() -} diff --git a/example/http/post/main.go b/example/http/post/main.go deleted file mode 100644 index 81b30c25..00000000 --- a/example/http/post/main.go +++ /dev/null @@ -1,65 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "net/http" - - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/service" - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/rest/httpx" -) - -var ( - port = flag.Int("port", 3333, "the port to listen") - timeout = flag.Int64("timeout", 0, "timeout of milliseconds") -) - -type Request struct { - User string `json:"user"` -} - -func handleGet(w http.ResponseWriter, r *http.Request) { -} - -func handlePost(w http.ResponseWriter, r *http.Request) { - var req Request - err := httpx.Parse(r, &req) - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - httpx.OkJson(w, fmt.Sprintf("Content-Length: %d, UserLen: %d", r.ContentLength, len(req.User))) -} - -func main() { - flag.Parse() - - engine := rest.MustNewServer(rest.RestConf{ - ServiceConf: service.ServiceConf{ - Log: logx.LogConf{ - Mode: "console", - }, - }, - Port: *port, - Timeout: *timeout, - MaxConns: 500, - MaxBytes: 50, - CpuThreshold: 500, - }) - defer engine.Stop() - - engine.AddRoute(rest.Route{ - Method: http.MethodGet, - Path: "/", - Handler: handleGet, - }) - engine.AddRoute(rest.Route{ - Method: http.MethodPost, - Path: "/", - Handler: handlePost, - }) - engine.Start() -} diff --git a/example/http/shedding/Dockerfile b/example/http/shedding/Dockerfile deleted file mode 100644 index b92e6244..00000000 --- a/example/http/shedding/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM alpine - -RUN apk update --no-cache -RUN apk add --no-cache ca-certificates -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY main /app/main - -CMD ["./main"] diff --git a/example/http/shedding/main.go b/example/http/shedding/main.go deleted file mode 100644 index f80f16cb..00000000 --- a/example/http/shedding/main.go +++ /dev/null @@ -1,63 +0,0 @@ -package main - -import ( - "flag" - "math" - "net/http" - "time" - - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/service" - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/rest/httpx" -) - -var ( - port = flag.Int("port", 3333, "the port to listen") - timeout = flag.Int64("timeout", 1000, "timeout of milliseconds") - cpu = flag.Int64("cpu", 500, "cpu threshold") -) - -type Request struct { - User string `form:"user,optional"` -} - -func handle(w http.ResponseWriter, r *http.Request) { - var req Request - err := httpx.Parse(r, &req) - if err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - var result float64 - for i := 0; i < 30000; i++ { - result += math.Sqrt(float64(i)) - } - time.Sleep(time.Millisecond * 5) - httpx.OkJson(w, result) -} - -func main() { - flag.Parse() - - logx.Disable() - engine := rest.MustNewServer(rest.RestConf{ - ServiceConf: service.ServiceConf{ - Log: logx.LogConf{ - Mode: "console", - }, - }, - Port: *port, - Timeout: *timeout, - CpuThreshold: *cpu, - }) - defer engine.Stop() - - engine.AddRoute(rest.Route{ - Method: http.MethodGet, - Path: "/", - Handler: handle, - }) - engine.Start() -} diff --git a/example/limit/period/periodlimit.go b/example/limit/period/periodlimit.go deleted file mode 100644 index f5295c9a..00000000 --- a/example/limit/period/periodlimit.go +++ /dev/null @@ -1,67 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "runtime" - "strconv" - "sync" - "sync/atomic" - "time" - - "github.com/tal-tech/go-zero/core/limit" - "github.com/tal-tech/go-zero/core/stores/redis" -) - -const seconds = 5 - -var ( - rdx = flag.String("redis", "localhost:6379", "the redis, default localhost:6379") - rdxType = flag.String("redisType", "node", "the redis type, default node") - rdxPass = flag.String("redisPass", "", "the redis password") - rdxKey = flag.String("redisKey", "rate", "the redis key, default rate") - threads = flag.Int("threads", runtime.NumCPU(), "the concurrent threads, default to cores") -) - -func main() { - flag.Parse() - - store := redis.NewRedis(*rdx, *rdxType, *rdxPass) - fmt.Println(store.Ping()) - lmt := limit.NewPeriodLimit(seconds, 5, store, *rdxKey) - timer := time.NewTimer(time.Second * seconds) - quit := make(chan struct{}) - defer timer.Stop() - go func() { - <-timer.C - close(quit) - }() - - var allowed, denied int32 - var wait sync.WaitGroup - for i := 0; i < *threads; i++ { - i := i - wait.Add(1) - go func() { - for { - select { - case <-quit: - wait.Done() - return - default: - if v, err := lmt.Take(strconv.FormatInt(int64(i), 10)); err == nil && v == limit.Allowed { - atomic.AddInt32(&allowed, 1) - } else if err != nil { - log.Fatal(err) - } else { - atomic.AddInt32(&denied, 1) - } - } - } - }() - } - - wait.Wait() - fmt.Printf("allowed: %d, denied: %d, qps: %d\n", allowed, denied, (allowed+denied)/seconds) -} diff --git a/example/limit/token/tokenlimit.go b/example/limit/token/tokenlimit.go deleted file mode 100644 index 9136d2fa..00000000 --- a/example/limit/token/tokenlimit.go +++ /dev/null @@ -1,66 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "runtime" - "sync" - "sync/atomic" - "time" - - "github.com/tal-tech/go-zero/core/limit" - "github.com/tal-tech/go-zero/core/stores/redis" -) - -const ( - burst = 100 - rate = 100 - seconds = 5 -) - -var ( - rdx = flag.String("redis", "localhost:6379", "the redis, default localhost:6379") - rdxType = flag.String("redisType", "node", "the redis type, default node") - rdxKey = flag.String("redisKey", "rate", "the redis key, default rate") - rdxPass = flag.String("redisPass", "", "the redis password") - threads = flag.Int("threads", runtime.NumCPU(), "the concurrent threads, default to cores") -) - -func main() { - flag.Parse() - - store := redis.NewRedis(*rdx, *rdxType, *rdxPass) - fmt.Println(store.Ping()) - limit := limit.NewTokenLimiter(rate, burst, store, *rdxKey) - timer := time.NewTimer(time.Second * seconds) - quit := make(chan struct{}) - defer timer.Stop() - go func() { - <-timer.C - close(quit) - }() - - var allowed, denied int32 - var wait sync.WaitGroup - for i := 0; i < *threads; i++ { - wait.Add(1) - go func() { - for { - select { - case <-quit: - wait.Done() - return - default: - if limit.Allow() { - atomic.AddInt32(&allowed, 1) - } else { - atomic.AddInt32(&denied, 1) - } - } - } - }() - } - - wait.Wait() - fmt.Printf("allowed: %d, denied: %d, qps: %d\n", allowed, denied, (allowed+denied)/seconds) -} diff --git a/example/load/main.go b/example/load/main.go deleted file mode 100644 index d4d6f8a0..00000000 --- a/example/load/main.go +++ /dev/null @@ -1,148 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "io" - "math" - "math/rand" - "os" - "sync" - "sync/atomic" - "time" - - "github.com/tal-tech/go-zero/core/collection" - "github.com/tal-tech/go-zero/core/executors" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/syncx" - "gopkg.in/cheggaaa/pb.v1" -) - -const ( - beta = 0.9 - total = 400 - interval = time.Second - factor = 5 -) - -var ( - seconds = flag.Int("d", 400, "duration to go") - flying uint64 - avgFlyingAggressive float64 - aggressiveLock syncx.SpinLock - avgFlyingLazy float64 - lazyLock syncx.SpinLock - avgFlyingBoth float64 - bothLock syncx.SpinLock - lessWriter *executors.LessExecutor - passCounter = collection.NewRollingWindow(50, time.Millisecond*100) - rtCounter = collection.NewRollingWindow(50, time.Millisecond*100) - index int32 -) - -func main() { - flag.Parse() - - // only log 100 records - lessWriter = executors.NewLessExecutor(interval * total / 100) - - fp, err := os.Create("result.csv") - logx.Must(err) - defer fp.Close() - fmt.Fprintln(fp, "second,maxFlight,flying,agressiveAvgFlying,lazyAvgFlying,bothAvgFlying") - - ticker := time.NewTicker(interval) - defer ticker.Stop() - bar := pb.New(*seconds * 2).Start() - var waitGroup sync.WaitGroup - batchRequests := func(i int) { - <-ticker.C - requests := (i + 1) * factor - func() { - it := time.NewTicker(interval / time.Duration(requests)) - defer it.Stop() - for j := 0; j < requests; j++ { - <-it.C - waitGroup.Add(1) - go func() { - issueRequest(fp, atomic.AddInt32(&index, 1)) - waitGroup.Done() - }() - } - bar.Increment() - }() - } - for i := 0; i < *seconds; i++ { - batchRequests(i) - } - for i := *seconds; i > 0; i-- { - batchRequests(i) - } - bar.Finish() - waitGroup.Wait() -} - -func issueRequest(writer io.Writer, idx int32) { - v := atomic.AddUint64(&flying, 1) - aggressiveLock.Lock() - af := avgFlyingAggressive*beta + float64(v)*(1-beta) - avgFlyingAggressive = af - aggressiveLock.Unlock() - bothLock.Lock() - bf := avgFlyingBoth*beta + float64(v)*(1-beta) - avgFlyingBoth = bf - bothLock.Unlock() - duration := time.Millisecond * time.Duration(rand.Int63n(10)+1) - job(duration) - passCounter.Add(1) - rtCounter.Add(float64(duration) / float64(time.Millisecond)) - v1 := atomic.AddUint64(&flying, ^uint64(0)) - lazyLock.Lock() - lf := avgFlyingLazy*beta + float64(v1)*(1-beta) - avgFlyingLazy = lf - lazyLock.Unlock() - bothLock.Lock() - bf = avgFlyingBoth*beta + float64(v1)*(1-beta) - avgFlyingBoth = bf - bothLock.Unlock() - lessWriter.DoOrDiscard(func() { - fmt.Fprintf(writer, "%d,%d,%d,%.2f,%.2f,%.2f\n", idx, maxFlight(), v, af, lf, bf) - }) -} - -func job(duration time.Duration) { - time.Sleep(duration) -} - -func maxFlight() int64 { - return int64(math.Max(1, float64(maxPass()*10)*(minRt()/1e3))) -} - -func maxPass() int64 { - var result float64 = 1 - - passCounter.Reduce(func(b *collection.Bucket) { - if b.Sum > result { - result = b.Sum - } - }) - - return int64(result) -} - -func minRt() float64 { - var result float64 = 1000 - - rtCounter.Reduce(func(b *collection.Bucket) { - if b.Count <= 0 { - return - } - - avg := math.Round(b.Sum / float64(b.Count)) - if avg < result { - result = avg - } - }) - - return result -} diff --git a/example/load/plot.py b/example/load/plot.py deleted file mode 100644 index c46a4d1c..00000000 --- a/example/load/plot.py +++ /dev/null @@ -1,14 +0,0 @@ -import click -import pandas as pd -import matplotlib.pyplot as plt - -@click.command() -@click.option("--csv", default="result.csv") -def main(csv): - df = pd.read_csv(csv, index_col="second") - df.drop(["agressiveAvgFlying", "bothAvgFlying"], axis=1, inplace=True) - df.plot() - plt.show() - -if __name__ == "__main__": - main() diff --git a/example/load/simulate/client/main.go b/example/load/simulate/client/main.go deleted file mode 100644 index 529d2f87..00000000 --- a/example/load/simulate/client/main.go +++ /dev/null @@ -1,95 +0,0 @@ -package main - -import ( - "errors" - "flag" - "fmt" - "io" - "net/http" - "os" - "sync/atomic" - "time" - - "github.com/tal-tech/go-zero/core/fx" - "github.com/tal-tech/go-zero/core/logx" -) - -var ( - errServiceUnavailable = errors.New("service unavailable") - total int64 - pass int64 - fail int64 - drop int64 - seconds int64 = 1 -) - -func main() { - flag.Parse() - - fp, err := os.Create("result.csv") - logx.Must(err) - defer fp.Close() - fmt.Fprintln(fp, "seconds,total,pass,fail,drop") - - go func() { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for range ticker.C { - reset(fp) - } - }() - - for i := 0; ; i++ { - it := time.NewTicker(time.Second / time.Duration(atomic.LoadInt64(&seconds))) - func() { - for j := 0; j < int(seconds); j++ { - <-it.C - go issueRequest() - } - }() - it.Stop() - - cur := atomic.AddInt64(&seconds, 1) - fmt.Println(cur) - } -} - -func issueRequest() { - atomic.AddInt64(&total, 1) - err := fx.DoWithTimeout(func() error { - return job() - }, time.Second) - switch err { - case nil: - atomic.AddInt64(&pass, 1) - case errServiceUnavailable: - atomic.AddInt64(&drop, 1) - default: - atomic.AddInt64(&fail, 1) - } -} - -func job() error { - resp, err := http.Get("http://localhost:3333/") - if err != nil { - return err - } - - defer resp.Body.Close() - switch resp.StatusCode { - case http.StatusOK: - return nil - default: - return errServiceUnavailable - } -} - -func reset(writer io.Writer) { - fmt.Fprintf(writer, "%d,%d,%d,%d,%d\n", - atomic.LoadInt64(&seconds), - atomic.SwapInt64(&total, 0), - atomic.SwapInt64(&pass, 0), - atomic.SwapInt64(&fail, 0), - atomic.SwapInt64(&drop, 0), - ) -} diff --git a/example/load/simulate/client/plot.py b/example/load/simulate/client/plot.py deleted file mode 100644 index 8b90e942..00000000 --- a/example/load/simulate/client/plot.py +++ /dev/null @@ -1,13 +0,0 @@ -import click -import pandas as pd -import matplotlib.pyplot as plt - -@click.command() -@click.option("--csv", default="result.csv") -def main(csv): - df = pd.read_csv(csv, index_col="seconds") - df.plot() - plt.show() - -if __name__ == "__main__": - main() diff --git a/example/load/simulate/cpu/Dockerfile b/example/load/simulate/cpu/Dockerfile deleted file mode 100644 index a03fb8f7..00000000 --- a/example/load/simulate/cpu/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM golang:alpine AS builder - -LABEL stage=gobuilder - -ENV CGO_ENABLED 0 -ENV GOOS linux -ENV GOPROXY https://goproxy.cn,direct - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/main example/load/simulate/cpu/main.go - - -FROM alpine - -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -RUN apk add git -RUN go get github.com/vikyd/go-cpu-load - -RUN mkdir /app -COPY --from=builder /app/main /app/main - -WORKDIR /app -CMD ["/app/main"] diff --git a/example/load/simulate/cpu/cpu-accuracy.md b/example/load/simulate/cpu/cpu-accuracy.md deleted file mode 100644 index b21cf5cd..00000000 --- a/example/load/simulate/cpu/cpu-accuracy.md +++ /dev/null @@ -1,27 +0,0 @@ -# cpu监控准确度测试 - -1. 启动测试pod - - `make deploy` - -2. 通过`kubectl get po -n adhoc`确认`sheeding` pod已经成功运行,通过如下命令进入pod - - `kubectl exec -it -n adhoc shedding -- sh` - -3. 启动负载 - - `/app # go-cpu-load -p 50 -c 1` - - 默认`go-cpu-load`是对每个core加上负载的,所以测试里指定了`1000m`,等同于1 core,我们指定`-c 1`让测试更具有可读性 - - `-p`可以多换几个值测试 - -4. 验证测试准确性 - - `kubectl logs -f -n adhoc shedding` - - 可以看到日志中的`CPU`报告,`1000m`表示`100%`,如果看到`500m`则表示`50%`,每分钟输出一次 - - `watch -n 5 kubectl top pod -n adhoc` - - 可以看到`kubectl`报告的`CPU`使用率,两者进行对比,即可知道是否准确 diff --git a/example/load/simulate/cpu/main.go b/example/load/simulate/cpu/main.go deleted file mode 100644 index 8cc3ddd4..00000000 --- a/example/load/simulate/cpu/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import _ "github.com/tal-tech/go-zero/core/stat" - -func main() { - select {} -} diff --git a/example/load/simulate/server/server.go b/example/load/simulate/server/server.go deleted file mode 100644 index 78b123f2..00000000 --- a/example/load/simulate/server/server.go +++ /dev/null @@ -1,71 +0,0 @@ -package main - -import ( - "fmt" - "net/http" - "runtime" - "time" - - "github.com/tal-tech/go-zero/core/fx" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/service" - "github.com/tal-tech/go-zero/core/stat" - "github.com/tal-tech/go-zero/rest" -) - -const duration = time.Millisecond - -func main() { - go func() { - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for range ticker.C { - fmt.Printf("cpu: %d\n", stat.CpuUsage()) - } - }() - - logx.Disable() - engine := rest.MustNewServer(rest.RestConf{ - ServiceConf: service.ServiceConf{ - Log: logx.LogConf{ - Mode: "console", - }, - }, - Host: "0.0.0.0", - Port: 3333, - CpuThreshold: 800, - }) - defer engine.Stop() - engine.AddRoute(rest.Route{ - Method: http.MethodGet, - Path: "/", - Handler: func(w http.ResponseWriter, r *http.Request) { - if err := fx.DoWithTimeout(func() error { - job(duration) - return nil - }, time.Millisecond*100); err != nil { - w.WriteHeader(http.StatusServiceUnavailable) - } - }, - }) - engine.Start() -} - -func job(duration time.Duration) { - done := make(chan int) - - for i := 0; i < runtime.NumCPU(); i++ { - go func() { - for { - select { - case <-done: - return - default: - } - } - }() - } - - time.Sleep(duration) - close(done) -} diff --git a/example/logging/logging.go b/example/logging/logging.go deleted file mode 100644 index dd0949ea..00000000 --- a/example/logging/logging.go +++ /dev/null @@ -1,30 +0,0 @@ -package main - -import ( - "time" - - "github.com/tal-tech/go-zero/core/logx" -) - -func foo() { - logx.WithDuration(time.Second).Error("world") -} - -func main() { - c := logx.LogConf{ - Mode: "console", - Path: "logs", - } - logx.MustSetup(c) - defer logx.Close() - logx.Info("info") - logx.Error("error") - logx.ErrorStack("hello") - logx.Errorf("%s and %s", "hello", "world") - logx.Severef("%s severe %s", "hello", "world") - logx.Slowf("%s slow %s", "hello", "world") - logx.Statf("%s stat %s", "hello", "world") - logx.WithDuration(time.Minute + time.Second).Info("hello") - logx.WithDuration(time.Minute + time.Second).Error("hello") - foo() -} diff --git a/example/logging/redirector/main.go b/example/logging/redirector/main.go deleted file mode 100644 index 1121e1b8..00000000 --- a/example/logging/redirector/main.go +++ /dev/null @@ -1,20 +0,0 @@ -package main - -import ( - "fmt" - "time" - - "github.com/tal-tech/go-zero/core/logx" -) - -func main() { - logx.MustSetup(logx.LogConf{ - Mode: "console", - }) - logx.CollectSysLog() - - line := "asdkg" - logx.Info(line) - fmt.Print(line) - time.Sleep(time.Second) -} diff --git a/example/mapreduce/countfunc/countfunc.go b/example/mapreduce/countfunc/countfunc.go deleted file mode 100644 index 01b63302..00000000 --- a/example/mapreduce/countfunc/countfunc.go +++ /dev/null @@ -1,127 +0,0 @@ -package main - -import ( - "bufio" - "errors" - "flag" - "fmt" - "io" - "log" - "os" - "path" - "path/filepath" - "strings" - "sync/atomic" - "time" - - "github.com/google/gops/agent" - "github.com/tal-tech/go-zero/core/mr" -) - -var ( - dir = flag.String("d", "", "dir to enumerate") - stopOnFile = flag.String("s", "", "stop when got file") - maxFiles = flag.Int("m", 0, "at most files to process") - mode = flag.String("mode", "", "simulate mode, can be return|panic") - count uint32 -) - -func enumerateLines(filename string) chan string { - output := make(chan string) - go func() { - file, err := os.Open(filename) - if err != nil { - return - } - defer file.Close() - - reader := bufio.NewReader(file) - for { - line, err := reader.ReadString('\n') - if err == io.EOF { - break - } - - if !strings.HasPrefix(line, "#") { - output <- line - } - } - close(output) - }() - return output -} - -func mapper(filename interface{}, writer mr.Writer, cancel func(error)) { - if len(*stopOnFile) > 0 && path.Base(filename.(string)) == *stopOnFile { - fmt.Printf("Stop on file: %s\n", *stopOnFile) - cancel(errors.New("stop on file")) - return - } - - var result int - for line := range enumerateLines(filename.(string)) { - if strings.HasPrefix(strings.TrimSpace(line), "func") { - result++ - } - } - - switch *mode { - case "return": - if atomic.AddUint32(&count, 1)%10 == 0 { - return - } - case "panic": - if atomic.AddUint32(&count, 1)%10 == 0 { - panic("wow") - } - } - - writer.Write(result) -} - -func reducer(input <-chan interface{}, writer mr.Writer, cancel func(error)) { - var result int - - for count := range input { - v := count.(int) - if *maxFiles > 0 && result >= *maxFiles { - fmt.Printf("Reached max files: %d\n", *maxFiles) - cancel(errors.New("max files reached")) - return - } - result += v - } - - writer.Write(result) -} - -func main() { - if err := agent.Listen(agent.Options{}); err != nil { - log.Fatal(err) - } - - flag.Parse() - - if len(*dir) == 0 { - flag.Usage() - } - - fmt.Println("Processing, please wait...") - - start := time.Now() - result, err := mr.MapReduce(func(source chan<- interface{}) { - filepath.Walk(*dir, func(fpath string, f os.FileInfo, err error) error { - if !f.IsDir() && path.Ext(fpath) == ".go" { - source <- fpath - } - return nil - }) - }, mapper, reducer) - if err != nil { - fmt.Println(err) - } else { - fmt.Println(result) - fmt.Println("Elapsed:", time.Since(start)) - fmt.Println("Done") - } -} diff --git a/example/mapreduce/deadlock/main.go b/example/mapreduce/deadlock/main.go deleted file mode 100644 index 422014ad..00000000 --- a/example/mapreduce/deadlock/main.go +++ /dev/null @@ -1,36 +0,0 @@ -package main - -import ( - "log" - "strconv" - - "github.com/tal-tech/go-zero/core/mr" -) - -type User struct { - Uid int - Name string -} - -func main() { - uids := []int{111, 222, 333} - res, err := mr.MapReduce(func(source chan<- interface{}) { - for _, uid := range uids { - source <- uid - } - }, func(item interface{}, writer mr.Writer, cancel func(error)) { - uid := item.(int) - user := &User{ - Uid: uid, - Name: strconv.Itoa(uid), - } - writer.Write(user) - }, func(pipe <-chan interface{}, writer mr.Writer, cancel func(error)) { - // missing writer.Write(...), should not panic - }) - if err != nil { - log.Print(err) - return - } - log.Print(len(res.([]*User))) -} diff --git a/example/mapreduce/finishvoid/finishvoid.go b/example/mapreduce/finishvoid/finishvoid.go deleted file mode 100644 index 3c220055..00000000 --- a/example/mapreduce/finishvoid/finishvoid.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -import ( - "fmt" - "time" - - "github.com/tal-tech/go-zero/core/mr" - "github.com/tal-tech/go-zero/core/timex" -) - -func main() { - start := timex.Now() - - mr.FinishVoid(func() { - time.Sleep(time.Second) - }, func() { - time.Sleep(time.Second * 5) - }, func() { - time.Sleep(time.Second * 10) - }, func() { - time.Sleep(time.Second * 6) - }, func() { - if err := mr.Finish(func() error { - time.Sleep(time.Second) - return nil - }, func() error { - time.Sleep(time.Second * 10) - return nil - }); err != nil { - fmt.Println(err) - } - }) - - fmt.Println(timex.Since(start)) -} diff --git a/example/mapreduce/flatmap/flatmap.go b/example/mapreduce/flatmap/flatmap.go deleted file mode 100644 index 48499d5d..00000000 --- a/example/mapreduce/flatmap/flatmap.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/tal-tech/go-zero/core/mr" -) - -var ( - persons = []string{"john", "mary", "alice", "bob"} - friends = map[string][]string{ - "john": {"harry", "hermione", "ron"}, - "mary": {"sam", "frodo"}, - "alice": {}, - "bob": {"jamie", "tyrion", "cersei"}, - } -) - -func main() { - var allFriends []string - for v := range mr.Map(func(source chan<- interface{}) { - for _, each := range persons { - source <- each - } - }, func(item interface{}, writer mr.Writer) { - writer.Write(friends[item.(string)]) - }, mr.WithWorkers(100)) { - allFriends = append(allFriends, v.([]string)...) - } - fmt.Println(allFriends) -} diff --git a/example/mapreduce/goroutineleak/leak.go b/example/mapreduce/goroutineleak/leak.go deleted file mode 100644 index 49fc2c0b..00000000 --- a/example/mapreduce/goroutineleak/leak.go +++ /dev/null @@ -1,69 +0,0 @@ -package main - -import ( - "errors" - "fmt" - "os" - "runtime" - "runtime/pprof" - "time" - - "github.com/tal-tech/go-zero/core/lang" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/mr" - "github.com/tal-tech/go-zero/core/proc" -) - -func dumpGoroutines() { - dumpFile := "goroutines.dump" - logx.Infof("Got dump goroutine signal, printing goroutine profile to %s", dumpFile) - - if f, err := os.Create(dumpFile); err != nil { - logx.Errorf("Failed to dump goroutine profile, error: %v", err) - } else { - defer f.Close() - pprof.Lookup("goroutine").WriteTo(f, 2) - } -} - -func main() { - profiler := proc.StartProfile() - defer profiler.Stop() - - done := make(chan lang.PlaceholderType) - go func() { - for { - time.Sleep(time.Second) - fmt.Println(runtime.NumGoroutine()) - } - }() - go func() { - time.Sleep(time.Minute) - dumpGoroutines() - close(done) - }() - for { - select { - case <-done: - return - default: - mr.MapReduce(func(source chan<- interface{}) { - for i := 0; i < 100; i++ { - source <- i - } - }, func(item interface{}, writer mr.Writer, cancel func(error)) { - if item.(int) == 40 { - cancel(errors.New("any")) - return - } - writer.Write(item) - }, func(pipe <-chan interface{}, writer mr.Writer, cancel func(error)) { - list := make([]int, 0) - for p := range pipe { - list = append(list, p.(int)) - } - writer.Write(list) - }) - } - } -} diff --git a/example/mapreduce/irregular/irregular.go b/example/mapreduce/irregular/irregular.go deleted file mode 100644 index 075b8ab6..00000000 --- a/example/mapreduce/irregular/irregular.go +++ /dev/null @@ -1,28 +0,0 @@ -package main - -import ( - "fmt" - "time" - - "github.com/tal-tech/go-zero/core/mr" -) - -func main() { - mr.MapReduceVoid(func(source chan<- interface{}) { - for i := 0; i < 10; i++ { - source <- i - } - }, func(item interface{}, writer mr.Writer, cancel func(error)) { - i := item.(int) - if i == 0 { - time.Sleep(10 * time.Second) - } else { - time.Sleep(5 * time.Second) - } - writer.Write(i) - }, func(pipe <-chan interface{}, cancel func(error)) { - for i := range pipe { - fmt.Println(i) - } - }) -} diff --git a/example/mapreduce/mr/mr.go b/example/mapreduce/mr/mr.go deleted file mode 100644 index 8a98ec3d..00000000 --- a/example/mapreduce/mr/mr.go +++ /dev/null @@ -1,114 +0,0 @@ -package main - -import ( - "log" - "time" - - "github.com/tal-tech/go-zero/core/mr" - "github.com/tal-tech/go-zero/core/timex" -) - -type user struct{} - -func (u *user) User(uid int64) (interface{}, error) { - time.Sleep(time.Millisecond * 30) - return nil, nil -} - -type store struct{} - -func (s *store) Store(pid int64) (interface{}, error) { - time.Sleep(time.Millisecond * 50) - return nil, nil -} - -type order struct{} - -func (o *order) Order(pid int64) (interface{}, error) { - time.Sleep(time.Millisecond * 40) - return nil, nil -} - -var ( - userRpc user - storeRpc store - orderRpc order -) - -func main() { - start := timex.Now() - _, err := productDetail(123, 345) - if err != nil { - log.Printf("product detail error: %v", err) - return - } - log.Printf("productDetail time: %v", timex.Since(start)) - - // the data processing - res, err := checkLegal([]int64{1, 2, 3}) - if err != nil { - log.Printf("check error: %v", err) - return - } - log.Printf("check res: %v", res) -} - -type ProductDetail struct { - User interface{} - Store interface{} - Order interface{} -} - -func productDetail(uid, pid int64) (*ProductDetail, error) { - var pd ProductDetail - err := mr.Finish(func() (err error) { - pd.User, err = userRpc.User(uid) - return - }, func() (err error) { - pd.Store, err = storeRpc.Store(pid) - return - }, func() (err error) { - pd.Order, err = orderRpc.Order(pid) - return - }) - - if err != nil { - return nil, err - } - - return &pd, nil -} - -func checkLegal(uids []int64) ([]int64, error) { - r, err := mr.MapReduce(func(source chan<- interface{}) { - for _, uid := range uids { - source <- uid - } - }, func(item interface{}, writer mr.Writer, cancel func(error)) { - uid := item.(int64) - ok, err := check(uid) - if err != nil { - cancel(err) - } - if ok { - writer.Write(uid) - } - }, func(pipe <-chan interface{}, writer mr.Writer, cancel func(error)) { - var uids []int64 - for p := range pipe { - uids = append(uids, p.(int64)) - } - writer.Write(uids) - }) - if err != nil { - return nil, err - } - - return r.([]int64), nil -} - -func check(uid int64) (bool, error) { - // do something check user legal - time.Sleep(time.Millisecond * 20) - return true, nil -} diff --git a/example/mongo/time.go b/example/mongo/time.go deleted file mode 100644 index 2ba91d88..00000000 --- a/example/mongo/time.go +++ /dev/null @@ -1,36 +0,0 @@ -package main - -import ( - "fmt" - "log" - "time" - - "github.com/globalsign/mgo" - "github.com/globalsign/mgo/bson" - "github.com/tal-tech/go-zero/core/stores/mongo" -) - -type Roster struct { - Id bson.ObjectId `bson:"_id"` - CreateTime time.Time `bson:"createTime"` - Classroom mgo.DBRef `bson:"classroom"` - Member mgo.DBRef `bson:"member"` - DisplayName string `bson:"displayName"` -} - -func main() { - model := mongo.MustNewModel("localhost:27017/blackboard", "roster") - for i := 0; i < 1000; i++ { - session, err := model.TakeSession() - if err != nil { - log.Fatal(err) - } - - var roster Roster - filter := bson.M{"_id": bson.ObjectIdHex("587353380cf2d7273d183f9e")} - fmt.Println(model.GetCollection(session).Find(filter).One(&roster)) - model.PutSession(session) - } - - time.Sleep(time.Hour) -} diff --git a/example/periodicalexecutor/pe.go b/example/periodicalexecutor/pe.go deleted file mode 100644 index e32aef72..00000000 --- a/example/periodicalexecutor/pe.go +++ /dev/null @@ -1,22 +0,0 @@ -package main - -import ( - "fmt" - "time" - - "github.com/tal-tech/go-zero/core/executors" -) - -func main() { - executor := executors.NewBulkExecutor(func(items []interface{}) { - fmt.Println(len(items)) - }, executors.WithBulkTasks(10)) - for { - if err := executor.Add(1); err != nil { - fmt.Println(err) - return - } - - time.Sleep(time.Millisecond * 90) - } -} diff --git a/example/pool/pool.go b/example/pool/pool.go deleted file mode 100644 index 004ad4df..00000000 --- a/example/pool/pool.go +++ /dev/null @@ -1,53 +0,0 @@ -package main - -import ( - "bufio" - "fmt" - "os" - "sync" - "sync/atomic" - "time" - - "github.com/tal-tech/go-zero/core/lang" - "github.com/tal-tech/go-zero/core/syncx" -) - -func main() { - var count int32 - var consumed int32 - pool := syncx.NewPool(80, func() interface{} { - fmt.Printf("+ %d\n", atomic.AddInt32(&count, 1)) - return 1 - }, func(interface{}) { - fmt.Printf("- %d\n", atomic.AddInt32(&count, -1)) - }, syncx.WithMaxAge(time.Second)) - - var waitGroup sync.WaitGroup - quit := make(chan lang.PlaceholderType) - waitGroup.Add(100) - for i := 0; i < 100; i++ { - go func() { - defer func() { - waitGroup.Done() - fmt.Println("routine quit") - }() - - for { - select { - case <-quit: - return - default: - x := pool.Get().(int) - atomic.AddInt32(&consumed, 1) - pool.Put(x) - } - } - }() - } - - bufio.NewReader(os.Stdin).ReadLine() - close(quit) - fmt.Println("quitted") - waitGroup.Wait() - fmt.Printf("consumed %d\n", atomic.LoadInt32(&consumed)) -} diff --git a/example/rpc/client/direct/Dockerfile b/example/rpc/client/direct/Dockerfile deleted file mode 100644 index f1380bd9..00000000 --- a/example/rpc/client/direct/Dockerfile +++ /dev/null @@ -1,22 +0,0 @@ -FROM golang:1.13-alpine AS builder - -LABEL stage=gobuilder - -ENV CGO_ENABLED 0 -ENV GOOS linux -ENV GOPROXY https://goproxy.cn,direct - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/unarydirect example/rpc/client/direct/client.go - - -FROM alpine - -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/unarydirect /app/unarydirect - -CMD ["./unarydirect"] diff --git a/example/rpc/client/direct/client.go b/example/rpc/client/direct/client.go deleted file mode 100644 index d9caf4e9..00000000 --- a/example/rpc/client/direct/client.go +++ /dev/null @@ -1,45 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "time" - - "github.com/tal-tech/go-zero/core/discov" - "github.com/tal-tech/go-zero/example/rpc/remote/unary" - "github.com/tal-tech/go-zero/zrpc" -) - -const timeFormat = "15:04:05" - -func main() { - flag.Parse() - - client := zrpc.MustNewClient(zrpc.RpcClientConf{ - Etcd: discov.EtcdConf{ - Hosts: []string{"localhost:2379"}, - Key: "zrpc", - }, - }) - - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - for { - select { - case <-ticker.C: - conn := client.Conn() - greet := unary.NewGreeterClient(conn) - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - resp, err := greet.Greet(ctx, &unary.Request{ - Name: "kevin", - }) - if err != nil { - fmt.Printf("%s X %s\n", time.Now().Format(timeFormat), err.Error()) - } else { - fmt.Printf("%s => %s\n", time.Now().Format(timeFormat), resp.Greet) - } - cancel() - } - } -} diff --git a/example/rpc/client/lb/main.go b/example/rpc/client/lb/main.go deleted file mode 100644 index 48a86230..00000000 --- a/example/rpc/client/lb/main.go +++ /dev/null @@ -1,57 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "log" - "time" - - "github.com/tal-tech/go-zero/core/discov" - "github.com/tal-tech/go-zero/example/rpc/remote/unary" - "github.com/tal-tech/go-zero/zrpc" -) - -var lb = flag.String("t", "direct", "the load balancer type") - -func main() { - flag.Parse() - - var cli zrpc.Client - switch *lb { - case "direct": - cli = zrpc.MustNewClient(zrpc.RpcClientConf{ - Endpoints: []string{ - "localhost:3456", - "localhost:3457", - }, - }) - case "discov": - cli = zrpc.MustNewClient(zrpc.RpcClientConf{ - Etcd: discov.EtcdConf{ - Hosts: []string{"localhost:2379"}, - Key: "zrpc", - }, - }) - default: - log.Fatal("bad load balancing type") - } - - greet := unary.NewGreeterClient(cli.Conn()) - ticker := time.NewTicker(time.Second) - defer ticker.Stop() - - for { - select { - case <-ticker.C: - resp, err := greet.Greet(context.Background(), &unary.Request{ - Name: "kevin", - }) - if err != nil { - fmt.Println("X", err.Error()) - } else { - fmt.Println("=>", resp.Greet) - } - } - } -} diff --git a/example/rpc/client/stream/client.go b/example/rpc/client/stream/client.go deleted file mode 100644 index 02dae928..00000000 --- a/example/rpc/client/stream/client.go +++ /dev/null @@ -1,61 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "log" - "sync" - - "github.com/tal-tech/go-zero/core/discov" - "github.com/tal-tech/go-zero/example/rpc/remote/stream" - "github.com/tal-tech/go-zero/zrpc" -) - -const name = "kevin" - -var key = flag.String("key", "zrpc", "the key on etcd") - -func main() { - flag.Parse() - - client, err := zrpc.NewClientNoAuth(discov.EtcdConf{ - Hosts: []string{"localhost:2379"}, - Key: *key, - }) - if err != nil { - log.Fatal(err) - } - - conn := client.Conn() - greet := stream.NewStreamGreeterClient(conn) - stm, err := greet.Greet(context.Background()) - if err != nil { - log.Fatal(err) - } - - var wg sync.WaitGroup - go func() { - for { - resp, err := stm.Recv() - if err != nil { - log.Fatal(err) - } - - fmt.Println("=>", resp.Greet) - wg.Done() - } - }() - - for i := 0; i < 3; i++ { - wg.Add(1) - fmt.Println("<=", name) - if err = stm.Send(&stream.StreamReq{ - Name: name, - }); err != nil { - log.Fatal(err) - } - } - - wg.Wait() -} diff --git a/example/rpc/client/unary/client.go b/example/rpc/client/unary/client.go deleted file mode 100644 index b2425d8f..00000000 --- a/example/rpc/client/unary/client.go +++ /dev/null @@ -1,39 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "time" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/rpc/remote/unary" - "github.com/tal-tech/go-zero/zrpc" -) - -var configFile = flag.String("f", "config.json", "the config file") - -func main() { - flag.Parse() - - var c zrpc.RpcClientConf - conf.MustLoad(*configFile, &c) - client := zrpc.MustNewClient(c) - ticker := time.NewTicker(time.Millisecond * 500) - defer ticker.Stop() - for { - select { - case <-ticker.C: - conn := client.Conn() - greet := unary.NewGreeterClient(conn) - resp, err := greet.Greet(context.Background(), &unary.Request{ - Name: "kevin", - }) - if err != nil { - fmt.Println("X", err.Error()) - } else { - fmt.Println("=>", resp.Greet) - } - } - } -} diff --git a/example/rpc/client/unary/config.json b/example/rpc/client/unary/config.json deleted file mode 100644 index 19364bfc..00000000 --- a/example/rpc/client/unary/config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "Server": "localhost:3457", - "App": "adhoc", - "Token": "E0459CF7-EA85-4E0C-BB48-C81448811511" -} diff --git a/example/rpc/client/unary/config_etcd.json b/example/rpc/client/unary/config_etcd.json deleted file mode 100644 index 31b18e0e..00000000 --- a/example/rpc/client/unary/config_etcd.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Hosts": [ - "127.0.0.1:2379" - ], - "Key": "sms", - "App": "adhoc", - "Token": "E0459CF7-EA85-4E0C-BB48-C81448811511" -} diff --git a/example/rpc/proxy/Dockerfile b/example/rpc/proxy/Dockerfile deleted file mode 100644 index a43ae4a2..00000000 --- a/example/rpc/proxy/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM golang:1.11 AS builder - -ENV CGO_ENABLED 0 -ENV GOOS linux - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/unaryproxy example/rpc/proxy/proxy.go - - -FROM alpine - -WORKDIR /app -COPY --from=builder /app/unaryproxy /app/unaryproxy - -CMD ["./unaryproxy"] diff --git a/example/rpc/proxy/proxy.go b/example/rpc/proxy/proxy.go deleted file mode 100644 index 408385e0..00000000 --- a/example/rpc/proxy/proxy.go +++ /dev/null @@ -1,49 +0,0 @@ -package main - -import ( - "context" - "flag" - - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/service" - "github.com/tal-tech/go-zero/example/rpc/remote/unary" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var ( - listen = flag.String("listen", "0.0.0.0:3456", "the address to listen on") - server = flag.String("server", "dns:///unaryserver:3456", "the backend service") -) - -type GreetServer struct { - *zrpc.RpcProxy -} - -func (s *GreetServer) Greet(ctx context.Context, req *unary.Request) (*unary.Response, error) { - conn, err := s.TakeConn(ctx) - if err != nil { - return nil, err - } - - remote := unary.NewGreeterClient(conn) - return remote.Greet(ctx, req) -} - -func main() { - flag.Parse() - - proxy := zrpc.MustNewServer(zrpc.RpcServerConf{ - ServiceConf: service.ServiceConf{ - Log: logx.LogConf{ - Mode: "console", - }, - }, - ListenOn: *listen, - }, func(grpcServer *grpc.Server) { - unary.RegisterGreeterServer(grpcServer, &GreetServer{ - RpcProxy: zrpc.NewProxy(*server), - }) - }) - proxy.Start() -} diff --git a/example/rpc/remote/stream/greet.pb.go b/example/rpc/remote/stream/greet.pb.go deleted file mode 100644 index f1cf242c..00000000 --- a/example/rpc/remote/stream/greet.pb.go +++ /dev/null @@ -1,190 +0,0 @@ -// Code generated by protoc-gen-go. -// source: greet.proto -// DO NOT EDIT! - -/* -Package stream is a generated protocol buffer package. - -It is generated from these files: - greet.proto - -It has these top-level messages: - StreamReq - StreamResp -*/ -package stream - -import ( - "fmt" - "math" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type StreamReq struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *StreamReq) Reset() { *m = StreamReq{} } -func (m *StreamReq) String() string { return proto.CompactTextString(m) } -func (*StreamReq) ProtoMessage() {} -func (*StreamReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *StreamReq) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type StreamResp struct { - Greet string `protobuf:"bytes,1,opt,name=greet" json:"greet,omitempty"` -} - -func (m *StreamResp) Reset() { *m = StreamResp{} } -func (m *StreamResp) String() string { return proto.CompactTextString(m) } -func (*StreamResp) ProtoMessage() {} -func (*StreamResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *StreamResp) GetGreet() string { - if m != nil { - return m.Greet - } - return "" -} - -func init() { - proto.RegisterType((*StreamReq)(nil), "stream.StreamReq") - proto.RegisterType((*StreamResp)(nil), "stream.StreamResp") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for StreamGreeter service - -type StreamGreeterClient interface { - Greet(ctx context.Context, opts ...grpc.CallOption) (StreamGreeter_GreetClient, error) -} - -type streamGreeterClient struct { - cc *grpc.ClientConn -} - -func NewStreamGreeterClient(cc *grpc.ClientConn) StreamGreeterClient { - return &streamGreeterClient{cc} -} - -func (c *streamGreeterClient) Greet(ctx context.Context, opts ...grpc.CallOption) (StreamGreeter_GreetClient, error) { - stream, err := grpc.NewClientStream(ctx, &_StreamGreeter_serviceDesc.Streams[0], c.cc, "/stream.StreamGreeter/greet", opts...) - if err != nil { - return nil, err - } - x := &streamGreeterGreetClient{stream} - return x, nil -} - -type StreamGreeter_GreetClient interface { - Send(*StreamReq) error - Recv() (*StreamResp, error) - grpc.ClientStream -} - -type streamGreeterGreetClient struct { - grpc.ClientStream -} - -func (x *streamGreeterGreetClient) Send(m *StreamReq) error { - return x.ClientStream.SendMsg(m) -} - -func (x *streamGreeterGreetClient) Recv() (*StreamResp, error) { - m := new(StreamResp) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// Server API for StreamGreeter service - -type StreamGreeterServer interface { - Greet(StreamGreeter_GreetServer) error -} - -func RegisterStreamGreeterServer(s *grpc.Server, srv StreamGreeterServer) { - s.RegisterService(&_StreamGreeter_serviceDesc, srv) -} - -func _StreamGreeter_Greet_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(StreamGreeterServer).Greet(&streamGreeterGreetServer{stream}) -} - -type StreamGreeter_GreetServer interface { - Send(*StreamResp) error - Recv() (*StreamReq, error) - grpc.ServerStream -} - -type streamGreeterGreetServer struct { - grpc.ServerStream -} - -func (x *streamGreeterGreetServer) Send(m *StreamResp) error { - return x.ServerStream.SendMsg(m) -} - -func (x *streamGreeterGreetServer) Recv() (*StreamReq, error) { - m := new(StreamReq) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -var _StreamGreeter_serviceDesc = grpc.ServiceDesc{ - ServiceName: "stream.StreamGreeter", - HandlerType: (*StreamGreeterServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "greet", - Handler: _StreamGreeter_Greet_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "greet.proto", -} - -func init() { proto.RegisterFile("greet.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 128 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4e, 0x2f, 0x4a, 0x4d, - 0x2d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x2b, 0x2e, 0x29, 0x4a, 0x4d, 0xcc, 0x55, - 0x92, 0xe7, 0xe2, 0x0c, 0x06, 0xb3, 0x82, 0x52, 0x0b, 0x85, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, - 0x53, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xc0, 0x6c, 0x25, 0x25, 0x2e, 0x2e, 0x98, 0x82, - 0xe2, 0x02, 0x21, 0x11, 0x2e, 0x56, 0xb0, 0x29, 0x50, 0x25, 0x10, 0x8e, 0x91, 0x33, 0x17, 0x2f, - 0x44, 0x8d, 0x3b, 0x88, 0x9b, 0x5a, 0x24, 0x64, 0x04, 0x55, 0x26, 0x24, 0xa8, 0x07, 0xb1, 0x47, - 0x0f, 0x6e, 0x89, 0x94, 0x10, 0xba, 0x50, 0x71, 0x81, 0x06, 0xa3, 0x01, 0x63, 0x12, 0x1b, 0xd8, - 0x61, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x34, 0x15, 0xe8, 0xa7, 0x00, 0x00, 0x00, -} diff --git a/example/rpc/remote/stream/greet.proto b/example/rpc/remote/stream/greet.proto deleted file mode 100644 index fd7c1611..00000000 --- a/example/rpc/remote/stream/greet.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package stream; - -message StreamReq { - string name = 1; -} - -message StreamResp { - string greet = 1; -} - -service StreamGreeter { - rpc greet(stream StreamReq) returns (stream StreamResp); -} \ No newline at end of file diff --git a/example/rpc/remote/unary/greet.pb.go b/example/rpc/remote/unary/greet.pb.go deleted file mode 100644 index 7c2b3829..00000000 --- a/example/rpc/remote/unary/greet.pb.go +++ /dev/null @@ -1,158 +0,0 @@ -// Code generated by protoc-gen-go. -// source: greet.proto -// DO NOT EDIT! - -/* -Package unary is a generated protocol buffer package. - -It is generated from these files: - greet.proto - -It has these top-level messages: - Request - Response -*/ -package unary - -import ( - "fmt" - "math" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Request struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} -func (*Request) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Request) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type Response struct { - Greet string `protobuf:"bytes,1,opt,name=greet" json:"greet,omitempty"` -} - -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} -func (*Response) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Response) GetGreet() string { - if m != nil { - return m.Greet - } - return "" -} - -func init() { - proto.RegisterType((*Request)(nil), "unary.Request") - proto.RegisterType((*Response)(nil), "unary.Response") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Greeter service - -type GreeterClient interface { - Greet(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) -} - -type greeterClient struct { - cc *grpc.ClientConn -} - -func NewGreeterClient(cc *grpc.ClientConn) GreeterClient { - return &greeterClient{cc} -} - -func (c *greeterClient) Greet(ctx context.Context, in *Request, opts ...grpc.CallOption) (*Response, error) { - out := new(Response) - err := grpc.Invoke(ctx, "/unary.Greeter/greet", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Greeter service - -type GreeterServer interface { - Greet(context.Context, *Request) (*Response, error) -} - -func RegisterGreeterServer(s *grpc.Server, srv GreeterServer) { - s.RegisterService(&_Greeter_serviceDesc, srv) -} - -func _Greeter_Greet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Request) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GreeterServer).Greet(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/unary.Greeter/Greet", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GreeterServer).Greet(ctx, req.(*Request)) - } - return interceptor(ctx, in, info, handler) -} - -var _Greeter_serviceDesc = grpc.ServiceDesc{ - ServiceName: "unary.Greeter", - HandlerType: (*GreeterServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "greet", - Handler: _Greeter_Greet_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "greet.proto", -} - -func init() { proto.RegisterFile("greet.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 126 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4e, 0x2f, 0x4a, 0x4d, - 0x2d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x2d, 0xcd, 0x4b, 0x2c, 0xaa, 0x54, 0x92, - 0xe5, 0x62, 0x0f, 0x4a, 0x2d, 0x2c, 0x4d, 0x2d, 0x2e, 0x11, 0x12, 0xe2, 0x62, 0xc9, 0x4b, 0xcc, - 0x4d, 0x95, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0xb3, 0x95, 0x14, 0xb8, 0x38, 0x82, 0x52, - 0x8b, 0x0b, 0xf2, 0xf3, 0x8a, 0x53, 0x85, 0x44, 0xb8, 0x58, 0xc1, 0x06, 0x40, 0x15, 0x40, 0x38, - 0x46, 0xc6, 0x5c, 0xec, 0xee, 0x20, 0x46, 0x6a, 0x91, 0x90, 0x06, 0x54, 0x81, 0x10, 0x9f, 0x1e, - 0xd8, 0x70, 0x3d, 0xa8, 0xc9, 0x52, 0xfc, 0x70, 0x3e, 0xc4, 0xa8, 0x24, 0x36, 0xb0, 0x1b, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x6d, 0x30, 0xb0, 0x92, 0x00, 0x00, 0x00, -} diff --git a/example/rpc/remote/unary/greet.proto b/example/rpc/remote/unary/greet.proto deleted file mode 100644 index ae642244..00000000 --- a/example/rpc/remote/unary/greet.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -package unary; - -message Request { - string name = 1; -} - -message Response { - string greet = 1; -} - -service Greeter { - rpc greet(Request) returns (Response); -} - - diff --git a/example/rpc/server/stream/etc/config.json b/example/rpc/server/stream/etc/config.json deleted file mode 100644 index 4bf8de51..00000000 --- a/example/rpc/server/stream/etc/config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "Name":"test", - "MetricsUrl": "http://localhost:2222/add", - "ListenOn": "localhost:3456", - "Etcd": { - "Hosts": [ - "localhost:2379" - ], - "Key": "zrpc" - }, - "Redis": { - "Host": "localhost:6379", - "Type": "node", - "Key": "apps" - }, - "Auth": false -} diff --git a/example/rpc/server/stream/server.go b/example/rpc/server/stream/server.go deleted file mode 100644 index f636a3bd..00000000 --- a/example/rpc/server/stream/server.go +++ /dev/null @@ -1,49 +0,0 @@ -package main - -import ( - "fmt" - "io" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/rpc/remote/stream" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -type StreamGreetServer int - -func (gs StreamGreetServer) Greet(s stream.StreamGreeter_GreetServer) error { - ctx := s.Context() - for { - select { - case <-ctx.Done(): - fmt.Println("cancelled by client") - return ctx.Err() - default: - req, err := s.Recv() - if err == io.EOF { - return nil - } - if err != nil { - return err - } - - fmt.Println("=>", req.Name) - greet := "hello, " + req.Name - fmt.Println("<=", greet) - s.Send(&stream.StreamResp{ - Greet: greet, - }) - } - } -} - -func main() { - var c zrpc.RpcServerConf - conf.MustLoad("etc/config.json", &c) - - server := zrpc.MustNewServer(c, func(grpcServer *grpc.Server) { - stream.RegisterStreamGreeterServer(grpcServer, StreamGreetServer(0)) - }) - server.Start() -} diff --git a/example/rpc/server/unary/Dockerfile b/example/rpc/server/unary/Dockerfile deleted file mode 100644 index ad4e0e30..00000000 --- a/example/rpc/server/unary/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM golang:1.13-alpine AS builder - -LABEL stage=gobuilder - -ENV CGO_ENABLED 0 -ENV GOOS linux -ENV GOPROXY https://goproxy.cn,direct - -WORKDIR $GOPATH/src/zero -COPY . . -RUN go build -ldflags="-s -w" -o /app/unaryserver example/rpc/server/unary/server.go - - -FROM alpine - -RUN apk add --no-cache tzdata -ENV TZ Asia/Shanghai - -WORKDIR /app -COPY --from=builder /app/unaryserver /app/unaryserver -COPY example/rpc/server/unary/etc/k8s.json /app/ - -CMD ["./unaryserver", "-f", "k8s.json"] diff --git a/example/rpc/server/unary/etc/config.json b/example/rpc/server/unary/etc/config.json deleted file mode 100644 index 27431073..00000000 --- a/example/rpc/server/unary/etc/config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Name": "rpc.unary", - "Log": { - "Mode": "volume" - }, - "ListenOn": "localhost:3456", - "Etcd": { - "Hosts": [ - "localhost:2379" - ], - "Key": "zrpc" - } -} diff --git a/example/rpc/server/unary/etc/config1.json b/example/rpc/server/unary/etc/config1.json deleted file mode 100644 index f460e12d..00000000 --- a/example/rpc/server/unary/etc/config1.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Name": "rpc.unary", - "Log": { - "Mode": "volume" - }, - "ListenOn": "localhost:3457", - "Etcd": { - "Hosts": [ - "localhost:2379" - ], - "Key": "zrpc" - } -} diff --git a/example/rpc/server/unary/etc/k8s.json b/example/rpc/server/unary/etc/k8s.json deleted file mode 100644 index 3a775b33..00000000 --- a/example/rpc/server/unary/etc/k8s.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "Name": "rpc.unary", - "ListenOn": "0.0.0.0:3456", - "Auth": false, - "Etcd": { - "Hosts": [ - "etcd.discov:2379" - ], - "Key": "zrpc" - }, - "Timeout": 500 -} diff --git a/example/rpc/server/unary/server.go b/example/rpc/server/unary/server.go deleted file mode 100644 index 115cf1c2..00000000 --- a/example/rpc/server/unary/server.go +++ /dev/null @@ -1,63 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "log" - "os" - "sync" - "time" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/rpc/remote/unary" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/config.json", "the config file") - -type GreetServer struct { - lock sync.Mutex - alive bool - downTime time.Time -} - -func NewGreetServer() *GreetServer { - return &GreetServer{ - alive: true, - } -} - -func (gs *GreetServer) Greet(ctx context.Context, req *unary.Request) (*unary.Response, error) { - fmt.Println("=>", req) - - hostname, err := os.Hostname() - if err != nil { - return nil, err - } - - return &unary.Response{ - Greet: "hello from " + hostname, - }, nil -} - -func main() { - flag.Parse() - - var c zrpc.RpcServerConf - conf.MustLoad(*configFile, &c) - - server := zrpc.MustNewServer(c, func(grpcServer *grpc.Server) { - unary.RegisterGreeterServer(grpcServer, NewGreetServer()) - }) - interceptor := func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { - st := time.Now() - resp, err = handler(ctx, req) - log.Printf("method: %s time: %v\n", info.FullMethod, time.Since(st)) - return resp, err - } - - server.AddUnaryInterceptors(interceptor) - server.Start() -} diff --git a/example/shorturl/api/etc/shorturl-api.yaml b/example/shorturl/api/etc/shorturl-api.yaml deleted file mode 100644 index ce84dd95..00000000 --- a/example/shorturl/api/etc/shorturl-api.yaml +++ /dev/null @@ -1,8 +0,0 @@ -Name: shorturl-api -Host: 0.0.0.0 -Port: 8888 -Transform: - Etcd: - Hosts: - - localhost:2379 - Key: transform.rpc \ No newline at end of file diff --git a/example/shorturl/api/internal/config/config.go b/example/shorturl/api/internal/config/config.go deleted file mode 100644 index 4a5a38b3..00000000 --- a/example/shorturl/api/internal/config/config.go +++ /dev/null @@ -1,11 +0,0 @@ -package config - -import ( - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/zrpc" -) - -type Config struct { - rest.RestConf - Transform zrpc.RpcClientConf -} diff --git a/example/shorturl/api/internal/handler/expandhandler.go b/example/shorturl/api/internal/handler/expandhandler.go deleted file mode 100644 index d42b2d75..00000000 --- a/example/shorturl/api/internal/handler/expandhandler.go +++ /dev/null @@ -1,29 +0,0 @@ -package handler - -import ( - "net/http" - - "shorturl/api/internal/logic" - "shorturl/api/internal/svc" - "shorturl/api/internal/types" - - "github.com/tal-tech/go-zero/rest/httpx" -) - -func expandHandler(ctx *svc.ServiceContext) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req types.ExpandReq - if err := httpx.Parse(r, &req); err != nil { - httpx.Error(w, err) - return - } - - l := logic.NewExpandLogic(r.Context(), ctx) - resp, err := l.Expand(req) - if err != nil { - httpx.Error(w, err) - } else { - httpx.WriteJson(w, http.StatusOK, resp) - } - } -} diff --git a/example/shorturl/api/internal/handler/routes.go b/example/shorturl/api/internal/handler/routes.go deleted file mode 100644 index 6384a84e..00000000 --- a/example/shorturl/api/internal/handler/routes.go +++ /dev/null @@ -1,25 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package handler - -import ( - "net/http" - - "shorturl/api/internal/svc" - - "github.com/tal-tech/go-zero/rest" -) - -func RegisterHandlers(engine *rest.Server, serverCtx *svc.ServiceContext) { - engine.AddRoutes([]rest.Route{ - { - Method: http.MethodGet, - Path: "/shorten", - Handler: shortenHandler(serverCtx), - }, - { - Method: http.MethodGet, - Path: "/expand", - Handler: expandHandler(serverCtx), - }, - }) -} diff --git a/example/shorturl/api/internal/handler/shortenhandler.go b/example/shorturl/api/internal/handler/shortenhandler.go deleted file mode 100644 index 81197005..00000000 --- a/example/shorturl/api/internal/handler/shortenhandler.go +++ /dev/null @@ -1,29 +0,0 @@ -package handler - -import ( - "net/http" - - "shorturl/api/internal/logic" - "shorturl/api/internal/svc" - "shorturl/api/internal/types" - - "github.com/tal-tech/go-zero/rest/httpx" -) - -func shortenHandler(ctx *svc.ServiceContext) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req types.ShortenReq - if err := httpx.Parse(r, &req); err != nil { - httpx.Error(w, err) - return - } - - l := logic.NewShortenLogic(r.Context(), ctx) - resp, err := l.Shorten(req) - if err != nil { - httpx.Error(w, err) - } else { - httpx.WriteJson(w, http.StatusOK, resp) - } - } -} diff --git a/example/shorturl/api/internal/logic/expandlogic.go b/example/shorturl/api/internal/logic/expandlogic.go deleted file mode 100644 index 66291c4f..00000000 --- a/example/shorturl/api/internal/logic/expandlogic.go +++ /dev/null @@ -1,38 +0,0 @@ -package logic - -import ( - "context" - - "shorturl/api/internal/svc" - "shorturl/api/internal/types" - "shorturl/rpc/transform/transformer" - - "github.com/tal-tech/go-zero/core/logx" -) - -type ExpandLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewExpandLogic(ctx context.Context, svcCtx *svc.ServiceContext) ExpandLogic { - return ExpandLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *ExpandLogic) Expand(req types.ExpandReq) (*types.ExpandResp, error) { - resp, err := l.svcCtx.Transformer.Expand(l.ctx, &transformer.ExpandReq{ - Shorten: req.Shorten, - }) - if err != nil { - return nil, err - } - - return &types.ExpandResp{ - Url: resp.Url, - }, nil -} diff --git a/example/shorturl/api/internal/logic/shortenlogic.go b/example/shorturl/api/internal/logic/shortenlogic.go deleted file mode 100644 index 68519cb2..00000000 --- a/example/shorturl/api/internal/logic/shortenlogic.go +++ /dev/null @@ -1,38 +0,0 @@ -package logic - -import ( - "context" - - "shorturl/api/internal/svc" - "shorturl/api/internal/types" - "shorturl/rpc/transform/transformer" - - "github.com/tal-tech/go-zero/core/logx" -) - -type ShortenLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewShortenLogic(ctx context.Context, svcCtx *svc.ServiceContext) ShortenLogic { - return ShortenLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *ShortenLogic) Shorten(req types.ShortenReq) (*types.ShortenResp, error) { - resp, err := l.svcCtx.Transformer.Shorten(l.ctx, &transformer.ShortenReq{ - Url: req.Url, - }) - if err != nil { - return nil, err - } - - return &types.ShortenResp{ - Shorten: resp.Shorten, - }, nil -} diff --git a/example/shorturl/api/internal/svc/servicecontext.go b/example/shorturl/api/internal/svc/servicecontext.go deleted file mode 100644 index 62956805..00000000 --- a/example/shorturl/api/internal/svc/servicecontext.go +++ /dev/null @@ -1,20 +0,0 @@ -package svc - -import ( - "shorturl/api/internal/config" - "shorturl/rpc/transform/transformer" - - "github.com/tal-tech/go-zero/zrpc" -) - -type ServiceContext struct { - Config config.Config - Transformer transformer.Transformer -} - -func NewServiceContext(c config.Config) *ServiceContext { - return &ServiceContext{ - Config: c, - Transformer: transformer.NewTransformer(zrpc.MustNewClient(c.Transform)), - } -} diff --git a/example/shorturl/api/internal/types/types.go b/example/shorturl/api/internal/types/types.go deleted file mode 100644 index 3ae348c1..00000000 --- a/example/shorturl/api/internal/types/types.go +++ /dev/null @@ -1,18 +0,0 @@ -// Code generated by goctl. DO NOT EDIT. -package types - -type ExpandReq struct { - Shorten string `form:"shorten"` -} - -type ExpandResp struct { - Url string `json:"url"` -} - -type ShortenReq struct { - Url string `form:"url"` -} - -type ShortenResp struct { - Shorten string `json:"shorten"` -} diff --git a/example/shorturl/api/shorturl.api b/example/shorturl/api/shorturl.api deleted file mode 100644 index 7112f5f8..00000000 --- a/example/shorturl/api/shorturl.api +++ /dev/null @@ -1,33 +0,0 @@ - - -type ( - expandReq struct { - shorten string `form:"shorten"` - } - - expandResp struct { - url string `json:"url"` - } -) - -type ( - shortenReq struct { - url string `form:"url"` - } - - shortenResp struct { - shorten string `json:"shorten"` - } -) - -service shorturl-api { - @server( - handler: ShortenHandler - ) - get /shorten(shortenReq) returns(shortenResp) - - @server( - handler: ExpandHandler - ) - get /expand(expandReq) returns(expandResp) -} \ No newline at end of file diff --git a/example/shorturl/api/shorturl.go b/example/shorturl/api/shorturl.go deleted file mode 100644 index 9f857758..00000000 --- a/example/shorturl/api/shorturl.go +++ /dev/null @@ -1,28 +0,0 @@ -package main - -import ( - "flag" - - "shorturl/api/internal/config" - "shorturl/api/internal/handler" - "shorturl/api/internal/svc" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/rest" -) - -var configFile = flag.String("f", "etc/shorturl-api.yaml", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - - ctx := svc.NewServiceContext(c) - server := rest.MustNewServer(c.RestConf) - defer server.Stop() - - handler.RegisterHandlers(server, ctx) - server.Start() -} diff --git a/example/shorturl/go.mod b/example/shorturl/go.mod deleted file mode 100644 index fde96a5d..00000000 --- a/example/shorturl/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module shorturl - -go 1.15 - -require ( - github.com/golang/mock v1.4.3 - github.com/golang/protobuf v1.4.2 - github.com/tal-tech/go-zero v1.0.27 - golang.org/x/net v0.0.0-20200707034311-ab3426394381 - google.golang.org/grpc v1.29.1 -) diff --git a/example/shorturl/go.sum b/example/shorturl/go.sum deleted file mode 100644 index eb095b94..00000000 --- a/example/shorturl/go.sum +++ /dev/null @@ -1,431 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= -github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM= -github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6 h1:45bxf7AZMwWcqkLzDAQugVEwedisr5nRJ1r+7LYnv0U= -github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= -github.com/alicebob/miniredis v2.5.0+incompatible h1:yBHoLpsyjupjz3NL3MhKMVkR41j82Yjf3KFv7ApYzUI= -github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk= -github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bkaradzic/go-lz4 v1.0.0/go.mod h1:0YdlkowM3VswSROI7qDxhRvJ3sLhlFrRRwjwegp5jy4= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dsymonds/gotoc v0.0.0-20160928043926-5aebcfc91819 h1:9778zj477h/VauD8kHbOtbytW2KGQefJ/wUGE5w+mzw= -github.com/dsymonds/gotoc v0.0.0-20160928043926-5aebcfc91819/go.mod h1:MvzMVHq8BH2Ji/o8TGDocVA70byvLrAgFTxkEnmjO4Y= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4 h1:qk/FSDDxo05wdJH28W+p5yivv7LuLYLRXPPD8KQCtZs= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/emicklei/proto v1.9.0 h1:l0QiNT6Qs7Yj0Mb4X6dnWBQer4ebei2BFcgQLbGqUDc= -github.com/emicklei/proto v1.9.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-redis/redis v6.15.7+incompatible h1:3skhDh95XQMpnqeqNftPkQD9jL9e5e36z/1SUm6dy1U= -github.com/go-redis/redis v6.15.7+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= -github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-xorm/builder v0.3.4 h1:FxkeGB4Cggdw3tPwutLCpfjng2jugfkg6LDMrd/KsoY= -github.com/go-xorm/builder v0.3.4/go.mod h1:KxkQkNN1DpPKTedxXyTQcmH+rXfvk4LZ9SOOBoZBAxw= -github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:9wScpmSP5A3Bk8V3XHWUcJmYTh+ZnlHVyc+A4oZYS3Y= -github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.4.3 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= -github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= -github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gops v0.3.7/go.mod h1:bj0cwMmX1X4XIJFTjR99R5sCxNssNJ8HebFNvoQlmgY= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.14.3 h1:OCJlWkOUoTnl0neNGlf4fUm3TmbEtguw7vR+nGtnDjY= -github.com/grpc-ecosystem/grpc-gateway v1.14.3/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334 h1:VHgatEHNcBFEB7inlalqfNqw65aNkM1lGX2yt3NmbS8= -github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/iancoleman/strcase v0.1.2 h1:gnomlvw9tnV3ITTAxzKSgTF+8kFWcU/f+TgttpXGz1U= -github.com/iancoleman/strcase v0.1.2/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= -github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= -github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= -github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/keybase/go-ps v0.0.0-20161005175911-668c8856d999/go.mod h1:hY+WOq6m2FpbvyrI93sMaypsttvaIL5nhVR92dTMUcQ= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.3.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= -github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.5.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.5.1 h1:bdHYieyGlH+6OLEk2YQha8THib30KP0/yD0YH9m6xcA= -github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/tal-tech/go-zero v1.0.16 h1:oT7sOFftEUdD/XcXF0xEugX9yhnw4DcQkeMNFLi5KO8= -github.com/tal-tech/go-zero v1.0.16/go.mod h1:y2wBHTkxNJw79K9/wCSeDKzv2pCT6x45oOmXEsJdQK8= -github.com/tal-tech/go-zero v1.0.27 h1:QMIbaTxibMc/OsO5RTAuKZ8ndbl2dGN6pITQEtp2x/A= -github.com/tal-tech/go-zero v1.0.27/go.mod h1:JtNXlsh/CgeIHyQnt5C5M2IcSevW7V0NAnqO93TQgm8= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6 h1:lYIiVDtZnyTWlNwiAxLj0bbpTcx1BWCFhXjfsvmPdNc= -github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.4 h1:u7tSpNPPswAFymm8IehJhy4uJMlUuU/GmqSkvJ1InXA= -github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU= -github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryBNl9eKOeqQ58Y/Qpo3Q9QNxKHX5uzzQ= -github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb h1:ZkM6LRnq40pR1Ox0hTHlnpkcOTuFIDQpZ1IN8rKKhX0= -github.com/yuin/gopher-lua v0.0.0-20191220021717-ab39c6098bdb/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ= -go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= -go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698 h1:jWtjCJX1qxhHISBMLRztWwR+EXkI7MJAF2HjHAE/x/I= -go.etcd.io/etcd v0.0.0-20200402134248-51bdeb39e698/go.mod h1:YoUyTScD3Vcv2RBm3eGVOq7i1ULiz3OuXoQFWOirmAM= -go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/automaxprocs v1.3.0 h1:II28aZoGdaglS5vVNnspf28lnZpXScxtIozx1lAjdb0= -go.uber.org/automaxprocs v1.3.0/go.mod h1:9CWT6lKIep8U41DDaPiH6eFscnTyjfTANNQNx6LrIcA= -go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.14.1 h1:nYDKopTbvAPq/NrUVZwT15y2lpROBiLLyoRTbXOYWOo= -go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20171017063910-8dbc5d05d6ed/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1 h1:sIky/MyNRSHTrdxfsiUSS4WIAMvInbeXljJz+jDjeYE= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200410132612-ae9902aceb98 h1:ibc1eDGW5ajwA4qzFTj0WHlD9eofMe1gAre+A0a3Vhs= -golang.org/x/tools v0.0.0-20200410132612-ae9902aceb98/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f h1:ohwtWcCwB/fZUxh/vjazHorYmBnua3NmY3CAjwC7mEA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/goversion v1.0.0/go.mod h1:Eih9y/uIBS3ulggl7KNJ09xGSLcuNaLgmvvqa07sgfo= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/example/shorturl/rpc/transform/etc/transform.yaml b/example/shorturl/rpc/transform/etc/transform.yaml deleted file mode 100755 index ff855c7c..00000000 --- a/example/shorturl/rpc/transform/etc/transform.yaml +++ /dev/null @@ -1,12 +0,0 @@ -Name: transform.rpc -Log: - Mode: console -ListenOn: 127.0.0.1:8081 -Etcd: - Hosts: - - 127.0.0.1:2379 - Key: transform.rpc -DataSource: root:@tcp(localhost:3306)/gozero -Table: shorturl -Cache: - - Host: localhost:6379 diff --git a/example/shorturl/rpc/transform/internal/config/config.go b/example/shorturl/rpc/transform/internal/config/config.go deleted file mode 100755 index 6229ef8c..00000000 --- a/example/shorturl/rpc/transform/internal/config/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package config - -import ( - "github.com/tal-tech/go-zero/core/stores/cache" - "github.com/tal-tech/go-zero/zrpc" -) - -type Config struct { - zrpc.RpcServerConf - DataSource string - Table string - Cache cache.CacheConf -} diff --git a/example/shorturl/rpc/transform/internal/logic/expandlogic.go b/example/shorturl/rpc/transform/internal/logic/expandlogic.go deleted file mode 100755 index 528b4f81..00000000 --- a/example/shorturl/rpc/transform/internal/logic/expandlogic.go +++ /dev/null @@ -1,35 +0,0 @@ -package logic - -import ( - "context" - - "shorturl/rpc/transform/internal/svc" - transform "shorturl/rpc/transform/pb" - - "github.com/tal-tech/go-zero/core/logx" -) - -type ExpandLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewExpandLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ExpandLogic { - return &ExpandLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *ExpandLogic) Expand(in *transform.ExpandReq) (*transform.ExpandResp, error) { - res, err := l.svcCtx.Model.FindOne(in.Shorten) - if err != nil { - return nil, err - } - - return &transform.ExpandResp{ - Url: res.Url, - }, nil -} diff --git a/example/shorturl/rpc/transform/internal/logic/shortenlogic.go b/example/shorturl/rpc/transform/internal/logic/shortenlogic.go deleted file mode 100755 index 88f895fe..00000000 --- a/example/shorturl/rpc/transform/internal/logic/shortenlogic.go +++ /dev/null @@ -1,41 +0,0 @@ -package logic - -import ( - "context" - - "shorturl/rpc/transform/internal/svc" - "shorturl/rpc/transform/model" - transform "shorturl/rpc/transform/pb" - - "github.com/tal-tech/go-zero/core/hash" - "github.com/tal-tech/go-zero/core/logx" -) - -type ShortenLogic struct { - logx.Logger - ctx context.Context - svcCtx *svc.ServiceContext -} - -func NewShortenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ShortenLogic { - return &ShortenLogic{ - Logger: logx.WithContext(ctx), - ctx: ctx, - svcCtx: svcCtx, - } -} - -func (l *ShortenLogic) Shorten(in *transform.ShortenReq) (*transform.ShortenResp, error) { - key := hash.Md5Hex([]byte(in.Url))[:6] - _, err := l.svcCtx.Model.Insert(model.Shorturl{ - Shorten: key, - Url: in.Url, - }) - if err != nil { - return nil, err - } - - return &transform.ShortenResp{ - Shorten: key, - }, nil -} diff --git a/example/shorturl/rpc/transform/internal/server/transformerserver.go b/example/shorturl/rpc/transform/internal/server/transformerserver.go deleted file mode 100755 index c06e365a..00000000 --- a/example/shorturl/rpc/transform/internal/server/transformerserver.go +++ /dev/null @@ -1,32 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: transform.proto - -package server - -import ( - "context" - - "shorturl/rpc/transform/internal/logic" - "shorturl/rpc/transform/internal/svc" - transform "shorturl/rpc/transform/pb" -) - -type TransformerServer struct { - svcCtx *svc.ServiceContext -} - -func NewTransformerServer(svcCtx *svc.ServiceContext) *TransformerServer { - return &TransformerServer{ - svcCtx: svcCtx, - } -} - -func (s *TransformerServer) Expand(ctx context.Context, in *transform.ExpandReq) (*transform.ExpandResp, error) { - l := logic.NewExpandLogic(ctx, s.svcCtx) - return l.Expand(in) -} - -func (s *TransformerServer) Shorten(ctx context.Context, in *transform.ShortenReq) (*transform.ShortenResp, error) { - l := logic.NewShortenLogic(ctx, s.svcCtx) - return l.Shorten(in) -} diff --git a/example/shorturl/rpc/transform/internal/svc/servicecontext.go b/example/shorturl/rpc/transform/internal/svc/servicecontext.go deleted file mode 100755 index 995fba79..00000000 --- a/example/shorturl/rpc/transform/internal/svc/servicecontext.go +++ /dev/null @@ -1,20 +0,0 @@ -package svc - -import ( - "shorturl/rpc/transform/internal/config" - "shorturl/rpc/transform/model" - - "github.com/tal-tech/go-zero/core/stores/sqlx" -) - -type ServiceContext struct { - c config.Config - Model *model.ShorturlModel -} - -func NewServiceContext(c config.Config) *ServiceContext { - return &ServiceContext{ - c: c, - Model: model.NewShorturlModel(sqlx.NewMysql(c.DataSource), c.Cache, c.Table), - } -} diff --git a/example/shorturl/rpc/transform/model/shorturl.sql b/example/shorturl/rpc/transform/model/shorturl.sql deleted file mode 100644 index 8c50e9cf..00000000 --- a/example/shorturl/rpc/transform/model/shorturl.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE `shorturl` -( - `shorten` varchar(255) NOT NULL COMMENT 'shorten key', - `url` varchar(255) NOT NULL COMMENT 'original url', - PRIMARY KEY(`shorten`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/example/shorturl/rpc/transform/model/shorturlmodel.go b/example/shorturl/rpc/transform/model/shorturlmodel.go deleted file mode 100755 index d20f8366..00000000 --- a/example/shorturl/rpc/transform/model/shorturlmodel.go +++ /dev/null @@ -1,86 +0,0 @@ -package model - -import ( - "database/sql" - "fmt" - "strings" - - "github.com/tal-tech/go-zero/core/stores/cache" - "github.com/tal-tech/go-zero/core/stores/sqlc" - "github.com/tal-tech/go-zero/core/stores/sqlx" - "github.com/tal-tech/go-zero/core/stringx" - "github.com/tal-tech/go-zero/tools/goctl/model/sql/builderx" -) - -var ( - shorturlFieldNames = builderx.FieldNames(&Shorturl{}) - shorturlRows = strings.Join(shorturlFieldNames, ",") - shorturlRowsExpectAutoSet = strings.Join(stringx.Remove(shorturlFieldNames, "create_time", "update_time"), ",") - shorturlRowsWithPlaceHolder = strings.Join(stringx.Remove(shorturlFieldNames, "shorten", "create_time", "update_time"), "=?,") + "=?" - - cacheShorturlShortenPrefix = "cache#Shorturl#shorten#" -) - -type ( - ShorturlModel struct { - sqlc.CachedConn - table string - } - - Shorturl struct { - Shorten string `db:"shorten"` // shorten key - Url string `db:"url"` // original url - } -) - -func NewShorturlModel(conn sqlx.SqlConn, c cache.CacheConf, table string) *ShorturlModel { - return &ShorturlModel{ - CachedConn: sqlc.NewConn(conn, c), - table: table, - } -} - -func (m *ShorturlModel) Insert(data Shorturl) (sql.Result, error) { - query := `insert into ` + m.table + ` (` + shorturlRowsExpectAutoSet + `) values (?, ?)` - return m.ExecNoCache(query, data.Shorten, data.Url) -} - -func (m *ShorturlModel) FindOne(shorten string) (*Shorturl, error) { - shorturlShortenKey := fmt.Sprintf("%s%v", cacheShorturlShortenPrefix, shorten) - var resp Shorturl - err := m.QueryRow(&resp, shorturlShortenKey, func(conn sqlx.SqlConn, v interface{}) error { - query := `select ` + shorturlRows + ` from ` + m.table + ` where shorten = ? limit 1` - return conn.QueryRow(v, query, shorten) - }) - switch err { - case nil: - return &resp, nil - case sqlc.ErrNotFound: - return nil, ErrNotFound - default: - return nil, err - } -} - -func (m *ShorturlModel) Update(data Shorturl) error { - shorturlShortenKey := fmt.Sprintf("%s%v", cacheShorturlShortenPrefix, data.Shorten) - _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) { - query := `update ` + m.table + ` set ` + shorturlRowsWithPlaceHolder + ` where shorten = ?` - return conn.Exec(query, data.Url, data.Shorten) - }, shorturlShortenKey) - return err -} - -func (m *ShorturlModel) Delete(shorten string) error { - _, err := m.FindOne(shorten) - if err != nil { - return err - } - - shorturlShortenKey := fmt.Sprintf("%s%v", cacheShorturlShortenPrefix, shorten) - _, err = m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) { - query := `delete from ` + m.table + ` where shorten = ?` - return conn.Exec(query, shorten) - }, shorturlShortenKey) - return err -} diff --git a/example/shorturl/rpc/transform/model/vars.go b/example/shorturl/rpc/transform/model/vars.go deleted file mode 100755 index b7a5e88f..00000000 --- a/example/shorturl/rpc/transform/model/vars.go +++ /dev/null @@ -1,5 +0,0 @@ -package model - -import "github.com/tal-tech/go-zero/core/stores/sqlx" - -var ErrNotFound = sqlx.ErrNotFound diff --git a/example/shorturl/rpc/transform/pb/transform.pb.go b/example/shorturl/rpc/transform/pb/transform.pb.go deleted file mode 100644 index f9b5edf1..00000000 --- a/example/shorturl/rpc/transform/pb/transform.pb.go +++ /dev/null @@ -1,230 +0,0 @@ -// Code generated by protoc-gen-go. -// source: transform.proto -// DO NOT EDIT! - -/* -Package transform is a generated protocol buffer package. - -It is generated from these files: - transform.proto - -It has these top-level messages: - ExpandReq - ExpandResp - ShortenReq - ShortenResp -*/ -package transform - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -import ( - context "golang.org/x/net/context" - grpc "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type ExpandReq struct { - Shorten string `protobuf:"bytes,1,opt,name=shorten" json:"shorten,omitempty"` -} - -func (m *ExpandReq) Reset() { *m = ExpandReq{} } -func (m *ExpandReq) String() string { return proto.CompactTextString(m) } -func (*ExpandReq) ProtoMessage() {} -func (*ExpandReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *ExpandReq) GetShorten() string { - if m != nil { - return m.Shorten - } - return "" -} - -type ExpandResp struct { - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` -} - -func (m *ExpandResp) Reset() { *m = ExpandResp{} } -func (m *ExpandResp) String() string { return proto.CompactTextString(m) } -func (*ExpandResp) ProtoMessage() {} -func (*ExpandResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ExpandResp) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -type ShortenReq struct { - Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` -} - -func (m *ShortenReq) Reset() { *m = ShortenReq{} } -func (m *ShortenReq) String() string { return proto.CompactTextString(m) } -func (*ShortenReq) ProtoMessage() {} -func (*ShortenReq) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -func (m *ShortenReq) GetUrl() string { - if m != nil { - return m.Url - } - return "" -} - -type ShortenResp struct { - Shorten string `protobuf:"bytes,1,opt,name=shorten" json:"shorten,omitempty"` -} - -func (m *ShortenResp) Reset() { *m = ShortenResp{} } -func (m *ShortenResp) String() string { return proto.CompactTextString(m) } -func (*ShortenResp) ProtoMessage() {} -func (*ShortenResp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *ShortenResp) GetShorten() string { - if m != nil { - return m.Shorten - } - return "" -} - -func init() { - proto.RegisterType((*ExpandReq)(nil), "transform.expandReq") - proto.RegisterType((*ExpandResp)(nil), "transform.expandResp") - proto.RegisterType((*ShortenReq)(nil), "transform.shortenReq") - proto.RegisterType((*ShortenResp)(nil), "transform.shortenResp") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Transformer service - -type TransformerClient interface { - Expand(ctx context.Context, in *ExpandReq, opts ...grpc.CallOption) (*ExpandResp, error) - Shorten(ctx context.Context, in *ShortenReq, opts ...grpc.CallOption) (*ShortenResp, error) -} - -type transformerClient struct { - cc *grpc.ClientConn -} - -func NewTransformerClient(cc *grpc.ClientConn) TransformerClient { - return &transformerClient{cc} -} - -func (c *transformerClient) Expand(ctx context.Context, in *ExpandReq, opts ...grpc.CallOption) (*ExpandResp, error) { - out := new(ExpandResp) - err := grpc.Invoke(ctx, "/transform.transformer/expand", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *transformerClient) Shorten(ctx context.Context, in *ShortenReq, opts ...grpc.CallOption) (*ShortenResp, error) { - out := new(ShortenResp) - err := grpc.Invoke(ctx, "/transform.transformer/shorten", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Transformer service - -type TransformerServer interface { - Expand(context.Context, *ExpandReq) (*ExpandResp, error) - Shorten(context.Context, *ShortenReq) (*ShortenResp, error) -} - -func RegisterTransformerServer(s *grpc.Server, srv TransformerServer) { - s.RegisterService(&_Transformer_serviceDesc, srv) -} - -func _Transformer_Expand_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExpandReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TransformerServer).Expand(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/transform.transformer/Expand", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TransformerServer).Expand(ctx, req.(*ExpandReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _Transformer_Shorten_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ShortenReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(TransformerServer).Shorten(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/transform.transformer/Shorten", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(TransformerServer).Shorten(ctx, req.(*ShortenReq)) - } - return interceptor(ctx, in, info, handler) -} - -var _Transformer_serviceDesc = grpc.ServiceDesc{ - ServiceName: "transform.transformer", - HandlerType: (*TransformerServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "expand", - Handler: _Transformer_Expand_Handler, - }, - { - MethodName: "shorten", - Handler: _Transformer_Shorten_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "transform.proto", -} - -func init() { proto.RegisterFile("transform.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 163 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2f, 0x29, 0x4a, 0xcc, - 0x2b, 0x4e, 0xcb, 0x2f, 0xca, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x84, 0x0b, 0x28, - 0xa9, 0x72, 0x71, 0xa6, 0x56, 0x14, 0x24, 0xe6, 0xa5, 0x04, 0xa5, 0x16, 0x0a, 0x49, 0x70, 0xb1, - 0x17, 0x67, 0xe4, 0x17, 0x95, 0xa4, 0xe6, 0x49, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0xc1, 0xb8, - 0x4a, 0x72, 0x5c, 0x5c, 0x30, 0x65, 0xc5, 0x05, 0x42, 0x02, 0x5c, 0xcc, 0xa5, 0x45, 0x39, 0x50, - 0x35, 0x20, 0x26, 0x48, 0x1e, 0xaa, 0x14, 0x64, 0x0e, 0xa6, 0xbc, 0x3a, 0x17, 0x37, 0x5c, 0xbe, - 0xb8, 0x00, 0xb7, 0x45, 0x46, 0x75, 0x5c, 0xdc, 0x70, 0xc7, 0xa5, 0x16, 0x09, 0x99, 0x72, 0xb1, - 0x41, 0xec, 0x15, 0x12, 0xd1, 0x43, 0xf8, 0x02, 0xee, 0x62, 0x29, 0x51, 0x2c, 0xa2, 0xc5, 0x05, - 0x42, 0x16, 0x70, 0xf3, 0x85, 0x90, 0x55, 0x20, 0x9c, 0x28, 0x25, 0x86, 0x4d, 0xb8, 0xb8, 0x20, - 0x89, 0x0d, 0x1c, 0x42, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x27, 0x78, 0x05, 0x34, - 0x01, 0x00, 0x00, -} diff --git a/example/shorturl/rpc/transform/transform.go b/example/shorturl/rpc/transform/transform.go deleted file mode 100755 index e3969992..00000000 --- a/example/shorturl/rpc/transform/transform.go +++ /dev/null @@ -1,40 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: transform.proto - -package main - -import ( - "flag" - "fmt" - "log" - - "shorturl/rpc/transform/internal/config" - "shorturl/rpc/transform/internal/server" - "shorturl/rpc/transform/internal/svc" - transform "shorturl/rpc/transform/pb" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/transform.yaml", "the config file") - -func main() { - flag.Parse() - - var c config.Config - conf.MustLoad(*configFile, &c) - ctx := svc.NewServiceContext(c) - transformerSrv := server.NewTransformerServer(ctx) - - s, err := zrpc.NewServer(c.RpcServerConf, func(grpcServer *grpc.Server) { - transform.RegisterTransformerServer(grpcServer, transformerSrv) - }) - if err != nil { - log.Fatal(err) - } - - fmt.Printf("Starting rpc server at %s...\n", c.ListenOn) - s.Start() -} diff --git a/example/shorturl/rpc/transform/transform.proto b/example/shorturl/rpc/transform/transform.proto deleted file mode 100644 index 58ee66f1..00000000 --- a/example/shorturl/rpc/transform/transform.proto +++ /dev/null @@ -1,24 +0,0 @@ -syntax = "proto3"; - -package transform; - -message expandReq { - string shorten = 1; -} - -message expandResp { - string url = 1; -} - -message shortenReq { - string url = 1; -} - -message shortenResp { - string shorten = 1; -} - -service transformer { - rpc expand(expandReq) returns(expandResp); - rpc shorten(shortenReq) returns(shortenResp); -} diff --git a/example/shorturl/rpc/transform/transformer/transformer.go b/example/shorturl/rpc/transform/transformer/transformer.go deleted file mode 100755 index a47ec0ba..00000000 --- a/example/shorturl/rpc/transform/transformer/transformer.go +++ /dev/null @@ -1,96 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: transform.proto - -//go:generate mockgen -destination ./transformer_mock.go -package transformer -source $GOFILE - -package transformer - -import ( - "context" - - transform "shorturl/rpc/transform/pb" - - "github.com/tal-tech/go-zero/core/jsonx" - "github.com/tal-tech/go-zero/zrpc" -) - -type ( - Transformer interface { - Expand(ctx context.Context, in *ExpandReq) (*ExpandResp, error) - Shorten(ctx context.Context, in *ShortenReq) (*ShortenResp, error) - } - - defaultTransformer struct { - cli zrpc.Client - } -) - -func NewTransformer(cli zrpc.Client) Transformer { - return &defaultTransformer{ - cli: cli, - } -} - -func (m *defaultTransformer) Expand(ctx context.Context, in *ExpandReq) (*ExpandResp, error) { - var request transform.ExpandReq - bts, err := jsonx.Marshal(in) - if err != nil { - return nil, errJsonConvert - } - - err = jsonx.Unmarshal(bts, &request) - if err != nil { - return nil, errJsonConvert - } - - client := transform.NewTransformerClient(m.cli.Conn()) - resp, err := client.Expand(ctx, &request) - if err != nil { - return nil, err - } - - var ret ExpandResp - bts, err = jsonx.Marshal(resp) - if err != nil { - return nil, errJsonConvert - } - - err = jsonx.Unmarshal(bts, &ret) - if err != nil { - return nil, errJsonConvert - } - - return &ret, nil -} - -func (m *defaultTransformer) Shorten(ctx context.Context, in *ShortenReq) (*ShortenResp, error) { - var request transform.ShortenReq - bts, err := jsonx.Marshal(in) - if err != nil { - return nil, errJsonConvert - } - - err = jsonx.Unmarshal(bts, &request) - if err != nil { - return nil, errJsonConvert - } - - client := transform.NewTransformerClient(m.cli.Conn()) - resp, err := client.Shorten(ctx, &request) - if err != nil { - return nil, err - } - - var ret ShortenResp - bts, err = jsonx.Marshal(resp) - if err != nil { - return nil, errJsonConvert - } - - err = jsonx.Unmarshal(bts, &ret) - if err != nil { - return nil, errJsonConvert - } - - return &ret, nil -} diff --git a/example/shorturl/rpc/transform/transformer/transformer_mock.go b/example/shorturl/rpc/transform/transformer/transformer_mock.go deleted file mode 100644 index 48e18d06..00000000 --- a/example/shorturl/rpc/transform/transformer/transformer_mock.go +++ /dev/null @@ -1,64 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: transformer.go - -// Package transformer is a generated GoMock package. -package transformer - -import ( - context "context" - gomock "github.com/golang/mock/gomock" - reflect "reflect" -) - -// MockTransformer is a mock of Transformer interface -type MockTransformer struct { - ctrl *gomock.Controller - recorder *MockTransformerMockRecorder -} - -// MockTransformerMockRecorder is the mock recorder for MockTransformer -type MockTransformerMockRecorder struct { - mock *MockTransformer -} - -// NewMockTransformer creates a new mock instance -func NewMockTransformer(ctrl *gomock.Controller) *MockTransformer { - mock := &MockTransformer{ctrl: ctrl} - mock.recorder = &MockTransformerMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use -func (m *MockTransformer) EXPECT() *MockTransformerMockRecorder { - return m.recorder -} - -// Expand mocks base method -func (m *MockTransformer) Expand(ctx context.Context, in *ExpandReq) (*ExpandResp, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Expand", ctx, in) - ret0, _ := ret[0].(*ExpandResp) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// Expand indicates an expected call of Expand -func (mr *MockTransformerMockRecorder) Expand(ctx, in interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Expand", reflect.TypeOf((*MockTransformer)(nil).Expand), ctx, in) -} - -// Shorten mocks base method -func (m *MockTransformer) Shorten(ctx context.Context, in *ShortenReq) (*ShortenResp, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Shorten", ctx, in) - ret0, _ := ret[0].(*ShortenResp) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// Shorten indicates an expected call of Shorten -func (mr *MockTransformerMockRecorder) Shorten(ctx, in interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Shorten", reflect.TypeOf((*MockTransformer)(nil).Shorten), ctx, in) -} diff --git a/example/shorturl/rpc/transform/transformer/types.go b/example/shorturl/rpc/transform/transformer/types.go deleted file mode 100755 index e8052e17..00000000 --- a/example/shorturl/rpc/transform/transformer/types.go +++ /dev/null @@ -1,26 +0,0 @@ -// Code generated by goctl. DO NOT EDIT! -// Source: transform.proto - -package transformer - -import "errors" - -var errJsonConvert = errors.New("json convert error") - -type ( - ExpandReq struct { - Shorten string `json:"shorten,omitempty"` - } - - ExpandResp struct { - Url string `json:"url,omitempty"` - } - - ShortenReq struct { - Url string `json:"url,omitempty"` - } - - ShortenResp struct { - Shorten string `json:"shorten,omitempty"` - } -) diff --git a/example/signal/main.go b/example/signal/main.go deleted file mode 100644 index 2b4518f0..00000000 --- a/example/signal/main.go +++ /dev/null @@ -1,70 +0,0 @@ -package main - -import ( - "fmt" - "os" - "os/signal" - "path" - "runtime/pprof" - "syscall" - "time" - - "github.com/tal-tech/go-zero/core/cmdline" - "github.com/tal-tech/go-zero/core/logx" -) - -const ( - goroutineProfile = "goroutine" - debugLevel = 2 - timeFormat = "0102150405" -) - -func init() { - go func() { - // https://golang.org/pkg/os/signal/#Notify - signals := make(chan os.Signal, 1) - signal.Notify(signals, syscall.SIGUSR1, syscall.SIGTERM) - - for { - v := <-signals - switch v { - case syscall.SIGUSR1: - dumpGoroutines() - case syscall.SIGTERM: - gracefulStop(signals) - default: - logx.Error("Got unregistered signal:", v) - } - } - }() -} - -func dumpGoroutines() { - command := path.Base(os.Args[0]) - pid := syscall.Getpid() - dumpFile := path.Join(os.TempDir(), fmt.Sprintf("%s-%d-goroutines-%s.dump", - command, pid, time.Now().Format(timeFormat))) - - logx.Infof("Got dump goroutine signal, printing goroutine profile to %s", dumpFile) - - if f, err := os.Create(dumpFile); err != nil { - logx.Errorf("Failed to dump goroutine profile, error: %v", err) - } else { - defer f.Close() - pprof.Lookup(goroutineProfile).WriteTo(f, debugLevel) - } -} - -func gracefulStop(signals chan os.Signal) { - signal.Stop(signals) - - logx.Info("Got signal SIGTERM, shutting down...") - - time.Sleep(time.Second * 5) - logx.Infof("Still alive after %v, going to force kill the process...", time.Second*5) - syscall.Kill(syscall.Getpid(), syscall.SIGTERM) -} - -func main() { - cmdline.EnterToContinue() -} diff --git a/example/siphash/sharding.go b/example/siphash/sharding.go deleted file mode 100644 index 2e69e321..00000000 --- a/example/siphash/sharding.go +++ /dev/null @@ -1,8 +0,0 @@ -package sharding - -import "github.com/dchest/siphash" - -func sharding(token string) uint64 { - sum := siphash.Hash(0, 0, []byte(token)) - return sum % 3 -} diff --git a/example/siphash/sharding_test.go b/example/siphash/sharding_test.go deleted file mode 100644 index 1816992c..00000000 --- a/example/siphash/sharding_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package sharding - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestSiphash64(t *testing.T) { - users := [][]string{ - { - "5a4b7347200a6e0c185d6101", - "5b74c444acdd315c509b78fe", - "5c03e009a496130c2d9bc970", - "5c6ab5a74867f267d560dd9f", - "5b80a2b28be129507d176284", - "5a4b7347200a6e0c185d6101", - "5b74c444acdd315c509b78fe", - "5c03e009a496130c2d9bc970", - "5c6ab5a74867f267d560dd9f", - "5b80a2b28be129507d176284", - "5b8d157aacdd313508a892f2", - "5bf942b4a496130c2d9b7378", - "5c7fc28cd065f17f9edd3698", - "5bf40bd22c64fc5ea63a5174", - }, - { - "5b839929acdd31271f03ded5", - "5bc9e28e2c64fc1a69a28e36", - "5b935d96a49613677b90b589", - "5b97acb2a49613677b910f47", - "5c902f3aff5be73689b4b522", - }, - { - "5cdbee881a722f0001b9ce99", - "", - "5caca58f53add40001c20aaa", - "5beee68520c25041544e353a", - "5b0b957d0179b05769cbecde", - "5bbf45940ab7b7589aa1025f", - "5ac63009200a6e79cadf5175", - "5c94ed250ab7b7386c294662", - "5b9f8ccb2c64fc5832e47d3f", - }, - } - - for shard, ids := range users { - for _, id := range ids { - assert.Equal(t, uint64(shard), sharding(id)) - } - } -} diff --git a/example/stat/Dockerfile b/example/stat/Dockerfile deleted file mode 100644 index 2aefe97f..00000000 --- a/example/stat/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM alpine - -RUN mkdir /app -COPY cpu /app/ - -WORKDIR /app - -CMD ["/app/cpu"] diff --git a/example/stat/main.go b/example/stat/main.go deleted file mode 100644 index 8b869f88..00000000 --- a/example/stat/main.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "fmt" - "runtime" - "time" - - "github.com/tal-tech/go-zero/core/stat" -) - -func main() { - fmt.Println(runtime.NumCPU()) - for i := 0; i < runtime.NumCPU()+10; i++ { - go func() { - for { - select { - default: - time.Sleep(time.Microsecond) - } - } - }() - } - - ticker := time.NewTicker(time.Second * 5) - defer ticker.Stop() - - for range ticker.C { - percent := stat.CpuUsage() - fmt.Println("cpu:", percent) - } -} diff --git a/example/stringx/filter/filter.go b/example/stringx/filter/filter.go deleted file mode 100644 index 9d4d6647..00000000 --- a/example/stringx/filter/filter.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/tal-tech/go-zero/core/stringx" -) - -func main() { - filter := stringx.NewTrie([]string{ - "AV演员", - "苍井空", - "AV", - "日本AV女优", - "AV演员色情", - }, stringx.WithMask('?')) - safe, keywords, found := filter.Filter("日本AV演员兼电视、电影演员。苍井空AV女优是xx出道, 日本AV女优们最精彩的表演是AV演员色情表演") - fmt.Println(safe) - fmt.Println(keywords) - fmt.Println(found) -} diff --git a/example/stringx/replace/replace.go b/example/stringx/replace/replace.go deleted file mode 100644 index 582890d9..00000000 --- a/example/stringx/replace/replace.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/tal-tech/go-zero/core/stringx" -) - -func main() { - replacer := stringx.NewReplacer(map[string]string{ - "日本": "法国", - "日本的首都": "东京", - "东京": "日本的首都", - }) - fmt.Println(replacer.Replace("日本的首都是东京")) -} diff --git a/example/syncx/sharedcalls/main.go b/example/syncx/sharedcalls/main.go deleted file mode 100644 index 84abb788..00000000 --- a/example/syncx/sharedcalls/main.go +++ /dev/null @@ -1,34 +0,0 @@ -package main - -import ( - "fmt" - "sync" - "time" - - "github.com/tal-tech/go-zero/core/stringx" - "github.com/tal-tech/go-zero/core/syncx" -) - -func main() { - const round = 5 - var wg sync.WaitGroup - barrier := syncx.NewSharedCalls() - - wg.Add(round) - for i := 0; i < round; i++ { - go func() { - defer wg.Done() - val, err := barrier.Do("once", func() (interface{}, error) { - time.Sleep(time.Second) - return stringx.RandId(), nil - }) - if err != nil { - fmt.Println(err) - } else { - fmt.Println(val) - } - }() - } - - wg.Wait() -} diff --git a/example/timingwheel/leak/leak.go b/example/timingwheel/leak/leak.go deleted file mode 100644 index 7fcd6ccf..00000000 --- a/example/timingwheel/leak/leak.go +++ /dev/null @@ -1,60 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "runtime" - "strconv" - "time" - - "github.com/tal-tech/go-zero/core/cmdline" - "github.com/tal-tech/go-zero/core/collection" - "github.com/tal-tech/go-zero/core/proc" -) - -const numItems = 1000000 - -var round = flag.Int("r", 3, "rounds to go") - -func main() { - defer proc.StartProfile().Stop() - - flag.Parse() - - fmt.Println(getMemUsage()) - for i := 0; i < *round; i++ { - do() - } - cmdline.EnterToContinue() -} - -func do() { - tw, err := collection.NewTimingWheel(time.Second, 100, execute) - if err != nil { - log.Fatal(err) - } - - for i := 0; i < numItems; i++ { - key := strconv.Itoa(i) - tw.SetTimer(key, key, time.Second*5) - } - - fmt.Println(getMemUsage()) -} - -func execute(k, v interface{}) { -} - -func getMemUsage() string { - runtime.GC() - - var m runtime.MemStats - runtime.ReadMemStats(&m) - // For more info, see: https://golang.org/pkg/runtime/#MemStats - return fmt.Sprintf("Heap Alloc = %dMiB", toMiB(m.HeapAlloc)) -} - -func toMiB(b uint64) uint64 { - return b / 1024 / 1024 -} diff --git a/example/timingwheel/main.go b/example/timingwheel/main.go deleted file mode 100644 index a800b784..00000000 --- a/example/timingwheel/main.go +++ /dev/null @@ -1,78 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "runtime" - "sync/atomic" - "time" - - "github.com/tal-tech/go-zero/core/collection" -) - -const interval = time.Minute - -var traditional = flag.Bool("traditional", false, "enable traditional mode") - -func main() { - flag.Parse() - - go func() { - ticker := time.NewTicker(time.Second * 5) - defer ticker.Stop() - - for { - select { - case <-ticker.C: - fmt.Printf("goroutines: %d\n", runtime.NumGoroutine()) - } - } - }() - - if *traditional { - traditionalMode() - } else { - timingWheelMode() - } -} - -func timingWheelMode() { - var count uint64 - tw, err := collection.NewTimingWheel(time.Second, 600, func(key, value interface{}) { - job(&count) - }) - if err != nil { - log.Fatal(err) - } - - defer tw.Stop() - for i := 0; ; i++ { - tw.SetTimer(i, i, interval) - time.Sleep(time.Millisecond) - } -} - -func traditionalMode() { - var count uint64 - for { - go func() { - timer := time.NewTimer(interval) - defer timer.Stop() - - select { - case <-timer.C: - job(&count) - } - }() - - time.Sleep(time.Millisecond) - } -} - -func job(count *uint64) { - v := atomic.AddUint64(count, 1) - if v%1000 == 0 { - fmt.Println(v) - } -} diff --git a/example/tracing/edge/config.json b/example/tracing/edge/config.json deleted file mode 100644 index 3f5010a1..00000000 --- a/example/tracing/edge/config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Name": "edge-api", - "Host": "0.0.0.0", - "Port": 3456, - "Portal": { - "Etcd": { - "Hosts": [ - "localhost:2379" - ], - "Key": "portal" - } - } -} diff --git a/example/tracing/edge/main.go b/example/tracing/edge/main.go deleted file mode 100644 index 9cdcedad..00000000 --- a/example/tracing/edge/main.go +++ /dev/null @@ -1,61 +0,0 @@ -package main - -import ( - "flag" - "net/http" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/core/logx" - "github.com/tal-tech/go-zero/core/service" - "github.com/tal-tech/go-zero/example/tracing/remote/portal" - "github.com/tal-tech/go-zero/rest" - "github.com/tal-tech/go-zero/rest/httpx" - "github.com/tal-tech/go-zero/zrpc" -) - -var ( - configFile = flag.String("f", "config.json", "the config file") - client zrpc.Client -) - -type Config struct { - rest.RestConf - Portal zrpc.RpcClientConf -} - -func handle(w http.ResponseWriter, r *http.Request) { - conn := client.Conn() - greet := portal.NewPortalClient(conn) - resp, err := greet.Portal(r.Context(), &portal.PortalRequest{ - Name: "kevin", - }) - if err != nil { - httpx.WriteJson(w, http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError)) - } else { - httpx.OkJson(w, resp.Response) - } -} - -func main() { - flag.Parse() - - var c Config - conf.MustLoad(*configFile, &c) - client = zrpc.MustNewClient(c.Portal) - engine := rest.MustNewServer(rest.RestConf{ - ServiceConf: service.ServiceConf{ - Log: logx.LogConf{ - Mode: "console", - }, - }, - Port: c.Port, - }) - defer engine.Stop() - - engine.AddRoute(rest.Route{ - Method: http.MethodGet, - Path: "/", - Handler: handle, - }) - engine.Start() -} diff --git a/example/tracing/portal/etc/config.json b/example/tracing/portal/etc/config.json deleted file mode 100644 index 201470e4..00000000 --- a/example/tracing/portal/etc/config.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "Name": "portal.rpc", - "ListenOn": "localhost:3456", - "Etcd": { - "Hosts": [ - "localhost:2379" - ], - "Key": "portal" - }, - "UserRpc": { - "Etcd": { - "Hosts": [ - "localhost:2379" - ], - "Key": "user" - } - }, - "Timeout": 500 -} diff --git a/example/tracing/portal/server.go b/example/tracing/portal/server.go deleted file mode 100644 index bbdffb88..00000000 --- a/example/tracing/portal/server.go +++ /dev/null @@ -1,61 +0,0 @@ -package main - -import ( - "context" - "flag" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/tracing/remote/portal" - "github.com/tal-tech/go-zero/example/tracing/remote/user" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/config.json", "the config file") - -type ( - Config struct { - zrpc.RpcServerConf - UserRpc zrpc.RpcClientConf - } - - PortalServer struct { - userRpc zrpc.Client - } -) - -func NewPortalServer(client zrpc.Client) *PortalServer { - return &PortalServer{ - userRpc: client, - } -} - -func (gs *PortalServer) Portal(ctx context.Context, req *portal.PortalRequest) (*portal.PortalResponse, error) { - conn := gs.userRpc.Conn() - greet := user.NewUserClient(conn) - resp, err := greet.GetGrade(ctx, &user.UserRequest{ - Name: req.Name, - }) - if err != nil { - return &portal.PortalResponse{ - Response: err.Error(), - }, nil - } else { - return &portal.PortalResponse{ - Response: resp.Response, - }, nil - } -} - -func main() { - flag.Parse() - - var c Config - conf.MustLoad(*configFile, &c) - - client := zrpc.MustNewClient(c.UserRpc) - server := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) { - portal.RegisterPortalServer(grpcServer, NewPortalServer(client)) - }) - server.Start() -} diff --git a/example/tracing/remote/portal/portal.pb.go b/example/tracing/remote/portal/portal.pb.go deleted file mode 100644 index 4578e6fb..00000000 --- a/example/tracing/remote/portal/portal.pb.go +++ /dev/null @@ -1,158 +0,0 @@ -// Code generated by protoc-gen-go. -// source: portal.proto -// DO NOT EDIT! - -/* -Package portal is a generated protocol buffer package. - -It is generated from these files: - portal.proto - -It has these top-level messages: - PortalRequest - PortalResponse -*/ -package portal - -import ( - "fmt" - "math" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type PortalRequest struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *PortalRequest) Reset() { *m = PortalRequest{} } -func (m *PortalRequest) String() string { return proto.CompactTextString(m) } -func (*PortalRequest) ProtoMessage() {} -func (*PortalRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *PortalRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type PortalResponse struct { - Response string `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"` -} - -func (m *PortalResponse) Reset() { *m = PortalResponse{} } -func (m *PortalResponse) String() string { return proto.CompactTextString(m) } -func (*PortalResponse) ProtoMessage() {} -func (*PortalResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *PortalResponse) GetResponse() string { - if m != nil { - return m.Response - } - return "" -} - -func init() { - proto.RegisterType((*PortalRequest)(nil), "portal.PortalRequest") - proto.RegisterType((*PortalResponse)(nil), "portal.PortalResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for Portal service - -type PortalClient interface { - Portal(ctx context.Context, in *PortalRequest, opts ...grpc.CallOption) (*PortalResponse, error) -} - -type portalClient struct { - cc *grpc.ClientConn -} - -func NewPortalClient(cc *grpc.ClientConn) PortalClient { - return &portalClient{cc} -} - -func (c *portalClient) Portal(ctx context.Context, in *PortalRequest, opts ...grpc.CallOption) (*PortalResponse, error) { - out := new(PortalResponse) - err := grpc.Invoke(ctx, "/portal.Portal/Portal", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for Portal service - -type PortalServer interface { - Portal(context.Context, *PortalRequest) (*PortalResponse, error) -} - -func RegisterPortalServer(s *grpc.Server, srv PortalServer) { - s.RegisterService(&_Portal_serviceDesc, srv) -} - -func _Portal_Portal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PortalRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PortalServer).Portal(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/portal.Portal/Portal", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PortalServer).Portal(ctx, req.(*PortalRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Portal_serviceDesc = grpc.ServiceDesc{ - ServiceName: "portal.Portal", - HandlerType: (*PortalServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Portal", - Handler: _Portal_Portal_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "portal.proto", -} - -func init() { proto.RegisterFile("portal.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 122 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0xc8, 0x2f, 0x2a, - 0x49, 0xcc, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0xf0, 0x94, 0x94, 0xb9, 0x78, - 0x03, 0xc0, 0xac, 0xa0, 0xd4, 0xc2, 0xd2, 0xd4, 0xe2, 0x12, 0x21, 0x21, 0x2e, 0x96, 0xbc, 0xc4, - 0xdc, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d, 0xce, 0x20, 0x30, 0x5b, 0x49, 0x87, 0x8b, 0x0f, 0xa6, - 0xa8, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, 0x48, 0x8a, 0x8b, 0xa3, 0x08, 0xca, 0x86, 0xaa, 0x84, - 0xf3, 0x8d, 0x1c, 0xb9, 0xd8, 0x20, 0xaa, 0x85, 0xcc, 0xe1, 0x2c, 0x51, 0x3d, 0xa8, 0xed, 0x28, - 0x96, 0x49, 0x89, 0xa1, 0x0b, 0x43, 0x8c, 0x48, 0x62, 0x03, 0x3b, 0xd2, 0x18, 0x10, 0x00, 0x00, - 0xff, 0xff, 0xce, 0x05, 0x16, 0xd0, 0xb4, 0x00, 0x00, 0x00, -} diff --git a/example/tracing/remote/portal/portal.proto b/example/tracing/remote/portal/portal.proto deleted file mode 100644 index 82cdee3d..00000000 --- a/example/tracing/remote/portal/portal.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package portal; - -message PortalRequest { - string name = 1; -} - -message PortalResponse { - string response = 1; -} - -service Portal { - rpc Portal(PortalRequest) returns (PortalResponse); -} diff --git a/example/tracing/remote/user/user.pb.go b/example/tracing/remote/user/user.pb.go deleted file mode 100644 index 7ee24a57..00000000 --- a/example/tracing/remote/user/user.pb.go +++ /dev/null @@ -1,159 +0,0 @@ -// Code generated by protoc-gen-go. -// source: user.proto -// DO NOT EDIT! - -/* -Package user is a generated protocol buffer package. - -It is generated from these files: - user.proto - -It has these top-level messages: - UserRequest - UserResponse -*/ -package user - -import ( - "fmt" - "math" - - "github.com/golang/protobuf/proto" - "golang.org/x/net/context" - "google.golang.org/grpc" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type UserRequest struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *UserRequest) Reset() { *m = UserRequest{} } -func (m *UserRequest) String() string { return proto.CompactTextString(m) } -func (*UserRequest) ProtoMessage() {} -func (*UserRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *UserRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type UserResponse struct { - Response string `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"` -} - -func (m *UserResponse) Reset() { *m = UserResponse{} } -func (m *UserResponse) String() string { return proto.CompactTextString(m) } -func (*UserResponse) ProtoMessage() {} -func (*UserResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *UserResponse) GetResponse() string { - if m != nil { - return m.Response - } - return "" -} - -func init() { - proto.RegisterType((*UserRequest)(nil), "user.UserRequest") - proto.RegisterType((*UserResponse)(nil), "user.UserResponse") -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// Client API for User service - -type UserClient interface { - GetGrade(ctx context.Context, in *UserRequest, opts ...grpc.CallOption) (*UserResponse, error) -} - -type userClient struct { - cc *grpc.ClientConn -} - -func NewUserClient(cc *grpc.ClientConn) UserClient { - return &userClient{cc} -} - -func (c *userClient) GetGrade(ctx context.Context, in *UserRequest, opts ...grpc.CallOption) (*UserResponse, error) { - out := new(UserResponse) - err := grpc.Invoke(ctx, "/user.User/GetGrade", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Server API for User service - -type UserServer interface { - GetGrade(context.Context, *UserRequest) (*UserResponse, error) -} - -func RegisterUserServer(s *grpc.Server, srv UserServer) { - s.RegisterService(&_User_serviceDesc, srv) -} - -func _User_GetGrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserServer).GetGrade(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/user.User/GetGrade", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserServer).GetGrade(ctx, req.(*UserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _User_serviceDesc = grpc.ServiceDesc{ - ServiceName: "user.User", - HandlerType: (*UserServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetGrade", - Handler: _User_GetGrade_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "user.proto", -} - -func init() { proto.RegisterFile("user.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 131 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0x2d, 0x4e, 0x2d, - 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x01, 0xb1, 0x95, 0x14, 0xb9, 0xb8, 0x43, 0x8b, - 0x53, 0x8b, 0x82, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0x84, 0xb8, 0x58, 0xf2, 0x12, 0x73, - 0x53, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xc0, 0x6c, 0x25, 0x2d, 0x2e, 0x1e, 0x88, 0x92, - 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0x21, 0x29, 0x2e, 0x8e, 0x22, 0x28, 0x1b, 0xaa, 0x0e, 0xce, - 0x37, 0xb2, 0xe4, 0x62, 0x01, 0xa9, 0x15, 0x32, 0xe4, 0xe2, 0x70, 0x4f, 0x2d, 0x71, 0x2f, 0x4a, - 0x4c, 0x49, 0x15, 0x12, 0xd4, 0x03, 0xdb, 0x8a, 0x64, 0x8d, 0x94, 0x10, 0xb2, 0x10, 0x44, 0x6b, - 0x12, 0x1b, 0xd8, 0x59, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x99, 0xfd, 0x8f, 0x70, 0xa4, - 0x00, 0x00, 0x00, -} diff --git a/example/tracing/remote/user/user.proto b/example/tracing/remote/user/user.proto deleted file mode 100644 index ae2390c7..00000000 --- a/example/tracing/remote/user/user.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -package user; - -message UserRequest { - string name = 1; -} - -message UserResponse { - string response = 1; -} - -service User { - rpc GetGrade(UserRequest) returns (UserResponse); -} - - diff --git a/example/tracing/user/etc/config.json b/example/tracing/user/etc/config.json deleted file mode 100644 index a1ee98cd..00000000 --- a/example/tracing/user/etc/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "Name": "user.rpc", - "ListenOn": "localhost:3457", - "Etcd": { - "Hosts": [ - "localhost:2379" - ], - "Key": "user" - }, - "Timeout": 500 -} diff --git a/example/tracing/user/server.go b/example/tracing/user/server.go deleted file mode 100644 index a41f66fd..00000000 --- a/example/tracing/user/server.go +++ /dev/null @@ -1,54 +0,0 @@ -package main - -import ( - "context" - "flag" - "fmt" - "os" - "sync" - "time" - - "github.com/tal-tech/go-zero/core/conf" - "github.com/tal-tech/go-zero/example/tracing/remote/user" - "github.com/tal-tech/go-zero/zrpc" - "google.golang.org/grpc" -) - -var configFile = flag.String("f", "etc/config.json", "the config file") - -type UserServer struct { - lock sync.Mutex - alive bool - downTime time.Time -} - -func NewUserServer() *UserServer { - return &UserServer{ - alive: true, - } -} - -func (gs *UserServer) GetGrade(ctx context.Context, req *user.UserRequest) (*user.UserResponse, error) { - fmt.Println("=>", req) - - hostname, err := os.Hostname() - if err != nil { - return nil, err - } - - return &user.UserResponse{ - Response: "hello from " + hostname, - }, nil -} - -func main() { - flag.Parse() - - var c zrpc.RpcServerConf - conf.MustLoad(*configFile, &c) - - server := zrpc.MustNewServer(c, func(grpcServer *grpc.Server) { - user.RegisterUserServer(grpcServer, NewUserServer()) - }) - server.Start() -} diff --git a/go.mod b/go.mod index 14335206..0976d536 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( github.com/alicebob/miniredis/v2 v2.14.1 github.com/antlr/antlr4 v0.0.0-20210105212045-464bcbc32de2 github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect - github.com/dchest/siphash v1.2.1 github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/emicklei/proto v1.9.0 github.com/fatih/color v1.9.0 // indirect @@ -22,13 +21,11 @@ require ( github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect github.com/golang/mock v1.4.3 github.com/golang/protobuf v1.4.2 - github.com/google/gops v0.3.7 github.com/google/uuid v1.1.1 github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/grpc-gateway v1.14.3 // indirect github.com/iancoleman/strcase v0.1.2 github.com/justinas/alice v1.2.0 - github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/kr/pretty v0.2.0 // indirect github.com/lib/pq v1.3.0 diff --git a/go.sum b/go.sum index 1f1ed143..adf2df98 100644 --- a/go.sum +++ b/go.sum @@ -5,7 +5,6 @@ github.com/ClickHouse/clickhouse-go v1.4.3 h1:iAFMa2UrQdR5bHJ2/yaSLffZkxpcOYQMCU github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= github.com/DATA-DOG/go-sqlmock v1.4.1 h1:ThlnYciV1iM/V0OSF/dtkqWb6xo5qITT1TJBG1MRDJM= github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -50,8 +49,6 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dchest/siphash v1.2.1 h1:4cLinnzVJDKxTCl9B01807Yiy+W7ZzVHj/KIroQRvT4= -github.com/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4 h1:qk/FSDDxo05wdJH28W+p5yivv7LuLYLRXPPD8KQCtZs= @@ -78,8 +75,6 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-redis/redis v6.15.7+incompatible h1:3skhDh95XQMpnqeqNftPkQD9jL9e5e36z/1SUm6dy1U= github.com/go-redis/redis v6.15.7+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -129,8 +124,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gops v0.3.7 h1:KtVAagOM0FIq+02DiQrKBTnLhYpWBMowaufcj+W1Exw= -github.com/google/gops v0.3.7/go.mod h1:bj0cwMmX1X4XIJFTjR99R5sCxNssNJ8HebFNvoQlmgY= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= @@ -162,11 +155,6 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= -github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= -github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= -github.com/keybase/go-ps v0.0.0-20161005175911-668c8856d999 h1:2d+FLQbz4xRTi36DO1qYNUwfORax9XcQ0jhbO81Vago= -github.com/keybase/go-ps v0.0.0-20161005175911-668c8856d999/go.mod h1:hY+WOq6m2FpbvyrI93sMaypsttvaIL5nhVR92dTMUcQ= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -255,9 +243,6 @@ github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U= -github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -286,8 +271,6 @@ github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU= github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6 h1:YdYsPAZ2pC6Tow/nPZOPQ96O3hm/ToAkGsPLzedXERk= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryBNl9eKOeqQ58Y/Qpo3Q9QNxKHX5uzzQ= github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -349,7 +332,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20171017063910-8dbc5d05d6ed/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -462,8 +444,6 @@ honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXe honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/goversion v1.0.0 h1:/IhXBiai89TyuerPquiZZ39IQkTfAUbZB2awsyYZ/2c= -rsc.io/goversion v1.0.0/go.mod h1:Eih9y/uIBS3ulggl7KNJ09xGSLcuNaLgmvvqa07sgfo= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= diff --git a/readme-cn.md b/readme-cn.md index d22c30f4..2f5c6e9b 100644 --- a/readme-cn.md +++ b/readme-cn.md @@ -165,6 +165,7 @@ GO111MODULE=on GOPROXY=https://goproxy.cn/,direct go get -u github.com/tal-tech/ * [快速构建高并发微服务](https://github.com/tal-tech/zero-doc/blob/main/doc/shorturl.md) * [快速构建高并发微服务 - 多 RPC 版](https://github.com/tal-tech/zero-doc/blob/main/docs/zero/bookstore.md) * [goctl 使用帮助](https://github.com/tal-tech/zero-doc/blob/main/doc/goctl.md) + * [Examples](https://github.com/zeromicro/zero-examples) * 精选 `goctl` 插件 diff --git a/readme.md b/readme.md index 1847720d..1fc09aec 100644 --- a/readme.md +++ b/readme.md @@ -208,6 +208,7 @@ go get -u github.com/tal-tech/go-zero * [Rapid development of microservice systems](https://github.com/tal-tech/zero-doc/blob/main/doc/shorturl-en.md) * [Rapid development of microservice systems - multiple RPCs](https://github.com/tal-tech/zero-doc/blob/main/doc/bookstore-en.md) +* [Examples](https://github.com/zeromicro/zero-examples) ## 9. Chat group