您好,匿名用户
随意问技术百科期待您的加入

关于使用 ip:port 或 unixsock 连接外部服务的白目问题 ...

0 投票

这其实是个很白痴的问题 ... 但妈妈说若不懂就要问 ...

只是我不太知道该怎么精确描述这个问题 ... 所以很难依靠搜索引擎取得答案 ...

于是只好来发问耽误大家一点时间了 ...

众所周知在程序中连接一个外部服务有两种方式 ...

make_connection( 'hostname-or-ip:port' ); // e.g. 127.0.0.1:11111
make_connection( '/path/to/unix.sock' ); // e.g. /tmp/icode.sock

我可以理解如果有多台服务器 ... 那么需要使用第一种方式指定外部服务所在的机器 ...

但假如程序和所需要调用的服务在同一台机器上呢 ..?

我应该用 127.0.0.1:11111 的方式来连接 ... 还是用 unixsock 来连接 ..?

这两种方式各有什么优缺点 ..? 在怎样的情况下我该选择哪个 ..?

感觉上如果用第一种方式的话 ... 每次连接都要走一次 TCP/IP ... 性能应该偏低才是 ...

但很多人都在单机上用第一种 ... 说明 unixsock 也许有更严重的瓶颈 ... 是什么呢 ...

如果这样说还是不明确的话 ...

假设一个场景 ... 单台机器上高并发的 web 应用 ... 需要连接一个外部服务 ...

使用这两种方式哪个效率更高哪个更稳定 ... 为什么 ..?

用户头像 提问 2013年 10月25日 @ Pisces 上等兵 (182 威望)
分享到:

1个回答

0 投票

MySQL/X Server在本机默认用的是unix domain socket file,可以推断它不存在性能瓶颈的问题。

AF_INET的数据包要通过tcp/ip栈,而AF_UNIX的数据包是通过文件系统交换的,理论上AF_UNIX的开销要比AF_INET更小,性能应该会更好,而且可以通过文件系统的权限来进行权限管理,但是缺点就是只能用于同一个Unix/Linux机器上。

用户头像 回复 2013年 10月10日 @ Athena 上等兵 (346 威望)
提一个问题:

相关问题

0 投票
0 回复 34 阅读
0 投票
1 回复 10 阅读
0 投票
1 回复 28 阅读
用户头像 提问 2014年 1月29日 @ Vi 上等兵 (121 威望)
0 投票
1 回复 34 阅读
0 投票
0 回复 145 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...