背景

西安一码通“崩”过2次,网上“声讨”声一片,这可能是个综合性问题。单纯从技术角度来说,可见技术在关键时刻的作用,作为同行,个人深感压力巨大,责任巨大。

截止博客发表日期,网上关于为什么会“崩溃”的解释很多,其中有一篇汇集了众多“技术大咖”的讨论结果,就个人浅见,这些讨论恨不得把所有的应对大数据、高流量的技术都加进去。

不妨带着你们,单纯从技术视角,一步一步来“猜测”这个二维码背后的故事。这里会持续更新,看看我们最终能了解到什么层面。

结论

不妨用平和的心态从技术视角来一步一步了解一码通。

我的一码通

使用“草料二维码”扫描【我的一码通】后,解析出来的是个登录界面:

西安一码通哪里研发的(从技术视角看西安一码通)(1)

网址如下:

https://data.xa.gov.cn/ptrace/view/login.html? code=902068esc6a7cde2dfa2979d731c3544b04cc1c516b0c04 dfpdff0ac6237ss30995b7f29fa2de3e3fc14a3

网址信息

从网址可以得到以下信息:

1) 二维码信息

二维码表包含的信息做了安全防护,我们访问后的链接是:防疫人员的登录界面。

https://data.xa.gov.cn/ptrace/view/login.html

毫无疑问,背后做了【认证和鉴权】。这个界面网址.cn结尾,表明政府部门,从网页下方可看到具体部门。

可以推测:在【认证】和【鉴权】模块,需要有一个【防疫监督员】的角色。

试想一下,那么多核酸监测点,每个采集核酸“拭子”的“点位”都需要分配一个【防疫监督员】的账号,光是账号分配管理,就是个“艰巨”的工作。

2)code参数

code=902168esc6a7cde2dffda2979d73fdac35554b04cc1c516b0c04dfpdff0ac6237ss30995b7f29fa2de3e3fc14a0

PS: code已做部分修改

后台通过这个code参数,应该可以解析“我”的这些信息:

idCard(gender、birthDay、age)、name

打开二维码的时候的位置信息(经纬度)

当前“亮码”的时间

认真看一下这个code,前面是数字,这个数字不知道是否有特殊的含义,

【902168】,不过从设计角度考虑,这个code是应该有一定的【编写规则的】,通过code可能会允许很直白的看到一些可以公示出来的一些信息。不妨猜测一下,这个code是一个序号,笔者多次扫描,发现未发生变化,可见是个固定的值,具体含义暂不清楚。

3)参与方多

每个人的一码通数据,最终要到上一级部门、各市的数据会到省、到国家,如果可能的话,部分数据可能还会和国际接轨(个人推测)

从技术角度来看,涉及部门多,单位多意味着数据交互方多。一旦交互方面比较多,会极大增加沟通成本。

举个简单的例子:

公司:A

部门1-市级:G1

部门2-省级:G2

部门3-国家级 G3

公司:B

公司A有一个个自研产品,内部迭代到了v3.5,除了第三方的SDK之外,不涉及太多和三方的对接,这样的产品单纯从和外界互动的角度来衡量“复杂性”是简单很多的;

假如现在A中标需要开发这个【一码通】产品,那么数据流向和互动会复杂一些:

现在需要和G1对接,部分数据要从G1获取;然后数据->G1 ; G1-> G2,G2-> G3。数据量会从小到大,背后还需要大数据相关部门参与。 由于时间紧迫,A需要和B合作才能快速推出部分功能,数据流向可能会增加: B -> G1。A->B B->A等

大体这样一想,数据流复杂了,业务自然就复杂了,对技术的要求会高很多,具体要求是什么,还有待根据新闻和个人思考进一步剖析。

4)更多网址信息

通过1)二维码信息,我们已经知道【我的一码通】背后是一个网址:

https://data.xa.gov.cn/ptrace/view/login.html

这个网址携带了一个包含【个人信息的】”code“参数,这个参数包含了你相关的信息。

继续"研究下"这个网址,去掉:login.html后会发现进入到了一个功能很多的界面:

https://data.xa.gov.cn/ptrace/view/

西安一码通哪里研发的(从技术视角看西安一码通)(2)

回头来看,【我的电子码】只是众多功能中”微小“的一个。所以,如果你觉得"一码通"是个很"简单"的业务,那可能就有点小瞧了。

5)发现Nginx

继续从网址入手,去掉/view之后发现:

https://data.xa.gov.cn/ptrace/

西安一码通哪里研发的(从技术视角看西安一码通)(3)

这说明背后用到了Nginx,且Nginx的版本是:1.16.1。从官网看最新版本是1.21.5。

可以推测,前端可能使用Nginx部署的,至于是否使用了Nginx来做负载,暂未看出"蛛丝马迹"。

后文

后续如何,请听下回分解……

,