main.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package main
  2. /**
  3. 客户端调用
  4. */
  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. "sync"
  13. )
  14. //服务地址配置
  15. var (
  16. rdserver = flag.String("rd", "192.168.3.240:10021", "服务治理地址")
  17. balancetype = flag.Int("balance", 0, "负载策略 0=随机 1=服务器压力均衡 2=轮训占用")
  18. threads = flag.Int("threads", 20, "压力并发数")
  19. requests = flag.Int("reqs", 100, "单个线程服务请求次数")
  20. )
  21. var cu *util.ClientUtil
  22. func init() {
  23. flag.Parse()
  24. var err error
  25. cu, err = util.NewClient(*rdserver)
  26. if err != nil {
  27. panic(err)
  28. }
  29. }
  30. func run(thread int, wg *sync.WaitGroup) {
  31. defer func(wg *sync.WaitGroup) {
  32. wg.Done()
  33. }(wg)
  34. for i := 0; i < *requests; i++ {
  35. _, _ = cu.Run("demo", 10, func(conn *grpc.ClientConn, args ...interface{}) (interface{}, error) {
  36. demo_client := proto.NewDemoServiceClient(conn)
  37. demo_repl, err := demo_client.Say(context.Background(), &proto.DemoReq{
  38. Name: "张三",
  39. })
  40. if err != nil {
  41. log.Println(err.Error())
  42. } else {
  43. log.Println("back::", thread, demo_repl.Data)
  44. }
  45. return nil, nil
  46. })
  47. }
  48. }
  49. func main() {
  50. wg := new(sync.WaitGroup)
  51. for i := 0; i < *threads; i++ {
  52. wg.Add(1)
  53. go run(i, wg)
  54. }
  55. wg.Wait()
  56. log.Println("all ok")
  57. }