main.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package main
  2. import (
  3. "github.com/pkg/profile"
  4. "io/ioutil"
  5. "os"
  6. "rocommon"
  7. "rocommon/service"
  8. _ "rocommon/socket"
  9. _ "rocommon/socket/tcp"
  10. "roserver/baseserver"
  11. "roserver/baseserver/model"
  12. _ "roserver/server_aoi/model"
  13. model2 "roserver/server_aoi/model"
  14. _ "roserver/server_aoi/msg"
  15. "runtime"
  16. "strconv"
  17. "syscall"
  18. )
  19. func main() {
  20. //记录gate pid用来做关闭操作
  21. sysType := runtime.GOOS
  22. if sysType != "windows" {
  23. if pid := syscall.Getpid(); pid != 1 {
  24. fileName := "aoi_server.pid" + strconv.Itoa(pid)
  25. ioutil.WriteFile(fileName, []byte(strconv.Itoa(pid)), 0777)
  26. defer os.Remove(fileName)
  27. }
  28. }
  29. //CPU
  30. prof := profile.Start(profile.CPUProfile, profile.ProfilePath("./pprof/serveraoi.pprof"), profile.NoShutdownHook)
  31. baseserver.Init(model.SERVICE_NODE_TYPE_AOI_STR, nil, &model2.AoiUpdate{})
  32. //先建立服务器对应的连接,在监听客户端
  33. sConfig := service.GetServiceConfig()
  34. var acceNode rocommon.ServerNode = nil
  35. if sConfig.Node.Addr != "" {
  36. //创建客户端监听
  37. acceNode = baseserver.CreateAcceptor(baseserver.ServiceParam{
  38. ServiceName: model.SERVICE_NODE_TYPE_AOI_STR,
  39. ServiceType: "tcpAcceptor",
  40. ProcName: "aoi.backend",
  41. LisAddr: sConfig.Node.Addr,
  42. }, sConfig)
  43. }
  44. for _, concern := range sConfig.Node.Concern {
  45. //建立需要链接的服务器,可以通过服务器发现etcd来处理(包含在了CreateConnector中)
  46. baseserver.CreateConnector(baseserver.ServiceParam{
  47. DiscoveryServiceName: concern,
  48. DiscoveryServiceZone: sConfig.Node.Zone,
  49. ServiceType: "tcpConnector",
  50. ServiceName: model.SERVICE_NODE_TYPE_AOI_STR,
  51. ProcName: "common.backend",
  52. })
  53. }
  54. baseserver.Wait()
  55. //CPU
  56. prof.Stop()
  57. baseserver.Exit(acceNode)
  58. /*
  59. //内存使用详情
  60. f, err := os.Create("./pprof/serveraoi.pprof/aoi_mem_profile.pro")
  61. if err != nil {
  62. log.Println("err:", err)
  63. }
  64. pprof.WriteHeapProfile(f)
  65. f.Close()
  66. */
  67. }