main.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package main
  2. /**
  3. 客户端调用
  4. */
  5. import (
  6. "app.yhyue.com/BP/servicerd/proto"
  7. "context"
  8. "flag"
  9. "google.golang.org/grpc"
  10. "log"
  11. "sync"
  12. )
  13. //服务地址配置
  14. var (
  15. rdserver = flag.String("rd", "127.0.0.1:10021", "服务治理地址")
  16. )
  17. func init() {
  18. flag.Parse()
  19. }
  20. func run(thread int, wg *sync.WaitGroup) {
  21. conn, err := grpc.Dial(*rdserver, grpc.WithInsecure())
  22. if err != nil {
  23. return
  24. }
  25. defer func(wg *sync.WaitGroup) {
  26. conn.Close()
  27. wg.Done()
  28. }(wg)
  29. var client proto.ServiceClient
  30. client = proto.NewServiceClient(conn)
  31. for i := 0; i < 20; i++ {
  32. repl, err := client.Apply(context.Background(), &proto.ApplyReqData{Name: "demo", Balance: 2})
  33. if err != nil {
  34. log.Println("出错了")
  35. log.Fatalln(err.Error())
  36. }
  37. log.Println("结果", thread, repl.Addr, repl.ResourceId)
  38. //TODO 业务调用
  39. conn, err := grpc.Dial(repl.Addr, grpc.WithInsecure())
  40. if err != nil {
  41. return
  42. }
  43. defer conn.Close()
  44. demo_client := proto.NewDemoServiceClient(conn)
  45. demo_repl, err := demo_client.Say(context.Background(), &proto.DemoReq{
  46. Name: "张三",
  47. })
  48. if err != nil {
  49. log.Println(err.Error())
  50. } else {
  51. log.Println("back::", thread, demo_repl.Data)
  52. }
  53. //time.Sleep(time.Duration(rand.Intn(5)) * time.Second)
  54. //只有使用SEQ负载模式,需要调用释放资源
  55. release_repl, err := client.Release(context.Background(), &proto.StringReqData{Data: repl.ResourceId})
  56. if err != nil {
  57. log.Println("出错了")
  58. log.Fatalln(err.Error())
  59. } else {
  60. log.Println(thread, release_repl.Data)
  61. }
  62. }
  63. }
  64. func main() {
  65. wg := new(sync.WaitGroup)
  66. for i := 0; i < 3; i++ {
  67. wg.Add(1)
  68. go run(i, wg)
  69. }
  70. wg.Wait()
  71. log.Println("all ok")
  72. }