V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhoudaiyu
V2EX  ›  问与答

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

  •  
  •   zhoudaiyu ·
    PRO
    · Jan 13, 2021 via iPhone · 2084 views
    This topic created in 1931 days ago, the information mentioned may be changed or developed.

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

    6 replies    2021-01-14 02:25:05 +08:00
    ysc3839
        1
    ysc3839  
       Jan 13, 2021
    主要应用场景是跨进程通信
    agagega
        2
    agagega  
       Jan 13, 2021
    Nginx 和 PHP-FPM 就可以这么干
    aheadlead
        3
    aheadlead  
       Jan 13, 2021
    android 应用打 log 时,是通过 unix domain socket 写到 logd 进程里的。
    MeteorCat
        4
    MeteorCat  
       Jan 13, 2021 via Android
    单机效率 /dev/shm 创建 server.sock,不走 lo 环流
    ETiV
        5
    ETiV  
       Jan 14, 2021 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  
       Jan 14, 2021
    简单来解释就是一个效率更高、更安全的 TCP/UDP 端口。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1059 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 18:50 · PVG 02:50 · LAX 11:50 · JFK 14:50
    ♥ Do have faith in what you're doing.