HttpClient请求对localhost的性能和生命周期

时间:2014-06-08 05:08:23

标签: java http network-programming solrj

我们有一个名为Solr的服务,提供http-api。有一个消费它的Java客户端。目前,它们(服务和客户端)不够大,因此我们可以在同一台机器上部署它们以避免任何网络延迟。我们仍然希望使用http-api来使用服务,以便将来解耦是无缝的。

我不是一个计算机网络人,而是试图弄清楚http请求的生命周期。但这适用于真正的Web http请求。如果您可以在下面进行验证,那就太棒了。

  • 请求从应用层启动并被包裹几次,直到它到达物理层
  • 联系DNS以获取IP地址
  • 通过TCP将请求发送到目标IP。
  • 沿着最短/最聪明的路径前往目的地。
  • 目标侦听端口号并将传入转发给正确的应用程序。
  • 应用程序返回响应,然后以类似的方式将其发送回源。

问题

  1. 如果请求被发送到网址" localhost:8983",它在性能方面与实际网络请求相比如何。默认情况下,上述哪一步被删除。

    如果重要,请注意我使用Apache HttpClient(4.3)与托管在同一台机器上的Solr服务进行通信。

  2. 它们是否属于同一个JVM是否重要?

    感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

1。)没有任何变化。所有请求都将遵循您在问题中列出的相同路径。唯一的区别是从客户端到服务器只有一跳(localhost)。

2。)不,没关系。仍然有一个http请求。该http请求不关心消息是否转到同一个jvm。它仍将遵循您在问题中列出的步骤。

在同一台机器上通过http向solr jvm发出的请求应该非常快,我不会太担心它。但是,您应该尝试通过使用线程连接管理器和默认的单线程管理器来确保正确配置http客户端。您还可能需要根据负载确定连接池的大小,但请求应该非常快。

相关问题