【发布时间】:2018-01-27 05:06:31
【问题描述】:
假设我的 API 中有两个端点(之前在 Spring 中):
@RequestMapping("/async")
public CompletableFuture<String> g(){
CompletableFuture<String> f = new CompletableFuture<>();
f.runAsync(() -> {
try {
Thread.sleep(5000);
f.complete("Finished");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread.sleep(1000);
return f;
}
@RequestMapping("/sync")
public String h() throws InterruptedException {
Thread.sleep(5000);
Thread.sleep(1000);
return "Finished";
}
当我发送 2 个 get 请求(只是单个 get 请求)到:
localhost:8080/async --> 回复5024ms
localhost:8080/sync --> '6055ms` 中的响应
这是有道理的,因为我们只发送一个单个请求。现在,当我使用 Siege 进行涉及 255 个并发用户的负载测试时,事情变得有趣了。
在这种情况下,我的 async API 端点无法处理很多连接。
所以async 没有那么可扩展。
这取决于我的硬件吗?假设我有能够处理更多线程处理程序的硬件,然后使用重型硬件,异步处理程序是否能够处理更多事务,因为有更多线程?
【问题讨论】:
-
还在做这个,嗯?
-
你得到异常了吗?错误?
-
@Kayaman,这只是好奇;我对基础架构感兴趣,但找不到足够的信息。
-
是的,互联网就是这样。缺乏信息。
标签: java spring rest scalability