负载

优质
小牛编辑
129浏览
2023-12-01

负载的实现方式有很多种,Uragano采用客户端集成负载,目前支持负载算法有轮询、加权轮询、随机、加权随机、Hash一致性。在未指定负载算法的情况下,Uragano默认采用轮询。

service.AddUragano(context.Configuration, builder =>
                    {
                        builder.AddClient<LoadBalancingPolling>();
                        或者
                        builder.AddClient(LoadBalancing.Polling);

                        builder.AddConsul();
                    });

如果你想实现自己的负载算法,可以通过实现ILoadBalancing接口来定义。

关于Hash一致性算法

Hash一致性算法必须有一个Hash对象,系统默认的Hash一致性算法通过 元数据 Key=x-consistent-hash-key的值进行hash,所以在调用服务时需要传入具体的值,否则会抛出异常。使用场景举例:当你的服务数据量很大,需要对数据进行分片,比如根据用户id的hash值来选择不同的分片,那么在获取用户数据时就需要路由到特定的服务节点。