-
-
Notifications
You must be signed in to change notification settings - Fork 10.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
长连接双写问题是什么? #1887
Comments
如果在短时间内配置变化了两次,且采用了通知变化时传输配置的形式,那两次通知的配置一个新一个旧。 抵达客户端后由于线程切换的关系,无法保证一定先update旧的配置,再update新的配置,所以可能会导致配置不正确。 所以apollo没有采用这种方式,而是只推送通知,由客户端从服务端拉取最新配置,这种情况下能保证是幂等的,和推送顺序就无关了。 |
懂了,多谢,那其实如果TCP 长连接只是推送更新通知后再拉取也是没有双写问题的 |
case先关闭了,如还有问题,可以提供更多信息,或进群交流。 |
那为什么不用单线程进行更新呢? |
这篇文章的末尾有写到:
1.为什么不用 TCP 长连接?对网络环境要求高,容易推送失败。且有双写问题。
2.为什么使用 HTTP 长轮询?性能足够,结合 Servlet3 的异步特性,能够维持万级连接(一个客户端只有一个长连接)。直接使用 Servlet 的 HTTP 协议,比单独用 TCP 连接方便。HTTP 请求/响应模式,保证了不会出现双写的情况。最主要还是简单,性能暂时不是瓶颈。
里面写到的双写,没琢磨出来
The text was updated successfully, but these errors were encountered: