V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhoudaiyu
V2EX  ›  问与答

UNIX 域套接字的主要应用场景是什么?

  •  
  •   zhoudaiyu · 2021-01-13 21:29:32 +08:00 via iPhone · 1690 次点击
    这是一个创建于 1410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如有个 go 的进程(作为客户端)调用本机的一个 python 的进程(作为服务端)执行某个函数,是不是可以用 UNIX Domain Socket 进行通信?那么通常这种调用方式是使用什么方式完成调用呢?我想到了一个类似于 JsonRpc 的方式,即将客户端调用的方法名,参数等序列化为一个 json 字节流,服务端反序列化,然后执行相应的方法,再将结果返回给客户端。请问是否可行?

    6 条回复    2021-01-14 02:25:05 +08:00
    ysc3839
        1
    ysc3839  
       2021-01-13 22:03:16 +08:00
    主要应用场景是跨进程通信
    agagega
        2
    agagega  
       2021-01-13 23:04:40 +08:00
    Nginx 和 PHP-FPM 就可以这么干
    aheadlead
        3
    aheadlead  
       2021-01-13 23:07:57 +08:00
    android 应用打 log 时,是通过 unix domain socket 写到 logd 进程里的。
    MeteorCat
        4
    MeteorCat  
       2021-01-13 23:14:32 +08:00 via Android
    单机效率 /dev/shm 创建 server.sock,不走 lo 环流
    ETiV
        5
    ETiV  
       2021-01-14 02:07:38 +08:00 via iPhone
    正文内容和标题在问的有出入,我回答下标题的内容吧

    一、权限隔离
    unix socket 因为建立在本地路径,所以可以配置 owner 、group 、other 的权限( chmod 0755 那些),来限制其他账户的访问。典型的就是 docker daemon,监听在了本地 socket 上,并且只给 docker 组访问,这样只有在 docker 用户组里的账号才有权限去调 docker API 。
    所以也从来不要将 docker daemon 明文地监听在 TCP 端口上。

    二、高并发的反向代理
    TCP 访问某个端口,需要在本机高位端口随机开一个再建立连接,而端口号的个数是有限制的(即便可以复用)。反向代理到本机路径下的 unix socket 可以避免此类问题,只要将可打开的文件描述符开够即可。
    msg7086
        6
    msg7086  
       2021-01-14 02:25:05 +08:00
    简单来解释就是一个效率更高、更安全的 TCP/UDP 端口。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   951 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:42 · PVG 04:42 · LAX 12:42 · JFK 15:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.