main.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. var client proto.ServiceClient
  18. func init() {
  19. flag.Parse()
  20. conn, err := grpc.Dial(*rdserver, grpc.WithInsecure())
  21. if err != nil {
  22. return
  23. }
  24. client = proto.NewServiceClient(conn)
  25. }
  26. func run(thread int, wg *sync.WaitGroup) {
  27. defer func(wg *sync.WaitGroup) {
  28. wg.Done()
  29. }(wg)
  30. for i := 0; i < 200; i++ {
  31. repl, err := client.Apply(context.TODO(), &proto.ApplyReqData{Name: "demo", Balance: 0})
  32. if err != nil {
  33. log.Println("出错了")
  34. log.Fatalln(err.Error())
  35. }
  36. log.Println("结果", thread, repl.Addr, repl.ResourceId)
  37. //TODO 业务调用
  38. conn, err := grpc.Dial(repl.Addr, grpc.WithInsecure())
  39. if err != nil {
  40. return
  41. }
  42. defer conn.Close()
  43. demo_client := proto.NewDemoServiceClient(conn)
  44. demo_repl, err := demo_client.Say(context.TODO(), &proto.DemoReq{
  45. Name: "张三",
  46. })
  47. if err != nil {
  48. log.Println(err.Error())
  49. } else {
  50. log.Println("back::", thread, demo_repl.Data)
  51. }
  52. //只有使用SEQ负载模式,需要调用释放资源
  53. /*
  54. release_repl, err := client.Release(context.TODO(), &proto.StringReqData{Data: repl.ResourceId})
  55. if err != nil {
  56. log.Println("出错了")
  57. log.Fatalln(err.Error())
  58. } else {
  59. log.Println(thread, release_repl.Data)
  60. }*/
  61. }
  62. }
  63. func main() {
  64. wg := new(sync.WaitGroup)
  65. for i := 0; i < 5; i++ {
  66. wg.Add(1)
  67. go run(i, wg)
  68. }
  69. wg.Wait()
  70. log.Println("all ok")
  71. }