hujm2023
hujm2023
你的四层LB跟你的后端服务建立连接之后,PP包只会发一次,而且是在正式数据包之前。 不管是建立连接后马上给你发一个PP包,还是等有正式数据包之后连同 PP包+正式数据包 一起转发,在gnet实现中,你只能在`OnTraffic`中去解析,因为即使建连之后马上发一个PP包,`OnOpen`也无法读到。 所以问题就变成了,怎么在`OnTraffic`中先解析PP包(一次),然后正常处理正式数据包。 下面的实现比较丑,但能解决问题。 ```go type MyConnContext struct { parsed bool realRemoteAddress string } func (s *DemoServer) OnTraffic(c gnet.Conn) gnet.Action { conn := c.Context().(*MyConnContext) for { if !conn.parsed...
有性能瓶颈,我也确实使用了多个client来解决。 正如 @qjpcpu 所说,我的场景就是类似于proxy。一方面,作为client,我会跟非常多的下游建立连接并保持;另一方面,作为server,我接收上游的流量,并将这部分流量通过这些连接下发给下游。 虽然多client能解决问题,但似乎不是最优用法,也没法做到更好的负载均衡。
不是一个场景。我作为server,并不是四层协议。准确来说,我是协议转换场景,上游通过rpc把消息发给我,我转成四层协议,再通过长连接发给下游
请问下这个PR的进度如何?