mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
80 lines
1.5 KiB
Markdown
80 lines
1.5 KiB
Markdown
# GoFrame Etcd Registry
|
|
|
|
|
|
Use `etcd` as service registration and discovery management.
|
|
|
|
|
|
## Installation
|
|
```
|
|
go get -u -v github.com/gogf/gf/contrib/registry/etcd/v2
|
|
```
|
|
suggested using `go.mod`:
|
|
```
|
|
require github.com/gogf/gf/contrib/registry/etcd/v2 latest
|
|
```
|
|
|
|
|
|
## Example
|
|
|
|
### Reference example
|
|
|
|
[server](../../../example/registry/etcd/http/server/server.go)
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"github.com/gogf/gf/contrib/registry/etcd/v2"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
"github.com/gogf/gf/v2/net/gsvc"
|
|
)
|
|
|
|
func main() {
|
|
gsvc.SetRegistry(etcd.New(`127.0.0.1:2379`))
|
|
|
|
s := g.Server(`hello.svc`)
|
|
s.BindHandler("/", func(r *ghttp.Request) {
|
|
g.Log().Info(r.Context(), `request received`)
|
|
r.Response.Write(`Hello world`)
|
|
})
|
|
s.Run()
|
|
}
|
|
```
|
|
|
|
[client](../../../example/registry/etcd/http/client/client.go)
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/gogf/gf/contrib/registry/etcd/v2"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/net/gsel"
|
|
"github.com/gogf/gf/v2/net/gsvc"
|
|
"github.com/gogf/gf/v2/os/gctx"
|
|
)
|
|
|
|
func main() {
|
|
gsvc.SetRegistry(etcd.New(`127.0.0.1:2379`))
|
|
gsel.SetBuilder(gsel.NewBuilderRoundRobin())
|
|
|
|
client := g.Client()
|
|
for i := 0; i < 100; i++ {
|
|
res, err := client.Get(gctx.New(), `http://hello.svc/`)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Println(res.ReadAllString())
|
|
res.Close()
|
|
time.Sleep(time.Second)
|
|
}
|
|
}
|
|
```
|
|
|
|
## License
|
|
|
|
`GoFrame etcd` is licensed under the [MIT License](../../../LICENSE), 100% free and open-source, forever.
|
|
|