我当前正在使用Flink 1.6版,并且遇到AsyncIO的问题,其中性能未达到我的期望。
我确信我在实现过程中做错了事,因此任何建议/建议将不胜感激。
问题简介- 我正在消耗ID流。 对于每个ID,我需要调用REST服务。 我已经实现了RichAsyncFunction,它可以执行异步REST调用。
这是相关的代码方法和asyncInvoke方法
// these are initialized in the open method
ExecutorService executorService =
ExecutorService.newFixedThreadPool(n);
CloseableHttpAsyncClient client = ...
Gson gson = ...
public void asyncInvoke(String key, final ResultFuture<Item> resultFuture) throws Exception {
executorService.submit(new Runnable() {
client.execute(new HttpGet(new URI("http://myservice/" + key)), new FutureCallback<HttpResponse>() {
@Override
public void completed(final HttpResponse response) {
System.out.println("completed successfully");
Item item = gson.fromJson(EntityUtils.toString(response.getEntity), Item.class);
resultFuture.complete(Collections.singleton(item));
}
});
});
}
通过上述实现,我已经尝试过:-
我一直获得约100个请求/秒的吞吐量。该服务每秒可以处理超过5k。 我在做什么错了,我该如何改善呢?