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
解题思路: 如题目要求,理解题意就能通过。本题很好理解,也没有什么坑。
通关代码:
代码语言:javascript复制#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;
}
通关截图: