在代码中可以分析出,先调用p.Pick方法获取pickResult对象即要连接的对象属性。实际上就是调用go-zero中的p2c负载均衡的处理算法获取连接并返回。/go-zero/zrpc/internal/balancer/p2c/p2c.go 5. 总结 从目前的代码分析中可以发现grpc在负载均衡和服务发现机制的原理实现上具有相似的特点,而在程序上均采用了装饰模...
原本接下来应对go-zero的服务发现注册原理进行分析的,但实际上此时我们需要先了解grpc的处理方式,因为在go-zero中无论是server还是client在本质上都是对grpc的使用进行封装,因此对程序的本质来说实际就是在使用grpc。而go-zero的client就是在grpc的基础上封装,因此我们需要先了解grpc是如何做服务发现注册的,及如何...
主要有两种实现方式,分别是固定窗口和滑动窗口,并且分析了 go-zero 采用固定窗口方式实现的源码。 但是采用固定窗口实现的限流器会有两个问题: 会出现请求量超出限制值两倍的情况 无法很好处理流量突增问题 这篇文章来介绍一下令牌桶算法,可以很好解决以上两个问题。 工作原理 算法概念如下: 令牌以固定速率生成; 生...
对go-zero 支持用泛型改写,我们持谨慎态度,因为一旦使用泛型,那么 Go 版本必须从 1.15 升级到 1.18,很多用户的线上服务现在还未升级到最新版,所以 go-zero 的泛型改写会延后 Go 两三个版本,确保用户线上服务大部分已经升级到 Go 1.18 go-zero也在对泛型做充分的调研和尝试。 其中的mr包已经新开仓库支持了泛型...
再通过api服务即可确定go-zero请求的时候会在这两个服务中选择一个来完成请求,这里就用到了负载均衡。 负载均衡:如字面意思即对流量负载的均衡处理,当存在多个服务的时候,通过一个特定的方式将流量均衡的分撒到各个服务上这就是负载均衡。 2. 负载均衡的实现方式 ...