西安「一码通」两次崩溃的背后_风闻
挪威TALK-挪威TALK官方账号-追求基本的道德与健全的常识2022-01-07 14:31
昨天到今天,知乎有一个很火热的话题,在热榜前三,是关于西安「一码通」的。
疫情发展到今天,有两个码大家必须要知道,杭州健康码,全国首创,西安一码通,全国知名度最高。
我们都知道,西安「一码通」在这波疫情中,崩溃了两次,第一次崩溃,说修复了,结果第二次又崩溃。直接让西安某位局长在新闻发布会说,大家非必要不亮码,但这一圈走下来,大家普遍发现,情况是完全相反的:
「必要时码不亮。」
知乎上很多技术流的网友对西安健康码崩溃产生了极大好奇,因为这非常罕见,而且崩溃两次,是什么原因导致的呢?官方当然解释了,是流量过大。
但这和没解释是一样的,因为按理说,在设计时就应该考虑到这座城市的人口以及疫情爆发的情况,而且西安人口并不算顶格层级,上海广州深圳拉一个出来,人口量级都不在西安之下,健康码也没崩溃,国务院的健康码管全国人口,也没崩溃。
于是,在大家的讨论中,一篇很早之前的报道,被网友翻出来了。
这是一篇热烈介绍健康码背后团队辛苦科研攻关,全力保障科学防疫的文章,其中,着重介绍了西安健康码团队昼夜不停,攻克「图片压缩」这一技术难关的部分。
相关文字如下。
「由于系统群体规模和访问规模的特殊性,每一行代码、每一张图片、每一个技术文档都反复核准,优化再优化,精益求精。为确保系统运行更高效,他们将一张图片从1MB压缩到500KB,再从500KB优化到100KB。
这样的工作看似简单,却蕴含着高技术含量,他们连续两天两夜守在电脑前,终于攻下难关。
在不断的优化过程中,“一码通”平台形成了A\B\C三个主从备环境的基本框架,能够满足在各种突发情况下,实现快速响应与切换高可用环境。
一个又一个看似微不足道的改进,最终构建起“一码通”平台整体的稳定、高效运行。」
像我们这种不太懂技术的人,初看并不会关注细节,但无疑会被文章感染,所以说这是一篇文宣水平相当高超的文章。
你看,首先是用了排比句,连续三个「每一」一下子就把气势支棱起来了。
这充分说明了技术团队的细心和严苛态度,与后面的「优化再优化、精益求精」可谓是相辅相成。
然后,跳过具体事情,你又看到了两天两夜、守在电脑前之类的语句,敬佩之心油然而生,这是什么干劲,这是什么觉悟,感谢他们,替大家负重前行,最后,皇天不负有心人,难关终于被攻破,皆大欢喜。
用知乎一位网友的话来说,如果没有这波疫情,你好我好大家好,技术团队好领导好文宣好,但崩了两次,太背了,于是大家开始看重点看事件了。
结果发现,两天两夜守在电脑面前攻克的难关是什么呢?
「将一张图片从1MB压缩到500KB,再从500KB优化到100KB。」
好家伙,我恍然大悟,虽然我不太通技术,但图片这玩意我熟啊,天天打交道,而且我相信喜欢修图发朋友圈的人,肯定也熟。
我几乎一瞬间就在脑子里形成了几种方案。比如说,据我所知,手机上有个叫做截屏的功能,你把1M的高清大图下载下来,然后只要用手机截个屏,很快就能压缩一大半,当然,这未必能达到100KB。
但又据我所知,有一个叫做微信的APP,如果你经常用就会知道,对话框中有一个截图功能,打开图片,直接截个图,大小瞬间下去三分之二。
如果还是不行,这时候就要启动相对比较高端的技术了。
有一个中国很知名的软件,叫美图秀秀,你把图片弄进去,然后可以直接调节尺寸大小,根据你的需求输出图片,压缩十分之一完全不在话下。
当然了,如果还搞不定的话,那就祭出终极大招,启用一个叫photoshop的软件,听名字就很专业,方法是一样的,图片拉进去,直接进行压缩就可以,别说十分之一,双倍我都能给你做出来。
并且,以上办法,耗时应该不超过十分钟,加上拉屎摸鱼,应该不超过半个小时,所以我就想不通了:
「把图片大小压缩十分之一需要守在电脑面前两天两夜吗?他们守在电脑面前干嘛?」
这个时候可能就会有人跳出来骂我了,人家的图片是要用来传输的,而且要在小程序上显示出来,你好意思用单纯的压图来对比吗?说得对,毕竟我不太懂,如果考虑到要还要写代码之类的活儿,大概不止这点时间。
知乎有位大佬@DBlinary用他自己的方法试了一下,而且还假定自己使用第三方库,都自己来,最后他把全过程都展示了出来。
「结果实现了6.25%的压缩率。」
也就是说,1M的图片可以直接压缩到64K,整个用时多少呢?
「看问题+写回答+写代码」,差不多中午一个半小时时间。
*知乎@DBlinary
大家普遍都很好奇,个把小时就能搞定的是,为什么守在电脑面前两天两夜干什么?于是有人顺着这个思路提出了质疑,难道他们折腾的不只是图片的事儿,还有传输的事儿。
按照这个思路:
「西安一码通的二维码生产,可能是在服务器端直接生产图片,然后传输到所有人的手机终端,所以才会量稍微大起来就崩溃。」
此言一出,惊诧众人,因为这是一个空前绝后的设计思路,有人说,如果真是按照这个方法去设计的话:
「技术负责人应该要拿去祭天。」
因为二维码本质上是一串字符,而字符的大小能有多大,和图片相比完全不值一提,别说100KB,1K都绰绰有余。
所以几乎所有的二维码生成,都是服务器收到请求之后,下发一串字符到你的手机终端,再在本地生成二维码,这是最省时省力省流量的办法。
而如果是直接在服务器生成二维码图片,再传下来,这就非常恐怖了,图片的大小,完全不是字符可以比的,按理说应该没人会选择这种思路。
但问题是一码通崩溃了两次,产生这种怀疑也不是没有道理。
「有人信了,真的去扒了一码通小程序的代码。」
*@知乎用户xv4Ddk
最后发现,还是在终端生成的二维码图片,并没有出现在服务器端生成图片然后再下发这么离谱的事儿。
松了口气,技术负责人不用拿去祭天了。
但问题依然没有解决,守了两天两夜去压缩图片,究竟压缩的是哪里的图片呢?如果不是二维码,应该就是上下其它展示栏中的图片了。
广大网友在这个问题上怀着一颗死磕到底的心,不只疲倦地找答案。
知乎网友@养猫的哈士奇去扒拉了西安一码通小程序展示页上的图片,严重怀疑技术团队压缩两天两夜,其实是在压缩这里面的图片,抓包了一下,结果如下。
*知乎@养猫的哈士奇
你看最下面这一行,「快讯」这两个字的图片,居然有87KB 大小。而这张图是哪里的呢?你打开西安一码通就知道,是新闻消息的配图。
「就这个东西,居然要这么大。」
这是什么清奇的设计思路?根据需求,像健康码这类小程序,最最最优先级的需求,应该就是亮码,除此之外,是核酸录入信息和疫苗登记信息。其它乱七八糟的什么咨询之类,应该都处于更次要的位置。
而一张咨询图就干上了87kB的设计思路,在很多人看来,就像是你要设计一台电脑但大量的资金都投入到了装电脑的书包的研发,电脑设计出来,卡得要死,卖一万,其实包的价值就达到了八千。
不过这类图片,只有第一次使用时才会下载,之后就缓存在本地了,再之后打开,都是从本地提取,所以也不占宽带,那么最后的问题还是指向了小程序本身,包括设计和运维等等。
「而这就是一个玄学问题了,只有局中人知道。」
那么谁是局中人呢?我很好奇这个问题,于是去查了一下。
在西安的朋友应该都知道,西安一码通和陕西健康码数据是不互通的,有媒体报道过这件事儿,一位住在咸阳市的网友,在西咸新区做了核酸检测,又在家中小区做了两轮核酸,但结果在西安一码通上仍然是黄码。
原因是,西安一码通和咸阳市使用的陕西健康码数据并不互通,独立为两套系统,你是咸阳市人,在咸阳做了核酸检测,数据并没有办法同步到西安一码通。
其实早在2020年10月,国务院督查期间,也发现了这个问题,督察组当时给出了反馈:
「西安市不认可其他地区的健康码、不能做到“一码通”,陕西健康码和西安一码通“两码”并存,给群众生活带来不便。」
尽管督察组已经反馈,这个问题却一直存续到了这一轮疫情爆发。
与之相对应的是,虽然在广东地区也存在粤康码、穗康码之类的省级和市级健康码,但它们的数据是联通的,早在2020年3月份,穗康码已经与粤康码实现互认。
群众反映,督察组反馈,这个问题却一直拖着,拖到了疫情,于是我很好奇西安一码通背后的开发商究竟有多强悍。
这并不难查。
因为有陕西本地媒体报道了,「一码通」是由西安大数据局牵头,中国电信西安分公司开发部署的,也就是说:
「西安一码通的开发商是中国电信西安分公司。」
其实这没有问题,一码通作为疫情期间的居民生活基础设施,由相关政府部门牵头砸钱,国企承接,非常正常,最后做出来,免费给大家用,又能便于疫情管理,自然是好事。
但接下来发生的事情,就非常有意思了。
记得我在大学辅修时,浅显地了解过一部法律,叫《招投标法》,依稀记得其中的一定规定,但不确定,于是又去查了,查到有这么一条条款:
「中标人应当按照合同约定履行义务,完成中标项目。中标人不得向他人转让中标项目,也不得将中标项目肢解后分别向他人转让。
中标人按照合同约定或者经招标人同意,可以将中标项目的部分非主体、非关键性工作分包给他人完成。接受分包的人应当具备相应的资格条件,并不得再次分包。」
*招投标法
而西安分公司在拿下西安一码通的项目之后,是怎么做的呢?我在采招网上查到了不下于五个该项目的分包采购公示。
开发是一家公司——以我浅显的了解,这应该不是非关键性工作部分吧,至于为什么这么认为,朋友们,耐心往下看。
可视化工程是一家公司。
码引擎项目是一家公司。
安全风控是一家公司。
短信服务是一家公司,这可是中国电信的甲方啊。
我查到的短信采购项目中标金额是200万,按照群发短信也许就一分钱的成本,这一波是要准备给一两亿的人群发,确实很豪。
以上,就是我找到的几个一码通分包招标公示,仔细读完,你会发现是非常明显的中标再分包的操作。
「西安电信拿下一码通项目,随后又将这个项目肢解成各个子项目,再分包给其它公司做。」
而如果你读得仔细的话,你会发现我标红的几张图里,都显示,上述几个项目均为单一来源采购,原因则是:
「用户指定。」
这就更有意思了,按照字面意思理解,就是我拿到了一个项目,指定交给你开发,招投标看起来就像是走了一个过场。
当然了,我并不是专业人士,不过相关部门有专门针对单一采购来源的审批程序、适用范围和规定,非常详细,大家感兴趣的话,可以去查查,然后再对比一下这篇文章的内容。
20年结束,21年到来,一年后,11月26日,在政府采购信息公示上,又看到了一码通的招标公示,但非常奇怪的是,这一次该项目的牵头人:
「变成了西安科技局。」
还是一码通的开发,而牵头人变了,这说明投钱的人也变了,中标公司也变了,但问题是,一码通开发不是已经在去年做完了吗?一个小程序而已,犯的着开发两次吗?
原因可能是20年开发的那一套被停止使用了,还有一个原因是,20年开发的那一套没有停止使用,而科技局的这一次开发,是独立测试?亦或是作为补充。
当然这是我的猜测,这其中的原因,相比也不是能在网上查就可以查得到的,我只是有一些疑问而已。
招标公示后,紧接着在12月24日,也就是一个月之后,我们又看到了熟悉的身影,还是同一家公司,就是去年开发一码通的那家公司,还是熟悉的单一来源采购原因。
其上备注:
「系统为原厂家建设,需要使用不可替代的专利技术进行运维。」
对此,我咨询了一些技术朋友,得到的答复是,健康码开发能有什么难题?这还是我优化了之后的客气话。
也就是说,预算又给了这家公司。
至此,一个健康码的小程序,把两个政府技术管理单位囊括其中作为甲方,把当地国企也纳入其中,集聚了超过5家分包技术公司,光短信服务就撒出去了200万(整个项目耗资多少未知),最后,在疫情来临的时候:
「还是崩了。」
当然,我也还是没找出崩的原因,即使把分包公司都查出来了,但我相信没人会觉得是自己的原因。
然后回到文章开头,你再细细品读一遍,他们是如何介绍自己攻克技术难关的:将一张图片从1MB压缩到500KB,再从500KB优化到100KB。这样的工作看似简单,却蕴含着高技术含量,他们连续两天两夜守在电脑前,终于攻下难关……
我又想起了南京疫情时,在网上流传得特别火的一篇文章标题:
「江苏省长再赴南京毒战。」
有网友查了一下:
「江苏省府到南京市府,打个车12分钟。」