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

2020-10-29 11:03:30 浏览数 (1)

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;
}

通关截图:

0 人点赞