nothingistrue
2022-12-29 09:45:48 +08:00
这玩意,只有内部技术人员才能给出真正的回复。
这种同步,通常来说都是一端发布变更事件(消息),多端消费的方式,需要消息中间件支持上述模式。同步周期,取决于消费端的消费周期。消费的时候,拉取方式跟推送方式都可行,纯推送方式很难处理消费乱序问题,纯拉取方式对消息中间件有极大的性能冲击。这里更可能采取的是推送加拉取混合模式,主处理仍然是拉取,但拉取间隔不是定时轮询,而是仅在接受到远端的推送的时候再去拉取。简单得说,就是推送但只推送“有新内容”而不推送具体的内容,然后由被推送端再主动拉取新内容。如果是这个模式,那么同步策略就是推送。
但是,推送,并不是完全实时的,它要收到客户端的网络环境的影响。理想情况下,客户端永远跟服务器端连接着,那就是实时推送。但实际情况下,推送的间隔完全是不可控的,因为客户端并不会永远跟服务器连接着。Apple 以及标准 Android 推送,为了照顾电池,手机跟推送服务器的连接,不会无脑断开就重连,而是会根据手机电池、网络情况、心跳间隔等自动判断是否要重连,意味着你的手机有可能跟推送服务器断开连接很长时间后手机仍然不去重连。这个间隔不可控,但通常也不会超过半个小时。你这个超过 10 天的情况,应该是应用的 BUG ,或者消息中间件挂了。