Мой веб-сервис, основанный на базе RESTful Spring, получает дифференцированные запросы пользователей, например Gold, Silver и Bronze, где запросы на золото имеют максимальный приоритет, бронзовый самый низкий. Поэтому я хочу реализовать некоторый простой тип дифференцированного предоставления услуг. Что может быть самой простой (я бы сказал, почти издевавшейся) стратегией для реализации?Простая стратегия QoS для моего веб-сервиса RESTful
Я думаю о блокировке меньшего приоритета в течение некоторого времени, если я обслуживаю более приоритетный. Что-то вроде этого
@Controller
public class MyController {
@Autowired
private MyBusinessLogic businessLogic;
private static final int GOLD=0;
private static final int SILVER=1;
private static final int BRONZE=2;
private volatile int [] count = new int[3];
@RequestMapping
public String service(@RequestBody MyRequest request) {
count[request.getType()]++;
for(int i=0; i<request.getType(); i++)
if(count[i]>0)
Thread.sleep(500);
String result = businessLogic.service(request);
count[request.getType()]--;
return result;
}
}
Это разумно? Или имеет какой-то нежелательный побочный эффект? Вы рекомендуете лучшую стратегию?