我负责实现Websocket端点,其流程顺序如下:
websocket服务使用Spring 4编写,并在Tomcat 8.5上运行。我在Tomcat中使用默认连接器。
我有两个选择:
选项1 - 以阻止方式命中后端服务。
HttpRequest request = Unirest.get(url).queryString(params);
HttpResponse<String> response = request.asString();
//return response to client.
选项2 - 以非阻塞方式命中后端服务。
HttpRequest request = Unirest.get(url).queryString(params);
request.asStringAsync(new Callback<String>() {
@Override
public void failed(UnirestException e) {}
@Override
public void completed(HttpResponse<String> response) {
String result = response.getBody().toString();
// return result to client
});
后端服务的平均响应时间总是约为400毫秒。
我在&#34;阻止&#34;中加载测试应用程序以及&#34;非阻塞&#34;模式。令我惊讶的是,结果与我的期望略有不同:
结果表明我应该使用阻塞方法而不是非阻塞方法。我错过了什么吗?
答案 0 :(得分:-1)
CPU使用率和吞吐量是阻塞和非阻塞系统之间的主要区别,有关详细信息,请参阅此内容。
https://www.linkedin.com/pulse/differences-between-blocking-vs-non-blocking-systems-ashish-modi