比如有个 go 的进程(作为客户端)调用本机的一个 python 的进程(作为服务端)执行某个函数,是不是可以用 UNIX Domain Socket 进行通信?那么通常这种调用方式是使用什么方式完成调用呢?我想到了一个类似于 JsonRpc 的方式,即将客户端调用的方法名,参数等序列化为一个 json 字节流,服务端反序列化,然后执行相应的方法,再将结果返回给客户端。请问是否可行?
1
ysc3839 2021-01-13 22:03:16 +08:00
主要应用场景是跨进程通信
|
2
agagega 2021-01-13 23:04:40 +08:00
Nginx 和 PHP-FPM 就可以这么干
|
3
aheadlead 2021-01-13 23:07:57 +08:00
android 应用打 log 时,是通过 unix domain socket 写到 logd 进程里的。
|
4
MeteorCat 2021-01-13 23:14:32 +08:00 via Android
单机效率 /dev/shm 创建 server.sock,不走 lo 环流
|
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 可以避免此类问题,只要将可打开的文件描述符开够即可。 |
6
msg7086 2021-01-14 02:25:05 +08:00
简单来解释就是一个效率更高、更安全的 TCP/UDP 端口。
|