tcp流量转发到不同的后端

jiangyd · 2022-09-21 18:01:22 · 2619 次点击

楼主这个场景有点像流量镜像,就是把流量拷贝N多份,一份照常给业务服务器。其他的发送给流量审计服务器或者测试环境服务器。

需要有一些注意:

  1. 如果只读取第一个连接的数据回复,其他的不管,有可能会造其他连接的消息积压。 虽然你并不关心其他连接回复的消息,但是应该把回复的消息读出来,比如读出来丢弃掉:io.Copy(io.Discard, otherConn)

  2. 最好不要用 io.MultiWriter(),因为有一个写入出错就会导致 io.MultiWriter() 报错, 因为后端某个连接可以能会异常或断开,这样一个异常,会影响所有的 Writer 写入

#6
更多评论

某个协程io.Copy之后相当于读完了流,另外的协程当然读不到数据了,你需要修改代码,每次读取[]byte,然后再每个连接Write([]byte)

#1

代码如何写啊,不用io.copy了吗

#2