【发布时间】:2012-02-12 18:42:39
【问题描述】:
1) 有没有使用异步 I/O 而不是线程池的 aws sdk 的实现?我正在开发一个高度可扩展的 Web 服务,并且分析表明 CPU 正在浪费大量周期来管理进出亚马逊的网络 I/O。
2)当前客户端使用Apache Http Client,如果我找不到异步实现,我将分叉我自己的版本来实现它。我正在考虑使用Jetty Http Client。混合使用 Jetty 和 Apache 库是不是很糟糕?有更好的选择吗?
【问题讨论】:
-
“CPU 瓶颈是与亚马逊的所有连接” 不,这是(网络)I/O 瓶颈。 CPU 瓶颈根据定义在 CPU 中。
-
你说得对,网络是瓶颈,但我不想在网络 I/O 上浪费 CPU 时间和线程。 hprof 报告显示大多数 cpu 样本发生在轮询套接字时。
-
不同之处在于您希望获得什么。异步 I/O 无法让您免于服务延迟:它不会让 AWS 对您的请求的处理神奇地更快。但是,它可能让您在等待时进行更有意义的本地计算。就此而言,线程池也是如此。
-
如果您有后端瓶颈,如何实现高度可扩展性?
-
@phs “不过,它可能会让您进行更有意义的本地计算”,而且我们正在向 AW 发送数千个请求,这意味着打开的请求往往会堆积起来。为打开的请求阻塞线程似乎比使用 NIO 效率低。
标签: java amazon-web-services jetty