跨局域网两台独立机器间Aeron通信及远程连接Media driver咨询
结论
不在同一局域网的两台独立机器完全可以用Aeron实现跨网消息收发,没有必须同局域网的硬性限制。
远程通信配置方法
很多人对Media Driver的连接逻辑有误解,先明确一个核心点:你不需要"远程连接"对方机器上的Media Driver,Media Driver本身是只和本机进程通过共享内存做IPC交互的本地组件,跨机通信是通过Aeron的UDP通道实现的,两端各自对接本机的Media Driver即可,具体配置要点如下:
- 先打通基础网络:两台机器之间路由可达,你选来做Aeron通信的UDP端口要在两端防火墙、云服务器安全组里放通,如果有一端在多层NAT后面,要提前做好对应端口的映射,保证对端发往这个端口的UDP包能顺利到达目标机器。
- 配置Channel URI时直接写对端的公网可达地址就行,举个实际配置例子:如果对端公网IP是
203.0.113.45,约定通信端口用40123,发布端的channel参数直接填aeron:udp?endpoint=203.0.113.45:40123,订阅端配置对应匹配的通道地址就能收到流,不需要额外做Media Driver的远程关联配置。 - 公网链路和局域网环境差异很大,延迟更高、丢包概率更大,要对应调整Aeron的传输参数:适当增大
term-length、window-length的数值,匹配公网链路的带宽延迟积,不然传输吞吐量会被窗口大小限制住;如果链路丢包率高,可以对应调大重传相关的超时、缓存参数,保证传输可靠性。 - 别踩常见的坑:不要试图跨机器挂载、访问远程主机上Media Driver生成的共享内存文件,那部分是给本机Aeron客户端留的本地IPC通道,跨网络访问不了,也完全没必要这么做。
补充提醒:Aeron本身没有内置传输加密能力,如果跨公网传输敏感数据,建议在链路层搭IPsec这类加密隧道,不要直接裸传未加密的业务流量。
内容的提问来源于stack exchange,提问作者Daniel Cardenas
相关产品推荐
相关产品推荐

