目录结构
zRPC目录结构
zrpc ├── internal │ ├── auth │ │ ├── auth.go // 基于Redis的身份验证器 │ │ ├── auth_test.go │ │ ├── credential.go // 证书及相关方法 │ │ ├── credential_test.go │ │ └── vars.go │ ├── balancer │ │ └── p2c │ │ ├── p2c.go // p2c负载均衡 │ │ └── p2c_test.go // https://www.nginx.com/blog/nginx-power-of-two-choices-load-balancing-algorithm/ │ ├── clientinterceptors // 客户端拦截器 │ │ ├── breakerinterceptor.go │ │ ├── breakerinterceptor_test.go │ │ ├── durationinterceptor.go │ │ ├── durationinterceptor_test.go │ │ ├── prometheusinterceptor.go │ │ ├── prometheusinterceptor_test.go │ │ ├── timeoutinterceptor.go │ │ ├── timeoutinterceptor_test.go │ │ ├── tracinginterceptor.go │ │ └── tracinginterceptor_test.go │ ├── serverinterceptors // 服务端拦截器 │ │ ├── authinterceptor.go │ │ ├── authinterceptor_test.go │ │ ├── crashinterceptor.go │ │ ├── crashinterceptor_test.go │ │ ├── prometheusinterceptor.go │ │ ├── prometheusinterceptor_test.go │ │ ├── sheddinginterceptor.go │ │ ├── sheddinginterceptor_test.go │ │ ├── statinterceptor.go │ │ ├── statinterceptor_test.go │ │ ├── timeoutinterceptor.go │ │ ├── timeoutinterceptor_test.go │ │ ├── tracinginterceptor.go │ │ └── tracinginterceptor_test.go │ ├── codes │ │ ├── accept.go │ │ └── accept_test.go │ ├── mock │ │ ├── deposit.pb.go │ │ ├── deposit.proto │ │ └── depositserver.go │ ├── resolver │ │ ├── directbuilder.go // grpc中builder实例化 │ │ ├── directbuilder_test.go │ │ ├── discovbuilder.go // grpc中builder实例化 │ │ ├── resolver.go // grpc中resolver实例化 │ │ ├── resolver_test.go │ │ ├── subset.go // 随机子集 │ │ └── subset_test.go │ ├── client.go // zrpc客户端抽象 │ ├── client_test.go │ ├── server.go // zrpc服务端抽象 │ ├── server_test.go │ ├── rpclogger.go │ ├── rpcpubserver.go // 服务发现服务端实例 │ ├── rpcserver.go // 直连服务端服务端实例 │ ├── rpcserver_test.go │ ├── chainclientinterceptors.go │ ├── chainclientinterceptors_test.go │ ├── chainserverinterceptors.go │ ├── chainserverinterceptors_test.go │ ├── target.go // 构建rpc地址方法 │ └── target_test.go ├── client.go // zrpc客户端实例 ├── client_test.go ├── config.go // zrpc服务端&客户端配置 ├── config_test.go ├── proxy.go ├── proxy_test.go └── server.go // zrpc服务端实例
zRPC的核心功能主要在internal目录下:
auth:该模块主要实现鉴权功能
balancer:该模块主要是负载均衡的实现,内置默认p2c负载均衡算法
clientinterceptors: 客户通用端拦截器,内置熔断、统计、指标收集等功能
resolver:自定义resolver做服务注册,实现gRPC的resolver接口
serverinterceptors:服务端通用拦截器,内置鉴权、降载、监控指标收集、统计等功能