0
点赞
收藏
分享

微信扫一扫

Dapr 1.7 之 Unix Domain socket 他来了

mm_tang 2022-09-05 阅读 40
Unix Domain socket

A UNIX socket is an inter-process communication mechanism that allows bidirectional data exchange between processes running on the same machine.

Unix Domain Socket(后面统一简称 UDS)是在socket的框架上发展出一种IPC(inter-process communication)机制。对于本地的进程间通信,Unix Domain socket 比TCP / IP环回连接更安全,更有效。 使用起来和传统的 socket 非常的相似。 区别点主要有两个地方需要关注。

第一,在创建 socket 的时候,普通的 socket 第一个参数 family 为 AF_INET, 而 UDS 指定为 AF_UNIX 即可。

第二,Server 的标识不再是 ip 和 端口,而是一个路径,例如 /dev/shm/fpm-cgi.sock,其实在平时我们使用 UDS 并不一定需要去写一段代码,很多应用程序都支持在本机网络 IO 的时候配置。

在k8s 上通过共享卷来实现的: ​​https://kubernetes.io/zh/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/​​​,这样你就好理解Dapr 的配置参数 dapr.io/unix-domain-socket-path。相关的Issue 可以参考 ​​https://github.com/dapr/dapr/issues/4309​​。

Dapr 1.7 版本带来了UDS的支持,​​现在,您可以在使用注释​​  dapr.io/unix-domain-socket-path 调用 Dapr sidecar 时将 Unix Domain Sockets 与 Kubernetes(以及自托管)一起使用,以提高吞吐量并降低延迟。

Dapr 对 UDS 支持的平台目前是Linux,还不支持Windows(Unix-domain sockets have long been a feature of most Unix platforms, and are now supported in Windows 10 and Windows Server 2019) ,Dapr 1.8 版本已经安排支持了,正在开发中,具体参见Issue: ​​https://github.com/dapr/dapr/issues/4128​​。




举报

相关推荐

0 条评论