昨晚十一点四十七分,我在四十七台云手机的后台,看同一段同步日志刷了三百次。
同一行。第 12 台到第 47 台,全部卡在 sync_delta=0,但状态显示「已同步」。我盯着那行看了大概四分钟,倒了一杯水,回来还在。
这不是第一次了。
上周三,运维的老周给我演示他那套方案。他打开一个网页,左边一列云机编号,01 到 47,右边一列时间戳。他点了「全量同步」,屏幕上出现四十七根进度条。三十秒后,四十六根变绿,第 23 台还是灰的。
老周说:「它又在思考人生。」
他说这话的时候没有笑。我知道他习惯了。第 23 台是那批机器里最早的一台,配置低,内存 2G,同步靠的是一个叫「增量拉取」的接口,接口超时设的是 15 秒。手动点重试,就成了。
四十七台里有一台,不听话。你没法当它不存在。
关于云手机群控同步,我现在的理解是:它根本不「同步」。它是一堆「异步」凑出来的错觉。每台机器各自执行,各自回执,控制端收到回执就点亮绿灯。绿灯只说明消息送到了,不说明状态一致。
这是个很难向人解释的问题。我试过用 wwe亚洲第一站永久飘雪影院 那篇文章里的比喻讲给朋友听:像一百个人同时抄同一份作业,最后一个交的人决定老师看到的内容。朋友说,那老师不会发现吗。我说会。但发现的时候,作业已经交了。
所以真正要问的,不是「怎么同步」。是「谁说了算」。
今天凌晨我又试了一次。把主控端的时间基准从本机时间改到一台固定的授时云机上,47 台全部重新绑定。结果第 23 台好了,第 9 台开始漂移。漂了 1.4 秒。1.4 秒不长,但对一个每 800 毫秒上报一次状态的系统来说,够乱两轮。
我把它单独隔离出来,用 7766.5577yy 那个脚本做了一次慢速对账。跑完 8300 条记录,差 3 条。三条都是同一个时间窗口内的,同一个用户 ID。我把日志翻出来,看了二十分钟,没看出是系统的问题还是我的假设错了。
我承认,我现在不确定「同步」这个词还能不能用。
有个观点。可能不太受欢迎:云手机群控同步,最不可信的部分,恰恰是那个「同步成功」的状态显示。 真正的同步应该允许「不确定」——状态不明就该说状态不明,而不是先点亮绿灯再慢慢补。你去看任何一家卖群控方案的官网,都在讲能控多少台、延迟多低、支持多少脚本,没有人把「未确认」三个字放在首页。
老周不同意。他说客户要的就是绿灯,你要给一台机器显示「状态不明」,第二天就被换掉了。他说的对。但我不打算改我的判断。
下午三点,我把 47 台重新拆成三个批次,每批 15 台左右,中间留 5 秒间隔。今天是本周第 14 次改动。写到这里的时候,后台还在跑,第 23 台这次正常。第 9 台没有。
我在等它自己停。也在想,是不是我把问题问错了方向。
顺便留一条别人给我的东西,我没细看,但地址在:51.tv永久登录地址。哪天有空,想拿它对照一下不同实现里「回执」到底是怎么定义的。
—— 问题仍未解决。