package main /** 客户端调用 */ import ( "app.yhyue.com/BP/servicerd/proto" "app.yhyue.com/BP/servicerd/util" "context" "flag" "google.golang.org/grpc" "log" "sync" ) //服务地址配置 var ( rdserver = flag.String("rd", "192.168.3.240:10021", "服务治理地址") balancetype = flag.Int("balance", 0, "负载策略 0=随机 1=服务器压力均衡 2=轮训占用") threads = flag.Int("threads", 20, "压力并发数") requests = flag.Int("reqs", 100, "单个线程服务请求次数") ) var cu *util.ClientUtil func init() { flag.Parse() var err error cu, err = util.NewClient(*rdserver) if err != nil { panic(err) } } func run(thread int, wg *sync.WaitGroup) { defer func(wg *sync.WaitGroup) { wg.Done() }(wg) for i := 0; i < *requests; i++ { _, _ = cu.Run("demo", 10, func(conn *grpc.ClientConn, args ...interface{}) (interface{}, error) { demo_client := proto.NewDemoServiceClient(conn) demo_repl, err := demo_client.Say(context.Background(), &proto.DemoReq{ Name: "张三", }) if err != nil { log.Println(err.Error()) } else { log.Println("back::", thread, demo_repl.Data) } return nil, nil }) } } func main() { wg := new(sync.WaitGroup) for i := 0; i < *threads; i++ { wg.Add(1) go run(i, wg) } wg.Wait() log.Println("all ok") }