# micro-learning **Repository Path**: zhangjuntao/micro-learning ## Basic Information - **Project Name**: micro-learning - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-06-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # micro-learning #### 组件 https://micro.mu/docs/cn/install-guide.html#go-micro * 注册中心 默认: mdnsRegistry 5353 建立dns服务器 方式:通过在同一个内网中监听广播端口,定时发送广播询问 sendQuery 信息来发现注册服务的。【广播询问、接收服务反馈】 github.com/micro/go-micro@v1.6.0/registry/mdns_registry.go github.com/micro/mdns@v0.1.0 * 传输协议 Transport: 默认是http协议、可选择grpc、tcp 等等 * select 负载均衡选择器: 1、负载均衡策略 2、注册中心客户端 * rpc发送 ** 代码 ```go // 依赖:github.com/micro/go-micro@v1.6.1-0.20190612120317-2b18b11ab180/client/grpc/grpc.go:290 // 方法:func (g *grpcClient) Call(ctx context.Context, req client.Request, rsp interface{}, opts ...client.CallOption) // 执行网络发送: // func (g *grpcClient) call(ctx context.Context, node *registry.Node, req client.Request, rsp interface{}, opts client.CallOptions) error { for i := 0; i <= callOpts.Retries; i++ { // 发送rpc请求 go func() { ch <- call(i) }() // select 同步获取结果。阻塞到完成或者得到异常。 select { case <-ctx.Done(): return errors.New("go.micro.client", fmt.Sprintf("%v", ctx.Err()), 408) case err := <-ch: // if the call succeeded lets bail early if err == nil { return nil } retry, rerr := callOpts.Retry(ctx, req, i, err) if rerr != nil { return rerr } if !retry { return err } gerr = err } } ```