最简单的负载均衡算法应用到实际开发中

轮询法是最简单、最常见的负载均衡算法之一,其实现思路也非常简单:按照事先规定的顺序依次将请求转发至后端服务器。例如,若有3台服务器,则第1个请求会被分配到第1台服务器上,第2个请求会被分配到第2台服务器上,第3个请求会被分配到第3台服务器上,第4个请求又会被分配到第1台服务器上,以此类推。 这种算法的优点是实现简单、可靠性高,但是它并没有考虑服务器的实际负载情况,导致某些服务器可能会承受过多的负载,而其他服务器则处于空闲状态。

在日常开发中我们可能会遇到服务方接口并发小的情况,比如AI的生文/图接口一个账号的并发仅有个位数,而我们的业务需求要20个并发。这时候我们可以采用轮询算法,用不同的的账号请求服务方,增加我们接口的并发。

代码

    //定义一个全局计数器,每次调用累加
    private static AtomicInteger atomicInteger = new AtomicInteger(0);
    //定义apiKey、apiSecret列表
    private static List<GlmApiKeySecret> glmApiKeySecretList = new ArrayList<>();

    public GlmApiKeySecret roundRobinGlmApiKeySecret() {
        glmApiKeySecretList = JSONObject.parseArray(projectMetadata.getGlmApiKeySecretList(), GlmClient.GlmApiKeySecret.class);
        //获取apiKey、apiSecret数量
        int count = glmApiKeySecretList.size();
        //获取当前请求应该转发到哪个账号上
        int currentIndex = atomicInteger.incrementAndGet() % count;
        GlmApiKeySecret glmApiKeySecret = glmApiKeySecretList.get(currentIndex);
        log.info("roundRobinGlmApiKeySecret请求到:apiKey为:{}的账号", glmApiKeySecret.getApiKey());
        return glmApiKeySecret;
    }

    @Data
    public static class GlmApiKeySecret {
        private String apiKey;
        private String apiSecret;
    }

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大兵11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值