| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package main
- import (
- "context"
- "fmt"
- "github.com/go-kit/kit/examples/shipping/booking"
- "github.com/go-kit/kit/log"
- "github.com/go-kit/kit/sd/etcdv3"
- transport"github.com/go-kit/kit/transport/grpc"
- "google.golang.org/grpc"
- "net"
- "standard/etcd/go-kit/pb"
- "standard/etcd/go-kit/server"
- "time"
- )
- func main() {
- var (
- etcdServer = "192.168.3.106:2379" //etcd服务的IP地址
- prefix = "/services/book/" //服务的目录
- ServerInstance = "127.0.0.1:7000" //当前实例Server的地址
- key = prefix + ServerInstance //服务实例注册的路径
- value = ServerInstance
- ctx = context.Background()
- //服务监听地址
- serviceAddress = ":7000"
- )
- //etcd连接参数
- option := etcdv3.ClientOptions{DialTimeout: time.Second * 3, DialKeepAlive: time.Second * 3}
- //创建连接
- client, err := etcdv3.NewClient(ctx, []string{etcdServer}, option)
- if err != nil {
- panic(err)
- }
- //创建注册服务
- registrar := etcdv3.NewRegistrar(client, etcdv3.Service{Key: key, Value: value}, log.NewNopLogger())
- registrar.Register() //启动注册服务
- bookServer := new(server.BookServer)
- bookListHandler := transport.NewServer(
- server.MakeGetBookListEndpoint(),
- server.DecodeRequest,
- server.EncodeResponse,
- )
- bookInfoHandler := transport.NewServer(
- server.MakeGetBookInfoEndpoint(),
- server.DecodeRequest,
- server.EncodeResponse,
- )
- bookServer.BookListHandler = bookListHandler
- bookServer.BookInfoHandler = bookInfoHandler
- listener, err := net.Listen("tcp", serviceAddress)
- if err != nil {
- fmt.Println(err)
- return
- }
- //UnaryInterceptor 一元拦截器
- gs := grpc.NewServer(grpc.UnaryInterceptor(transport.Interceptor))
- pb.RegisterBookServerServer(gs, bookServer) //调用protoc生成的代码对应的注册方法
- gs.Serve(listener)
- }
|