我正在运行一个网站,我有一些我想调用的fastcgi应用程序 – 但是,这些应用程序并不直接访问公共 – 它们通过RESTFUL服务间接访问它们,然后使用Curl(或其他一些机制)从fgci应用程序中获取数据。
我的问题是带宽。 假设我使用Curl或PHP的readfile(),它涉及到指定的URL – 这将是类似于http://localhost/fastcgi-bin/test.fgci
那么“networking”是否足够聪明,知道地址是否驻留在本地,因此不需要“外部”,还是将请求发送到外部DNS,这将parsing我的机器IP地址?
基本上,我想知道如果采用这种架构将增加我的带宽消耗或不。
你发送给同一台机器的任何数据包都应该通过你的环回接口出去(并返回) – 它们不会通过networking出去。 你不会为他们收费。
您可以通过查看路由表来validation这一点。 你没有提到你正在使用的平台,所以我不能提供一个具体的例子,而是从我的笔记本电脑:
sveiss@brakiri:~$ route get 192.168.1.1 route to: 192.168.1.1 destination: 192.168.1.1 interface: en1 flags: <UP,HOST,DONE,LLINFO,WASCLONED,IFSCOPE> recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 0 0 0 0 0 0 1500 1198 sveiss@brakiri:~$ route get 192.168.1.63 route to: 192.168.1.63 destination: 192.168.1.63 interface: lo0 flags: <UP,HOST,DONE,STATIC> recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 49152 49152 0 0 0 0 16384 0 sveiss@brakiri:~$ route get 127.0.0.1 route to: localhost destination: localhost interface: lo0 flags: <UP,HOST,DONE,LOCAL> recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 49152 49152 0 0 0 0 16384 0
看看interface:线路:到机器本地地址(192.168.1.63和127.0.01)的stream量通过lo0 (环回接口)发送。 去其他地方的stream量将通过接口en1通过networking传出。
现在,为了解决名称问题,如果您的计算机使用了DNS名称,那么DNS查询和响应可能会超出本地框。 但是,应用程序通信不会:如上所述,它将遵循路由表中的规则并使用回送接口。
根据您的操作系统和configuration(是否打开了DNScaching?是您在本地主机文件中列出的DNS名称?),DNS查询消耗的带宽量范围从零到小 – 数量级小于其余的外部stream量。
任何环回数据包都不会像上面提到的海报那样击中networking。 您将不会使用任何带宽进行本地请求。