main.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. 服务提供者样例
  3. */
  4. package main
  5. import (
  6. "app.yhyue.com/BP/servicerd/proto"
  7. "app.yhyue.com/BP/servicerd/util"
  8. "context"
  9. "flag"
  10. "google.golang.org/grpc"
  11. "log"
  12. "os"
  13. "os/signal"
  14. )
  15. //服务地址配置
  16. var (
  17. ip = flag.String("ip", "192.168.20.100", "本机ip")
  18. port = flag.Int("port", 20153, "服务端口")
  19. rdserver = flag.String("rd", "192.168.3.240:10021", "服务治理地址")
  20. serviceName = flag.String("name", "demo", "服务名称")
  21. )
  22. //实际业务实现
  23. type DemoService struct {
  24. }
  25. //
  26. func (s *DemoService) Say(ctx context.Context, in *proto.DemoReq) (*proto.DemoRep, error) {
  27. return &proto.DemoRep{Data: in.Name}, nil
  28. }
  29. func init() {
  30. flag.Parse()
  31. }
  32. func main() {
  33. bs := util.NewService(*rdserver, *serviceName,
  34. *ip, *port,
  35. 20, 10)
  36. bs.Run(func(s *grpc.Server) error { //服务注册,服务心跳,都在这个里边维护
  37. //TODO 服务注册 ,当然,这里可以注册多个协议实现
  38. proto.RegisterDemoServiceServer(s, new(DemoService))
  39. return nil
  40. })
  41. c := make(chan os.Signal, 1)
  42. signal.Notify(c, os.Interrupt, os.Kill)
  43. <-c
  44. //执行清理操作
  45. log.Println("服务注销")
  46. bs.Destory()
  47. }