让我联想到了前段时间看到的,在西安开价12k想招2年以上c++开发结果招不到人来知乎吐槽的帖子了
事实证明西安的互联网开发能力确实很差啊
并发能到百万级别吗?稍微多砸点钱也搞定了吧
多写两句免得被人认为是在说风凉话
正常市民查阅一次健康码3s不过分吧,也不算很慢,可以接受的程度,可以提前打开
我们去掉客户端的延迟,给服务器留出1s的时间, 800万市民,同一时间姑且认为有1/10的人在同时刷码,那么大概是80万的并发,即给出99.9% rt = 1000ms的技术指标要求
单个16c32g阿里云ngx主机差不多可以稳定支持10万级别的反向代理,也就是说只需要8反向代理主机就可以了
健康码和核酸信息没有强即时性要求,检测结果更新无论是走Kafka还是RabbitMq同步到缓存都可以,这里不是重点
中间加一层Redis集群,使用哈希桶,800万的缓存数据,大概需要16的节点,平均每个Redis 50万左右Key,轻轻松松
客户端请求上来直接Redis拿值返回,典型的多读少些高并发浅链路的OLTP场景,数据库都可以省了,接入层用Spring都杀鸡用牛刀了,直接Nodejs撸个express服务器,单台16c32g抗5万并发没有问题
加上负载均衡和消费队列,60-70台服务器就可以抗住,我们打出60%的负载余量,上100台服务器,也就是一个中型互联网公司的规模。
7月底,8月初,南京大规模控制,核酸检测,那是有庞大的科技+财力+地方管理能力做支撑。
上海精准防疫,还是依靠科技+财力+地方管理能力。
但,抛开几个区域和城市之后,其他地方,就不容易评估了。
同样,经济文化发展等,也是类似。这才是今后发展、治理的重点和难点。
无论是西安、大连、哈尔滨、石家庄、南京、扬州这些,都暴露出来二三线城市防疫上”精准性“问题还是很大。
北上广深虽然也时常出现散发疫情,但从来没有发展到这种程度的。
还是那句话,精准防控能搞就搞,搞不定的话就封一段时间,然后趁着疫情缓和的时候查漏补缺,下次再试。
重点是,没有疫情的时候不能松懈,而是要查漏补缺,居安思危。
要开发一个软件,预算一个亿,你去办一下,一个月弄完。
要一个软件,给你们公司两千万,你们两周弄完。
包给你个活儿,要一个软件,给你100万,一周弄完。
王老师,有个急活儿,给你10万,但是需要三天弄出来。
小李、小张,我这里有个项目,关乎你们两位的学分,需要今天开发出来,明天上测试,事成之后,一人一千元!
----以上纯属虚构,如有雷同,实属巧合。
是这样的
西安疫情最近确实有严重的趋势,但是政府一直没有提倡在家办公,这也就让很多的公司以一切等政府下令为准一直是让员工来正常上班。
为了避免有感染,于是出了个持48小时核酸证明来上班的政策。
但是在政策实行的第一天周一,一码通崩溃了,查不出来你是不是绿码,也查不出来你是否检测过核酸。
有一些企业采取紧急预案,大家居家办公,别出门了。
还有一些企业例如我司,仍然下铁命令,到岗到位。(我们还是家互联网企业,严格的说只要有电脑就可以办公)
而之所以他敢下这个命令,是我们公司所在的大厦的防疫措施给的支持,是怎么做的呢?一码通不是打不开嘛,不重要,全员直接进入,前台登记个名字即可,你要实在良心过不去站公司楼前发个誓也行。
这什么概念?你上班就是个概率论问题了。先不说高新区附近就有确诊病历,不少同事甚至是从雁塔区等中高风险区来的,还有的同事小区都有人确诊了,还有的同事收到了短信提醒他是时空伴随者,但是!我们全部都在周一直接进了大厦到岗到位开始办公。
一码通的崩溃,让我这种普通打工族也要崩溃了,我上个班要面临的风险和心理压力太大了。
到了晚上,按照48小时核酸证明要求,我们又要开始做核酸。
核酸的排队有多夸张,我早上拍到了点
https://www.zhihu.com/video/1456652708861714432
一米举例?不存在的,人挨着人,就这,雪上加霜的是一码通还扫不出来,只能拿身份证做,做着做着告诉你网络坏了,核酸做不了了。崩溃不?寒风中等五六个小时才做上核酸的大有人在,为什么大家非得天天来做这个核酸?因为上班要用啊48小时核酸证明。
而且已知现在已经有很多人是做核酸的时候被查出来确诊,那是否意味着排在这个人前后和周围的人都算密接?
这疫情能控住吗?
本来我周末做了核酸检测是阴性后,就想居家的,第一个不给别人添麻烦,第二个不给自己添麻烦。
但是政府不让啊
有的企业老板他就是个混球,只要你政府没下令居家办公,我所有的员工就得来上班。
政府也想的很好,我们为了民生,大家都正常上班,你们把核酸做了就行。
所以在西安就是早上大家扎堆上班,下班大家扎堆做核酸。在这中间还要伴随着有时候能扫出来有时候扫不出来的一码通。
真的是怕我们接触的不够多,一码通的崩溃让很多地方都不查验核酸就放行,就这一天难道不会出现新的感染病例?
我现在依然在高新区的办公楼里上班,前面楼已经陆续有确诊的被拉走了,但我们,依然在上班,甚至有的同事今天到单位才知道自己小区被封了,因为有确诊的,崩溃,真的就崩溃。
这就是西安的防疫现状,真牛。
昨天中午突然接到通知,女儿所在的学校(中学)下午6点封校,所有学生都要离校。当时的想法是马上开车去西安接她,后来一问政策,不行。我一旦去了西安,就回不来了,因为没有48小时核酸检测报告。
我马上问女儿,所幸当天(20日)上午学校集体做了核酸,6小时出结果。我决定让女儿坐高铁回来。她5点离校,去高铁站,以为到了高铁站就够6小时了。没想到到了高铁站怎么也刷不出结果,一直在那里冻了两个小时,直到赶不上末班高铁才放弃。
我想在北站附近给她找个旅馆住一晚,不幸的是,旅馆也要核酸结果。完美闭环。
挨个问了很多旅馆,都不行。没办法找学校,学校网开一面让她回学校宿舍住一晚。
我不懂技术,但我是基层卫生人员,日常经常帮群众处理各种健康码问题,所谓的处理就是把问题上报到几十个qq微信群里,找工程师人工改后台数据库。所以大概知道一点。
我不知道西安是什么情况。但在我看来,如果我们这里遇到西安这种疫情,健康码系统大概率会跟西安一样崩溃。
本省健康码系统运维人员有多少,我不知道。从历次开会培训判断,应该有5-10个人的团队。本市常见维护工程师只有一人,七八个微信群里都是同一个私人微信号在回答问题。无周末无调休。有时候遇到他下班了,就得等第二天。但如果事情特别重要,比如某个监测点几百个样本打不出条码来,他也会紧急加班。我
市里的平台也不太稳定,一周七天总要故障个两三次,每次解决方法也到简单,暂停工作10分钟,重启服务器。偶尔严重问题,就暂停半小时,重启服务器。
目前市平台和省平台的数据不共享,是通过我们这样的基层信息员手工同步。信息员从市平台手工导出一个excel,按省平台格式重新调整,再登录省平台,把excel表导入到省平台上。然后大家就能从微信公众号上看到核酸检测结果了。
但这个省平台也不稳定,每天上午下午下班前,所有单位的信息员都去登陆了省平台上传数据,省平台就会频繁掉线。过了12点,所有单位都下班了,立刻不掉线了。
所以,昨天我看到这个新闻的时候就在想,如果是我们这儿遇到了疫情,我们这套系统能撑住吗?
这套健康码系统和高铁购票系统有点像。平时不忙的时候,服务器多一点少一点无所谓,运维人员多一点少一点无所谓,系统稳不稳定也无所谓。反正又不是不能用。
而且,这类健康码都是政府购买的企业服务。既然是企业,也就要考虑利润,不可能提供冗余服务。利益优先吗。或者说采购合同里提到了要能应对突发事件,但具体突发事件有多大的规模?主管单位没有概念,企业可能有概念,但感觉日常就是这种配置的话成本太高,总觉得遇到了再扩容也来得及。
但很可惜,他们没来得及扩容。
我不懂技术,不知道这个没来得及扩容的技术问题是什么。但是从我目前看到的来说,负责我市业务的这个程序员,但他的权限也仅限于手工改改数据库,重启数据库,他一直在7X24小时工作,应付着全市一千多个检测点的所有问题。
真的遇到了问题,我估计这个人是撑不下来的。不管是技术上还是体力上。
啊对了,还有一点是我觉得最不放心的。
我所知道的大多数地方,健康码的服务都是由当地的his服务商提供的。his软件就是医院里使用的软件,挂号取药传递报告单什么的。这些软件公司都很专业,程序符合医疗政策需求,能够统计抗生素用量什么的。但是,这些公司不是互联网公司。他们的人才储备里,很少有这种互联网高并发业务的处理人员。
所以我们用的平台,才会临近下班的时候就卡住。因为,这类的高并发业务他们真的不熟。
其实我一直有一个疑问,全国各地都有防疫用的健康验证系统,北京叫『健康宝』,上海叫『随申码』,西安叫『一码通』,其他地区有『XX码』,那么,为什么不做一个全国通用的呢?
政策上的原因,经费上的原因呢,咱也不敢多做评论。
我只从技术上来说一说。
做任何一个系统,先定一下需求,不光是功能性需求,也有架构性需求,像『健康宝』『一码通』这样的系统,架构性需求差不多就是这样:
从功能上说,这个系统是单向的数据流动,差不多这样:
运营商 --> 数据采集 --> 数据处理 --> 缓存 --> API --> 客户端
这种单向的数据流动,没有什么逆向的交互,其实就大大简化了问题的复杂性。
但是,要考虑的问题依然很多。
下次,可以那这道题去考一考候选人——怎么构建一个可靠的健康码/一码通?
太神奇了,健康码验核酸结果这种业务,一开始就应该能想到是峰谷量差距极大的应用场景,为什么不一开始就考虑上云?
然后,这种独立单元式数据(任意两条之间的数据基本无交叉依赖),按某些规则分区分片不是起码的吗?那就算崩,一个区而已。为什么会突然全城一起崩?如果真这么干了还全崩,只能是机房级别的问题,例如说全机房掉电或者掉网——但这种故障没理由需要几个小时才能恢复啊?
最后,就算真的没分区,全放一起,按西安2000万人计算,每个人的数据平均1k(就几个状态码+几条核酸结果+几个时间戳而言,多到离谱了,精细设计一下,100字节可能都够用),一共也才20G数据——单服务器搞个纯内存数据库都能顶得住。对于这种写少多读的模型,都不用玩什么分布式集群了,直接双写单读甚至四写单读就完事了。
所以,前端业务上云,随便平行扩展,后面的数据全在内存里——这玩意是怎么顶不住这么点流量还全崩的?
这事闹大了,居然崩溃了一天。
早上上班崩溃,晚上下班居然还在崩溃。
官方建议这样做
在全员核酸检测的特殊时期,为减轻系统压力,建议广大市民非必要不展码、亮码,在出现系统卡顿时,请耐心等待,尽量避免反复刷新。
非必要不展码,不亮码。。可以。。