当web socket 通过load balancer和逻辑处理的服务器连接的时候,
是LB 把web scoket 的connection 通过一定router 规则发送给逻辑处理的服务器(clinet 用一个web socket 连接server)
还是client 和LB 建立一个Web socket, 然后LB和服务器再建立一个web socket 的连接呢
如果是第一种, 那么是否意味着如果web socket connection 丢失, client 或者server 端会主动重新init 一个新的web socket connection, 如果是, 那么是哪一端发起新的连接
如果是第二种(两个web socket connection), XX means 连接丢失, 又是哪一端发起新的连接
a. client ----LB --XX–server
b. client --XX–LB ----server
logic
2
都不是。
从概念上,你可以吧“通过 LB”这一块省略掉。用户的app和websocket server通过 websocket connection 想连,两者互相知道对方的 IP address 和 TCP Port,直接沟通。实践当中,这个链接实际上是经过 LB/Gateway 中转的,因为服务器内部的IP address 不会直接暴露在互联网上,会用 gateway public IP 中转。
中转使用的proxy service吧, 但是这种中转是同一个websocket吗, 还是两个或者多个websocket
或者是proxy service 和actual logic server 通信用的是RPC call呢?
logic
4
LB/Gateway 就是你说的这个 proxy service,实现上就是 Nginx 或者 Apache。
可以中转多个 websocket。
从 Application 层面上,websocket server 和用户手机 app 是保持一个 websocket connection,这个 LB/Gateway/Proxy 会把 websocket server 的 public IP address 翻译成 private ip address,这样信息就能发到 websocket server 了。
这里有两个概念,一个是 websocket connection,另一个是 public/private IP。
再强调一下,概念上,你可以认为用户和 websocket server 是直接链接的。中专什么的都是实现细节。