heartbeatService.go 688 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package main
  2. import (
  3. "app.yhyue.com/BP/servicerd/proto"
  4. "log"
  5. "time"
  6. )
  7. /**
  8. 心跳服务
  9. */
  10. type Heartbeat struct {
  11. }
  12. //
  13. func (h *Heartbeat) PutStream(cliStr proto.HeartBeat_PutStreamServer) error {
  14. for {
  15. if tem, err := cliStr.Recv(); err == nil {
  16. log.Printf("心跳包- %s--%s \n", tem.ServiceName, tem.ServiceAddr)
  17. UpdateServiceMetaTtl(tem.ServiceAddr)
  18. } else {
  19. log.Println("break, err :", err)
  20. break
  21. }
  22. }
  23. return nil
  24. }
  25. //过期服务清理
  26. func ClearTimeoutService(ttl int64) {
  27. timeout := ttl * 2
  28. tm := time.NewTicker(time.Duration(ttl) * time.Second)
  29. for {
  30. select {
  31. case <-tm.C:
  32. //TODO 过滤过期服务
  33. RemoveTimeoutService(timeout)
  34. }
  35. }
  36. }