OJ刷题记录:L1-204-Ribbon负载均衡-轮询算法(10分)

L1-204-Ribbon负载均衡-轮询算法(10分)

题目要求:
最近出题人在学分布式,想分享给大家这个有趣东西。
负载均衡算法:rest接口第几次请求数 % 服务器集群总数 = 实际调用服务器位置下标,并且每次服务重启后rest接口计数重新从1开始
127.0.0.1:8002、127.0.0.1:8001 组合成为集群,它们共计两台机器,即集群总数为2,根据上述描述以下是调用原理:
当总请求数为1时:1 % 2 = 1 对应下标位置为1,则获得服务地址为127.0.0.1:8001
当总请求数为2时:2 % 2 = 0 对应下标位置为0,则获得服务地址为127.0.0.1:8002
当总请求数为3时:3 % 2 = 1 对应下标位置为1,则获得服务地址为127.0.0.1:8001

输入
第一行输入服务器集群总数n
第二行开始输入n个服务地址
接下来输入相应的命令,发送请求代号为®、服务重启代号为(S)、结束服务代号为(E)
输出
根据输入的命令输出对应的服务地址
样例输入
2
127.0.0.1:8002
127.0.0.1:8001
S
R
R
R
S
R
E
样例输出
127.0.0.1:8001
127.0.0.1:8002
127.0.0.1:8001
127.0.0.1:8001

解题思路:
如题目要求,理解题意就能通过。本题很好理解,也没有什么坑。

通关代码:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
	int n, rest = 1;
	char command;
	string value;
	vector<string> RAC;
	vector<string> results;
	
	cin >> n;
	
	for (int i = 0; i < n; i++) {
		cin >> value;
		RAC.emplace_back(value);
	}
	
	while (command != 'E')  {
		cin >> command;
		
		if (command == 'S') {
			rest = 1;
		} else if (command == 'R') {
			results.emplace_back(RAC[rest % n]);
			rest++;
		}
	}
	
	int LEN = results.size();
	
	for (int i = 0; i < LEN; i++) {
		cout << results[i] << endl;
	}
	
	return 0;
}

通关截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值