main.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package main
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/go-kit/kit/examples/shipping/booking"
  6. "github.com/go-kit/kit/log"
  7. "github.com/go-kit/kit/sd/etcdv3"
  8. transport"github.com/go-kit/kit/transport/grpc"
  9. "google.golang.org/grpc"
  10. "net"
  11. "standard/etcd/go-kit/pb"
  12. "standard/etcd/go-kit/server"
  13. "time"
  14. )
  15. func main() {
  16. var (
  17. etcdServer = "192.168.3.106:2379" //etcd服务的IP地址
  18. prefix = "/services/book/" //服务的目录
  19. ServerInstance = "127.0.0.1:7000" //当前实例Server的地址
  20. key = prefix + ServerInstance //服务实例注册的路径
  21. value = ServerInstance
  22. ctx = context.Background()
  23. //服务监听地址
  24. serviceAddress = ":7000"
  25. )
  26. //etcd连接参数
  27. option := etcdv3.ClientOptions{DialTimeout: time.Second * 3, DialKeepAlive: time.Second * 3}
  28. //创建连接
  29. client, err := etcdv3.NewClient(ctx, []string{etcdServer}, option)
  30. if err != nil {
  31. panic(err)
  32. }
  33. //创建注册服务
  34. registrar := etcdv3.NewRegistrar(client, etcdv3.Service{Key: key, Value: value}, log.NewNopLogger())
  35. registrar.Register() //启动注册服务
  36. bookServer := new(server.BookServer)
  37. bookListHandler := transport.NewServer(
  38. server.MakeGetBookListEndpoint(),
  39. server.DecodeRequest,
  40. server.EncodeResponse,
  41. )
  42. bookInfoHandler := transport.NewServer(
  43. server.MakeGetBookInfoEndpoint(),
  44. server.DecodeRequest,
  45. server.EncodeResponse,
  46. )
  47. bookServer.BookListHandler = bookListHandler
  48. bookServer.BookInfoHandler = bookInfoHandler
  49. listener, err := net.Listen("tcp", serviceAddress)
  50. if err != nil {
  51. fmt.Println(err)
  52. return
  53. }
  54. //UnaryInterceptor 一元拦截器
  55. gs := grpc.NewServer(grpc.UnaryInterceptor(transport.Interceptor))
  56. pb.RegisterBookServerServer(gs, bookServer) //调用protoc生成的代码对应的注册方法
  57. gs.Serve(listener)
  58. }