寫(xiě)在前面的話:
疫情結(jié)束一年多了,本周起北京的最低氣溫都在零度以上了滑黔,我們度過(guò)了第一個(gè)沒(méi)有口罩的冬天,感謝政府與醫(yī)護(hù)人員三年來(lái)不計(jì)生死的付出环揽,沒(méi)有你們就沒(méi)有我們的健康與安全略荡。
新冠疫情期間,政府提供了各式工具與政策來(lái)保障國(guó)民的安全歉胶,核酸檢測(cè)系統(tǒng)就是其中之一汛兜,我們每日做核酸并上傳數(shù)據(jù)至國(guó)家衛(wèi)健委,國(guó)家衛(wèi)健委根據(jù)匯總的數(shù)據(jù)做出各類防疫決策通今,核酸系統(tǒng)在防疫戰(zhàn)斗中起了重大作用粥谬,本人也有幸曾參與其中肛根。不同的省份或城市使用的核酸系統(tǒng)各不相同,本文所述內(nèi)容(若無(wú)特別說(shuō)明)均指北京核酸檢測(cè)系統(tǒng)漏策,與其他省份或地市的核酸系統(tǒng)無(wú)關(guān)派哲。
為防止泄密及一些合規(guī)問(wèn)題,文中會(huì)把一些敏感信息進(jìn)行加密轉(zhuǎn)換掺喻。例如:假設(shè)某軟件真實(shí)使用的版本是2.0芭届,但本文會(huì)故意說(shuō)成是1.0或者3.0,而數(shù)字方面則會(huì)把20說(shuō)成16或者97這種同一量級(jí)的數(shù)字感耙,不會(huì)出現(xiàn)把80說(shuō)成800萬(wàn)這種明顯存在量級(jí)差的情況喉脖。
現(xiàn)在正文開(kāi)始:
我們都知道,一個(gè)技術(shù)團(tuán)隊(duì)的產(chǎn)出優(yōu)秀與否抑月,通常由技術(shù)水平與管理水平?jīng)Q定树叽,技術(shù)水平的高低決定了代碼質(zhì)量的高低,而管理水平的好壞則決定了技術(shù)團(tuán)隊(duì)能否發(fā)揮出他們的能力谦絮。本文也將從這兩個(gè)方向展開(kāi)來(lái)描述题诵。
先從技術(shù)視角看
核酸檢測(cè)系統(tǒng)本質(zhì)上就是一套管理系統(tǒng),實(shí)現(xiàn)各種數(shù)據(jù)的增刪改查及數(shù)據(jù)統(tǒng)計(jì)分析层皱,很多剛畢業(yè)新手研發(fā)工程師都能設(shè)計(jì)出80%的通用功能性锭,從技術(shù)上看這種系統(tǒng)是非常簡(jiǎn)單的,但是北京的核酸系統(tǒng)動(dòng)不動(dòng)就掛叫胖,導(dǎo)致大家在大街上總得排隊(duì)等待草冈,那么系統(tǒng)故障的原因是什么呢?其實(shí)故障的原因并沒(méi)有你們想象的那么復(fù)雜瓮增,原因僅僅是因?yàn)樵趵猓€上的環(huán)境沒(méi)有任何優(yōu)化,各種低級(jí)錯(cuò)誤相互作用绷跑,其環(huán)境配置堪比小白選手的個(gè)人測(cè)試機(jī)拳恋,系統(tǒng)不掛才怪呢。
北京市核酸檢測(cè)系統(tǒng)由某公司(不是東軟砸捏,后面會(huì)說(shuō)明)使用xxx語(yǔ)言開(kāi)發(fā)谬运,使用了mongodb與redis等數(shù)據(jù)庫(kù),業(yè)務(wù)部署在k8s內(nèi)垦藏,配套的各種輔助系統(tǒng)例如elk梆暖,kafka,prometheus, hadoop等等也都有掂骏,和絕大部分公司的技術(shù)棧都差不多轰驳,還有很多其他中間件和數(shù)據(jù)庫(kù)由于與本文所述的各類故障無(wú)關(guān),故不贅述。
北京核酸系統(tǒng)的主數(shù)據(jù)庫(kù)為mongodb滑废,采用3臺(tái)機(jī)器的副本集模式蝗肪,這是最基礎(chǔ)的用法,雖然未使用分片等技術(shù)蠕趁,但對(duì)于核酸系統(tǒng)來(lái)說(shuō)應(yīng)該也足夠了薛闪,因?yàn)楸本┖怂嵯到y(tǒng)雖然是給2000多萬(wàn)人使用的,但其并發(fā)量的上限卻是固定的俺陋,街上有多少個(gè)核酸亭豁延,最大并發(fā)就是多少,這是理論上的最大并發(fā)腊状,而實(shí)際上诱咏,每個(gè)人做一次核酸需要15-30秒,哪怕我們按10秒計(jì)算缴挖,假設(shè)整個(gè)北京有2萬(wàn)個(gè)核酸檢測(cè)亭袋狞,那么平均并發(fā)量就是2000左右,最極端的情況才會(huì)到2萬(wàn)映屋,也就是所有檢測(cè)亭的工作人員在同一瞬間同時(shí)點(diǎn)擊苟鸯,但這種概率極低,況且就算所有檢測(cè)亭都同時(shí)點(diǎn)擊了棚点,那么最大并發(fā)也只是達(dá)到了核酸亭的數(shù)字早处,并不會(huì)導(dǎo)致很高的并發(fā),所以本系統(tǒng)看著訪問(wèn)量巨大瘫析,但實(shí)際他的負(fù)載是很小的砌梆,2022年年初北京某某區(qū)做過(guò)幾次全員大規(guī)模核酸檢測(cè),當(dāng)時(shí)系統(tǒng)CPU使用率的峰值是7%左右贬循,內(nèi)存是百分之十幾咸包,注意是峰值,不是均值甘有,峰值才7%诉儒,可見(jiàn)系統(tǒng)負(fù)載是多么地低,故資源不足也絕對(duì)不是故障的原因亏掀,各種故障都是代碼和配置造成的,下面就細(xì)說(shuō)一下該系統(tǒng)在使用中存在過(guò)的大量低級(jí)錯(cuò)誤泛释,大家看看自己的公司是否也存在同樣的錯(cuò)誤滤愕。若有就盡快改正,若沒(méi)有則可以根據(jù)本文來(lái)吸取一些經(jīng)驗(yàn)教訓(xùn)怜校。
首先是基礎(chǔ)配置篇:
1. 系統(tǒng)沒(méi)有任何優(yōu)化间影,有的機(jī)器甚至執(zhí)行ulimit -n看見(jiàn)的是1024,震驚嗎茄茁?
2. 所有數(shù)據(jù)庫(kù)和中間件的配置參數(shù)和官方源碼里的幾乎一樣魂贬,基本沒(méi)有優(yōu)化巩割。
3. 所有服務(wù)都是手動(dòng)運(yùn)行的,未配置開(kāi)機(jī)自啟付燥,導(dǎo)致只要系統(tǒng)重啟服務(wù)就掛宣谈。
4. 只有k8s內(nèi)有prometheus監(jiān)控了集群一些狀態(tài),其他監(jiān)控一個(gè)沒(méi)有键科,磁盤(pán)滿了也不知道闻丑。
5. 2021年曾發(fā)生過(guò)k8s默認(rèn)的1年期證書(shū)到期未更換的事件,導(dǎo)致了一次大規(guī)模故障勋颖。
6. 部分機(jī)器只利用了20G的系統(tǒng)盤(pán)嗦嗡,2T的數(shù)據(jù)盤(pán)則是閑置狀態(tài),文件系統(tǒng)都還沒(méi)做饭玲。
7. 操作系統(tǒng)沒(méi)有做時(shí)間同步侥祭,每臺(tái)機(jī)器的時(shí)間都不一樣,誤差最大有好幾秒茄厘。
其次卑硫,我們先看主數(shù)據(jù)庫(kù)MongoDB,低級(jí)錯(cuò)誤很多蚕断,我簡(jiǎn)單列幾個(gè):
低級(jí)錯(cuò)誤1:
代碼直連MongoDB的3個(gè)節(jié)點(diǎn)欢伏,無(wú)讀寫(xiě)分離,主庫(kù)理論上承擔(dān)了1/3的讀流量亿乳。
低級(jí)錯(cuò)誤2:
MongoDB中部分表竟然沒(méi)有索引硝拧,曾經(jīng)有個(gè)表在1小時(shí)內(nèi)被全表掃描了上百萬(wàn)次,進(jìn)而導(dǎo)致了整個(gè)數(shù)據(jù)庫(kù)響應(yīng)超時(shí)葛假,業(yè)務(wù)功能全卡死障陶。
低級(jí)錯(cuò)誤3:
數(shù)據(jù)庫(kù)磁盤(pán)是普通機(jī)械盤(pán),并未使用SSD聊训,且從節(jié)點(diǎn)過(guò)少抱究,完全撐不住I/O
低級(jí)錯(cuò)誤4:
MongoDB的配置文件幾乎是官方默認(rèn)的參數(shù),沒(méi)有任何優(yōu)化带斑。
低級(jí)錯(cuò)誤5:
沒(méi)有進(jìn)行合理的分表鼓寺,部分表過(guò)大,雖然有索引勋磕,但在大量訪問(wèn)時(shí)依然影響性能妈候。雖然做核酸的群眾造成的訪問(wèn)量不大,但系統(tǒng)后臺(tái)有大量的報(bào)表計(jì)算任務(wù)挂滓,這些任務(wù)也會(huì)頻繁讀表苦银。
現(xiàn)在,我們?cè)賮?lái)看Redis庫(kù),低級(jí)錯(cuò)誤更多:
低級(jí)錯(cuò)誤1:
部署路徑混亂幔虏,磁盤(pán)上存在以下多種不同的路徑:
/home/work/redis-3.0.0
/home/work/redis-4.0.0
/home/work/redis-5.0.0-cluster
/home/work/redis-6.0.0-cluster
這些路徑都存在纺念,里面都是redis的源代碼,真正使用的版本是以上路徑之一想括,但又不統(tǒng)一陷谱。
啥叫不統(tǒng)一?舉個(gè)例子:3臺(tái)機(jī)器真正使用的路徑分別是:
/home/work/redis-3.0.0/src/redis-server
/home/work/redis-3.0.0/src/redis-server
/home/work/redis-5.0.0-cluster/src/redis-server
這就叫不統(tǒng)一主胧,看懂了嗎叭首?
每臺(tái)機(jī)器都有所有目錄,但實(shí)際使用的版本和路徑竟然不一樣踪栋。
2022年年初的一天晚上焙格,一臺(tái)物理機(jī)因硬件故障導(dǎo)致若干臺(tái)虛擬機(jī)重啟,重啟后值班運(yùn)維反饋redis重啟后數(shù)據(jù)都沒(méi)了夷都,經(jīng)過(guò)排查后才發(fā)現(xiàn)是以上原因造成的眷唉。由于所有進(jìn)程都是在命令行手動(dòng)運(yùn)行的方式啟動(dòng)的,有的是在/root目錄下執(zhí)行/home/work/redis-3.0.0/src/redis-server回車囤官,有的是在/home/work/redis-3.0.0/src/目錄下執(zhí)行./redis-server回車冬阳,所以當(dāng)你執(zhí)行ps aux | grep redis-server時(shí),看見(jiàn)的進(jìn)程名是不同的党饮,帶路徑的還好肝陪,不帶路徑的完全就不知道啟動(dòng)的是哪個(gè)目錄里的哪個(gè)版本了,且服務(wù)未設(shè)置開(kāi)機(jī)自啟刑顺,于是乎氯窍,系統(tǒng)重啟后,值班運(yùn)維發(fā)現(xiàn)未重啟的兩臺(tái)機(jī)器的redis進(jìn)程都是/home/work/redis-3.0.0/src/redis-server蹲堂,于是在重啟的那臺(tái)也執(zhí)行了這個(gè)命令狼讨,最終當(dāng)然就沒(méi)數(shù)據(jù)了,因?yàn)榈谌_(tái)機(jī)器的正確路徑是/home/work/redis-5.0.0-cluster/src/redis-server柒竞,和前兩臺(tái)并不一致政供。事后我們做過(guò)統(tǒng)計(jì),排除那些我們知道的肯定未使用的源代碼版本的目錄朽基,剩余目錄共有8192種組合布隔,運(yùn)維在不知正確路徑的情況下,成功恢復(fù)正確進(jìn)程的概率只有8192分之1踩晶,那天值夜班的是剛畢業(yè)不久的初級(jí)運(yùn)維执泰,你別指望他能一次找對(duì)。
低級(jí)錯(cuò)誤2:
Redis分片功能使用不當(dāng)渡蜻,該系統(tǒng)使用了某技術(shù)方案實(shí)現(xiàn)了分片功能,所以理論上某個(gè)key只會(huì)存在于某一個(gè)分片中,但不知道是什么時(shí)候開(kāi)始茸苇,有些key在多個(gè)分片中都存在了排苍,我猜測(cè)最可能的原因是,從某時(shí)間點(diǎn)開(kāi)始学密,某個(gè)研發(fā)錯(cuò)誤地連接了redis的某個(gè)IP淘衙,并未連接分片的路由IP,導(dǎo)致很多key意外地直接寫(xiě)入了某個(gè)不該寫(xiě)入的分片內(nèi)腻暮,而不是通過(guò)路由的方式進(jìn)入到這個(gè)分片彤守,而若使用路由的方式,則其hash值并不會(huì)落到這個(gè)分片內(nèi)哭靖,于是乎具垫,此版本的代碼會(huì)發(fā)現(xiàn),向redis內(nèi)寫(xiě)數(shù)據(jù)會(huì)成功试幽,但是寫(xiě)庫(kù)成功后筝蚕,網(wǎng)頁(yè)內(nèi)卻顯示不出來(lái),那是因?yàn)閿?shù)據(jù)被寫(xiě)入了錯(cuò)誤的分片铺坞,而通過(guò)路由讀取時(shí)讀的不是這個(gè)分片起宽,所以才讀不到。最后代碼只能把所有分片都連一遍济榨,每個(gè)分片都存一份數(shù)據(jù)坯沪,以上原因是猜的,不一定對(duì)擒滑,只是從現(xiàn)象上來(lái)看是這樣的腐晾。
低級(jí)錯(cuò)誤3:
因錯(cuò)誤2導(dǎo)致刪數(shù)據(jù)時(shí)刪不全,通過(guò)路由分片刪數(shù)據(jù)只會(huì)刪除正確的分片內(nèi)的數(shù)據(jù)橘忱,而由于錯(cuò)誤用法造成的垃圾數(shù)據(jù)則會(huì)被留在其他分片內(nèi)無(wú)法被刪除赴魁,導(dǎo)致redis內(nèi)的垃圾數(shù)據(jù)越堆積越多。
低級(jí)錯(cuò)誤4:
Redis定位不明確钝诚,內(nèi)存型數(shù)據(jù)庫(kù)適用于當(dāng)緩存颖御,而該開(kāi)發(fā)商則錯(cuò)誤地把它當(dāng)成了持久化存儲(chǔ)來(lái)使用,在使用過(guò)程中凝颇,核酸系統(tǒng)要求redis是不能掛的潘拱,一旦redis故障系統(tǒng)將不可用,人為引入了隱患點(diǎn)拧略。
低級(jí)錯(cuò)誤5:
Redis存放的數(shù)據(jù)太混亂芦岂,例如大量二維碼圖片被存到了redis內(nèi),導(dǎo)致內(nèi)存使用率極高垫蛆。
低級(jí)錯(cuò)誤6:
持久化策略未進(jìn)行優(yōu)化禽最,生產(chǎn)環(huán)境使用的是redis的默認(rèn)策略腺怯,即:
save 900 1
save 300 10
save 60 10000
由于redis的寫(xiě)操作很多,巨多川无,天量級(jí)的多呛占,故以上配置導(dǎo)致了主庫(kù)一直在不停地dump內(nèi)存到rdb文件,再加上庫(kù)中有大量垃圾數(shù)據(jù)懦趋,單master處理的數(shù)據(jù)已經(jīng)將近25G晾虑,進(jìn)而導(dǎo)致了主庫(kù)bgsave和從庫(kù)psync的速度極慢。最終效果是從庫(kù)無(wú)法在主庫(kù)下次bgsave之前完成數(shù)據(jù)傳輸仅叫,而主庫(kù)此時(shí)依然在不停地寫(xiě)入帜篇,repl-backlog-size很快耗盡,于是主從同步失敗诫咱,slave重新發(fā)起psync笙隙,循環(huán)往復(fù),從庫(kù)永遠(yuǎn)追不上主庫(kù)遂跟,此時(shí)的redis除了未影響業(yè)務(wù)以外逃沿,基本已經(jīng)千瘡百孔,隱患爆表了幻锁,任何一個(gè)小故障都會(huì)引起災(zāi)難性的后果凯亮。
低級(jí)錯(cuò)誤7:
Redis的存儲(chǔ)也是機(jī)械硬盤(pán),大量的寫(xiě)入導(dǎo)致不停地bgsave哄尔,進(jìn)一步影響了磁盤(pán)IO假消,主庫(kù)落盤(pán)速度很慢,再讀出來(lái)同步給slave也慢岭接。
最后富拗,我們?cè)賮?lái)看k8s篇:
低級(jí)錯(cuò)誤1:
所有的node節(jié)點(diǎn)均使用同一個(gè)nas做為后端存儲(chǔ)(做成了pv),一旦此nas故障鸣戴,所有node/worker節(jié)點(diǎn)將全部不可用啃沪,高可用機(jī)制失效。
低級(jí)錯(cuò)誤2:
做為整個(gè)集群唯一PV的NAS存儲(chǔ)窄锅,好像是普通機(jī)械盤(pán)创千,不是SSD,也可能記錯(cuò)了入偷,我印象中是普通盤(pán)追驴。
低級(jí)錯(cuò)誤3:
所有deployment都向這個(gè)pv內(nèi)寫(xiě)日志,IO向一個(gè)點(diǎn)集結(jié)疏之,不卡死才怪殿雪。
低級(jí)錯(cuò)誤4:
同一條日志寫(xiě)了3份,第一份是stdout锋爪,由于是在pod內(nèi)丙曙,故此份日志最終進(jìn)了上面那個(gè)唯一的PV爸业,第二份日志是寫(xiě)入了“本地磁盤(pán)”,也由于是在pod內(nèi)河泳,所以這里使用的本地磁盤(pán)沃呢,最終依然是上面那個(gè)pv年栓,第三份日志寫(xiě)入了日志kafka內(nèi)拆挥,logstash會(huì)作為消費(fèi)端,將日志kafka內(nèi)的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到ElasticSearch內(nèi)某抓,但是纸兔,該日志kafka使用的磁盤(pán)也是這個(gè)nas,所以否副,同一條日志一共存了3份汉矿,而這3份日志卻全部存儲(chǔ)在了同一個(gè)nas內(nèi)。
低級(jí)錯(cuò)誤5:
這個(gè)其實(shí)不算k8s的备禀,算代碼端的洲拇,具體錯(cuò)誤是,deployment的yaml文件中配置的log級(jí)別不生效曲尸,代碼里寫(xiě)死了debug級(jí)別赋续,無(wú)論deployment的yaml里配了什么,最終都是debug另患,而每一條debug日志都會(huì)被存3份纽乱,這3份又寫(xiě)入了同一個(gè)nas,幾十臺(tái)k8s node節(jié)點(diǎn)又在同時(shí)使用同一個(gè)nas昆箕,你能想到后果嗎鸦列?我猜你想到了。
低級(jí)錯(cuò)誤6:
deployment未配置反親和鹏倘,由于經(jīng)常發(fā)版升級(jí)薯嗤,所以很多服務(wù)經(jīng)常會(huì)跑到同一個(gè)node節(jié)點(diǎn)里,造成了單節(jié)點(diǎn)場(chǎng)景纤泵,雖然未發(fā)生因硬件故障導(dǎo)致所有pod同時(shí)故障的情況骆姐,但這種隱患是一直存在的。
低級(jí)錯(cuò)誤7:
代碼連接statefulset時(shí)夕吻,并未使用service_name.namespace诲锹,而是把所有pod的地址寫(xiě)進(jìn)去,這導(dǎo)致了一旦某個(gè)pod掛了涉馅,服務(wù)就跟著掛了归园,集群擴(kuò)容和縮容也會(huì)影響業(yè)務(wù)服務(wù),每次因資源不足而擴(kuò)容或遷移時(shí)稚矿,都有一堆服務(wù)需要改配置然后重啟庸诱,人為引入了隱患點(diǎn)捻浦。
以上便是os/mongodb/redis/k8s等組件在使用中真實(shí)存在過(guò)的問(wèn)題,還有很多其他低級(jí)錯(cuò)誤桥爽,由于未造成什么影響用戶的故障朱灿,所以本文就不列舉了,根據(jù)以上這些钠四,相信你也能猜到線上環(huán)境是個(gè)什么狀態(tài)盗扒。
也許有人想問(wèn),既然你知道這么多低級(jí)錯(cuò)誤缀去,為什么不處理呢侣灶?答案也很簡(jiǎn)單,這些低級(jí)錯(cuò)誤都是我們?nèi)肼毲熬痛嬖诘穆扑椋肼殨r(shí)的那段時(shí)間正是開(kāi)始頻繁大規(guī)模做全員核酸的時(shí)段褥影,所以這些隱患被一個(gè)個(gè)觸發(fā),我們復(fù)盤(pán)找故障原因的速度一直趕不上故障發(fā)生的速度咏雌,以上所有結(jié)論都是事后復(fù)盤(pán)所得凡怎,當(dāng)時(shí)根本沒(méi)時(shí)間去排查,運(yùn)維團(tuán)隊(duì)已經(jīng)被各種已經(jīng)發(fā)生的P0故障把時(shí)間耗盡了赊抖。
下面我們就以真實(shí)案例復(fù)盤(pán)一下幾次比較大的故障统倒,看看我們從中能學(xué)到什么:
真實(shí)故障一:
2022年年初某天夜里,夜班同事反饋系統(tǒng)大規(guī)模故障熏迹,原因未知檐薯。
經(jīng)排查,故障原因系某物理機(jī)斷電導(dǎo)致注暗,9臺(tái)左右的虛擬機(jī)發(fā)生重啟坛缕,其中大概兩三臺(tái)左右的機(jī)器在重啟后服務(wù)未自啟,都是未配置導(dǎo)致捆昏,其中就包括上面說(shuō)過(guò)的一臺(tái)redis節(jié)點(diǎn)赚楚,于是造成了系統(tǒng)故障,由于當(dāng)時(shí)沒(méi)有什么監(jiān)控骗卜,連redis進(jìn)程沒(méi)了都不知道宠页,最終只能由研發(fā)同事一點(diǎn)點(diǎn)看日志,最終發(fā)現(xiàn)是redis連不上寇仓,進(jìn)程沒(méi)了举户,經(jīng)檢查發(fā)現(xiàn)是因?yàn)檫@臺(tái)機(jī)器重啟了,然后我們又立刻檢查所有其他服務(wù)器防止類似情況發(fā)生遍烦,結(jié)果不查不知道俭嘁,一查嚇一跳,我們驚訝地發(fā)現(xiàn)有9臺(tái)機(jī)器在同一時(shí)間發(fā)生了重啟服猪,隨后運(yùn)維人員聯(lián)系政務(wù)云供填,最終確認(rèn)是物理機(jī)故障導(dǎo)致拐云。
這個(gè)故障暴漏了太多的問(wèn)題,最大的問(wèn)題就是沒(méi)有監(jiān)控和沒(méi)有開(kāi)機(jī)自啟近她,以至發(fā)生故障后根本沒(méi)人知道叉瘩,業(yè)務(wù)方反饋以后技術(shù)團(tuán)隊(duì)才后知后覺(jué)。暴漏的第二個(gè)問(wèn)題就是粘捎,連開(kāi)機(jī)自啟這種最基本的配置都沒(méi)有薇缅,技術(shù)欠缺太多。這次故障雖然是硬件故障導(dǎo)致的晌端,該開(kāi)發(fā)商并非第一責(zé)任人捅暴,但也不表示完全無(wú)責(zé),這么多低級(jí)的錯(cuò)誤咧纠,哪怕少一個(gè),只要讓故障的閉環(huán)不成立泻骤,也不至于發(fā)生影響業(yè)務(wù)的故障漆羔,好在這次故障是發(fā)生在后半夜,大規(guī)模核酸檢測(cè)已停狱掂,只有少量醫(yī)院/機(jī)場(chǎng)等場(chǎng)所在24小時(shí)使用演痒,但也屬于重大的P0級(jí)故障了。不過(guò)呢趋惨,該企業(yè)并未向衛(wèi)健委承認(rèn)錯(cuò)誤鸟顺,而是把責(zé)任完全推給了政務(wù)云丑念,說(shuō)如果你們硬件不掛也不至于這樣溺拱,其實(shí)這種理由是說(shuō)不通的,硬件不可能永遠(yuǎn)正常炕置,質(zhì)量再好也有壞掉的一天兆沙,使用者不應(yīng)指望硬件永遠(yuǎn)不壞欧芽,自己水平菜就是菜,推卸責(zé)任更能說(shuō)明自己菜葛圃,不過(guò)這次故障最終應(yīng)該是政務(wù)云背鍋了千扔,因?yàn)橛屑滤麄兊拇_做的不對(duì),那就是库正,硬件故障后沒(méi)有任何通知與通報(bào)曲楚,我方在人工檢查了所有服務(wù)器后,發(fā)現(xiàn)9臺(tái)機(jī)器在同一個(gè)時(shí)間點(diǎn)重啟褥符,然后才懷疑是硬件問(wèn)題導(dǎo)致龙誊,政務(wù)云后來(lái)也提供了最終受影響的機(jī)器列表,IP地址與我方統(tǒng)計(jì)的完全一致属瓣,這屬于政務(wù)云未盡到監(jiān)控與告知義務(wù)载迄,于是這個(gè)大鍋就背上了讯柔,政務(wù)云有點(diǎn)責(zé)任,但也不至于承擔(dān)100%的責(zé)任护昧,有點(diǎn)冤魂迄。
真實(shí)故障二:
2022年年初某天早上9點(diǎn)左右,北京某區(qū)正在做全員大規(guī)模核酸檢測(cè)惋耙,系統(tǒng)越來(lái)越卡捣炬,直到某刻,系統(tǒng)徹底無(wú)法使用绽榛。
經(jīng)事后排查湿酸,造成此次故障的原因,簡(jiǎn)直是灭美,我先罵會(huì)街推溃,!@##¥&#Y¥&#@届腐。故障由多個(gè)低級(jí)錯(cuò)誤聯(lián)合造成铁坎,其中任何一個(gè)錯(cuò)誤只要不發(fā)生,故障就不會(huì)發(fā)生犁苏,但最終他就是發(fā)生了硬萍。
此次故障的引爆點(diǎn)是redis,當(dāng)時(shí)代碼到redis的連接池的數(shù)量設(shè)置的很低围详,只有8個(gè)還是6個(gè)來(lái)著朴乖,要么是20,記不清了助赞,總之是個(gè)很小的數(shù)字买羞,系統(tǒng)負(fù)載較低時(shí)是沒(méi)什么問(wèn)題的,而一旦使用量上升嫉拐,連接池耗盡哩都,新的TCP連接就將無(wú)法建立,只能等待舊連接斷開(kāi)婉徘,對(duì)外表現(xiàn)就是系統(tǒng)卡頓一直轉(zhuǎn)圈漠嵌。
當(dāng)然了,故障是redis引發(fā)的這個(gè)結(jié)論盖呼,是事后排查和復(fù)盤(pán)時(shí)才知道的儒鹿,當(dāng)時(shí)并不知道,對(duì)于當(dāng)時(shí)的情況几晤,唯一的方法就是擴(kuò)容加pod约炎,擴(kuò)容操作也的確有用,每次擴(kuò)幾個(gè)pod,系統(tǒng)負(fù)載都會(huì)降低一點(diǎn)圾浅,卡頓轉(zhuǎn)圈也會(huì)短暫消失掠手。但是擴(kuò)到最后,系統(tǒng)不但未穩(wěn)定下來(lái)狸捕,最終反而導(dǎo)致徹底宕機(jī)喷鸽,那導(dǎo)致故障的原因到底是什么呢?
其實(shí)前面列低級(jí)錯(cuò)誤列表時(shí)已經(jīng)說(shuō)過(guò)了灸拍,由于業(yè)務(wù)代碼里把日志級(jí)別寫(xiě)死了是debug做祝,當(dāng)pod較少時(shí),產(chǎn)生的日志量未達(dá)到磁盤(pán)IO的上限鸡岗,系統(tǒng)還能運(yùn)行混槐。而當(dāng)pod擴(kuò)容時(shí),產(chǎn)生的日志則成倍地增長(zhǎng)轩性,同一份日志又因代碼缺陷導(dǎo)致記錄了3遍声登,而k8s所有node節(jié)點(diǎn)又同時(shí)使用同一個(gè)nas做pv,于是炮姨,當(dāng)pod數(shù)超過(guò)某個(gè)臨界值時(shí)捌刮,該nas的IO處理能力再也無(wú)法滿足日志的產(chǎn)生量,于是nas的io卡死舒岸,進(jìn)而導(dǎo)致k8s所有node節(jié)點(diǎn)的數(shù)據(jù)盤(pán)卡死,df沒(méi)反應(yīng)知道是啥情況吧? 于是芦圾,整個(gè)k8s集群失去響應(yīng)蛾派,業(yè)務(wù)完全掛掉,于是P0級(jí)故障再次發(fā)生了个少。
我們現(xiàn)在再以上帝視角復(fù)盤(pán)當(dāng)時(shí)的操作洪乍,故障有可能避免嗎?根據(jù)復(fù)盤(pán)結(jié)論來(lái)看夜焦,沒(méi)有任何辦法壳澳,當(dāng)時(shí)是只能擴(kuò)容,不擴(kuò)立刻就掛茫经,擴(kuò)了能撐一會(huì)巷波,撐一會(huì)再掛,所以擴(kuò)容能延后故障的時(shí)間點(diǎn)卸伞,但卻無(wú)法避免故障最終的發(fā)生抹镊。
事后經(jīng)信局問(wèn)責(zé),詢問(wèn)故障的原因荤傲,并表示當(dāng)天的檢測(cè)量低于前幾天的那一輪大規(guī)模檢測(cè)垮耳,而上一輪檢測(cè)那天系統(tǒng)并未掛掉,為什么這次檢測(cè)量變小了反而掛了呢。我不知道最終公司是怎么解釋的终佛,但無(wú)論如何解釋俊嗽,公司給出的理由都是不成立的,因?yàn)榧幢闶堑搅私裉炝逭茫疫@個(gè)當(dāng)時(shí)的親歷者绍豁、親自排查和處理的故障的人,都無(wú)法給出準(zhǔn)確的故障原因豌研,我只能根據(jù)當(dāng)時(shí)服務(wù)器的現(xiàn)象猜測(cè)妹田,大概可能的原因是并發(fā)量破前高造成的,前面我說(shuō)過(guò)鹃共,假設(shè)有2萬(wàn)個(gè)檢測(cè)亭鬼佣,每個(gè)人做核酸耗時(shí)10秒的場(chǎng)景下,理論的平均并發(fā)值是2000霜浴,而實(shí)際中有可能是1000晶衷,也可能是5000,最大是2萬(wàn)阴孟,第一次做全區(qū)大規(guī)模時(shí)晌纫,可能全天的最大并發(fā)并不大,工作人員的點(diǎn)擊操作比較平均永丝,而發(fā)生故障的那天锹漱,很可能就是大家多次在同一時(shí)間點(diǎn)同時(shí)點(diǎn)擊,造成了并發(fā)瞬間升高慕嚷,所以雖然檢測(cè)量變小了哥牍,但并發(fā)卻是升高了的,當(dāng)然了喝检,這個(gè)原因也只是我根據(jù)當(dāng)時(shí)的現(xiàn)象猜測(cè)的嗅辣,不一定準(zhǔn),但感覺(jué)也八九不離十挠说,這就和飛機(jī)失事后沒(méi)有黑匣子佐證的情況下澡谭,工程師只能根據(jù)各種零件的損壞情況來(lái)猜測(cè)原因一樣,最終的結(jié)論無(wú)限于接近真相损俭,但永遠(yuǎn)不等于真相蛙奖。
也許有人想問(wèn),瞬時(shí)并發(fā)升高導(dǎo)致了卡頓撩炊,大家只要不點(diǎn)了外永,系統(tǒng)不就可以一點(diǎn)點(diǎn)恢復(fù)過(guò)來(lái)了嗎?為什么會(huì)出現(xiàn)不停的擴(kuò)容卻不停地掛的場(chǎng)景呢拧咳?是啊伯顶,確實(shí)如此,但為什么它就掛了呢?答案也簡(jiǎn)單祭衩,你想象一下當(dāng)你訪問(wèn)某個(gè)網(wǎng)站打不開(kāi)時(shí)你會(huì)怎樣灶体?相信大家都會(huì)刷新重試吧?所以掐暮,一旦系統(tǒng)開(kāi)始變卡蝎抽,訪問(wèn)量不但不會(huì)降低,反而會(huì)因?yàn)樗腥硕荚谥卦噷?dǎo)致瞬時(shí)并發(fā)繼續(xù)升高路克,每次擴(kuò)容都能承擔(dān)一部分新增的重試請(qǐng)求樟结,但畢竟檢測(cè)亭太多了,擴(kuò)容的量遠(yuǎn)遠(yuǎn)比不上大家點(diǎn)擊的量精算,所以這個(gè)過(guò)程也就變成了不可逆瓢宦,這個(gè)場(chǎng)景和被ddos攻擊很相似。
這次故障后灰羽,該區(qū)再也沒(méi)做全員大規(guī)模核酸檢測(cè)驮履,由于該公司當(dāng)時(shí)還負(fù)責(zé)北京冬奧會(huì)的賽事保障工作,為避免冬奧村受到影響廉嚼,當(dāng)時(shí)的北京副市長(zhǎng)殷勇(2023年升任了市長(zhǎng))做出決策玫镐,把北京市社會(huì)面的核酸檢測(cè)系統(tǒng)臨時(shí)更換為東軟的核酸檢測(cè)系統(tǒng),而該企業(yè)的核酸系統(tǒng)則全力保障冬奧會(huì)怠噪,本是為2000多萬(wàn)人設(shè)計(jì)的系統(tǒng)恐似,最終卻只給了冬奧村的20萬(wàn)人使用,后來(lái)該系統(tǒng)經(jīng)過(guò)半年時(shí)間的不斷改進(jìn)與升級(jí)傍念,解決掉了曾經(jīng)存在過(guò)的大部分隱患蹂喻,但直至2022年12月7日疫情防控全面開(kāi)放,北京的核酸系統(tǒng)也再也沒(méi)有切換回去捂寿,東軟的系統(tǒng)被一直使用到了最后。
真實(shí)故障三:
這個(gè)故障其實(shí)我印象有點(diǎn)模糊了孵运,也是2022年年初的事情秦陋,忘記了是由于數(shù)據(jù)庫(kù)的什么事情,導(dǎo)致了系統(tǒng)特別慢治笨,但是沒(méi)掛驳概,沒(méi)影響用戶。當(dāng)時(shí)CEO不分青紅皂白就要求擴(kuò)容旷赖,運(yùn)維這邊表示肯定不是資源不足造成的顺又,因?yàn)橄到y(tǒng)的使用率并不高,一味地?cái)U(kuò)容沒(méi)意義等孵,且擴(kuò)容操作會(huì)占用運(yùn)維的時(shí)間稚照,導(dǎo)致我們沒(méi)時(shí)間真正去排查錯(cuò)誤,但是CEO強(qiáng)制要求立刻擴(kuò),讓我們找政務(wù)云要機(jī)器果录,當(dāng)時(shí)也是疫情最嚴(yán)重的時(shí)候上枕,所以只要我們申請(qǐng)新機(jī)器政務(wù)云就會(huì)給,至于成本和使用率什么的不在他們的考慮范圍之內(nèi)弱恒,畢竟若是因?yàn)橘Y源不足導(dǎo)致系統(tǒng)掛了辨萍,他們是擔(dān)不起這個(gè)責(zé)任的,所以他們立刻就給騰挪了機(jī)器返弹,我記得他們好像還緊急從其他地方調(diào)了機(jī)器锈玉,因?yàn)楫?dāng)時(shí)的機(jī)房資源幾乎快要耗盡了,我們拿到新機(jī)器后就對(duì)數(shù)據(jù)庫(kù)進(jìn)行了擴(kuò)容义起,而擴(kuò)容完成后拉背,數(shù)據(jù)就開(kāi)始混亂了,故障發(fā)生并扇,那么故障的原因是什么呢去团?
答案也很簡(jiǎn)單,那就是穷蛹,政務(wù)云給的新機(jī)器土陪,系統(tǒng)時(shí)間和北京時(shí)間差了15分鐘左右,不記得是快15分鐘還是慢15分鐘了肴熏,總之就是時(shí)間差異很大鬼雀,這也很好理解,可能是虛擬機(jī)沒(méi)有和硬件時(shí)鐘進(jìn)行同步蛙吏,沒(méi)做這個(gè)確實(shí)不應(yīng)該源哩,但也不算責(zé)任,畢竟配置時(shí)間同步是使用方的事情鸦做,就像你的手表沒(méi)電了励烦,換了電池以后時(shí)間肯定停留在了停電前的那個(gè)時(shí)刻,這時(shí)候你有義務(wù)自己把時(shí)間校對(duì)正確泼诱,而不是讓賣手表的人過(guò)來(lái)給你調(diào)坛掠。而該核酸系統(tǒng)的開(kāi)發(fā)公司,當(dāng)時(shí)自己并未做這個(gè)事情治筒,拿到機(jī)器后屉栓,裝了mongodb后就開(kāi)始將新節(jié)點(diǎn)加入副本集,最終數(shù)據(jù)開(kāi)始大規(guī)乃释啵混亂友多,印象中公司當(dāng)時(shí)臨時(shí)招了很多外包人員,把辦公室所有工位及所有會(huì)議室都坐滿了堤框,很多工位都是一個(gè)位置坐倆人域滥,一堆人24小時(shí)不停地俢數(shù)據(jù)纵柿,數(shù)據(jù)好像錯(cuò)亂了好幾百萬(wàn)條,都需要一點(diǎn)點(diǎn)人工改回來(lái)骗绕。
現(xiàn)在我們復(fù)盤(pán)當(dāng)時(shí)的操作藐窄,如果CEO不盲目地要求亂擴(kuò)容,也不至于發(fā)生后面的故障和數(shù)據(jù)錯(cuò)亂酬土,這個(gè)故障完全就是瞎指揮造成的荆忍,沒(méi)有其他原因。但運(yùn)維這邊也有失誤撤缴,那就是沒(méi)有同步時(shí)間刹枉,不過(guò)當(dāng)時(shí)連監(jiān)控都沒(méi)有,生產(chǎn)環(huán)境和你個(gè)人本地的開(kāi)發(fā)機(jī)沒(méi)太大區(qū)別屈呕,擴(kuò)容的執(zhí)行人又是個(gè)剛畢業(yè)不久的新手微宝,想不到這些步驟也很正常。
故障恢復(fù)后虎眨,我親眼看見(jiàn)了CEO垂頭喪氣地坐在運(yùn)維工區(qū)邊上蟋软,耷拉個(gè)腦袋,眼角向下嗽桩,還用很委屈的語(yǔ)氣說(shuō)岳守,我欠考慮了,要是不擴(kuò)容就好了碌冶,這不是原話湿痢,原話我記不清了,但大致是這個(gè)意思扑庞,該企業(yè)的CEO表情很豐富譬重,有的人喜怒哀樂(lè)不行于色,而該CEO則相反罐氨,是喜是憂一看便知臀规,說(shuō)實(shí)話,我當(dāng)時(shí)感覺(jué)他有點(diǎn)可憐栅隐,很同情以及非常能體會(huì)到他的感受以现,但事情已經(jīng)發(fā)生了,后悔也沒(méi)什么用了约啊,我們只能盡快把各種缺失的監(jiān)控、優(yōu)化佣赖、時(shí)間同步恰矩、開(kāi)機(jī)自啟等基礎(chǔ)事情做好,確保以后別再出現(xiàn)這種低級(jí)錯(cuò)誤憎蛤,這是我們權(quán)利范圍內(nèi)能做的最大的改進(jìn)了外傅,事實(shí)上我們后來(lái)也的確做到了纪吮,當(dāng)時(shí)的我們也都剛?cè)肼殻瑢?duì)公司尚無(wú)任何不滿的情緒萎胰,當(dāng)時(shí)真的是盡全力付出想要把系統(tǒng)做好的碾盟,但歷史遺留問(wèn)題實(shí)在是太多了,真的沒(méi)辦法技竟。
至此冰肴,三次比較大的故障都復(fù)盤(pán)結(jié)束了,還有大量的小故障數(shù)不勝數(shù)榔组,由于沒(méi)影響用戶所以本文也沒(méi)必要講述熙尉。綜合來(lái)看,除了第三次是CEO要求下搓扯,人為導(dǎo)致的故障以外检痰,其他所有的隱患點(diǎn),低級(jí)錯(cuò)誤等锨推,都是能力欠缺導(dǎo)致铅歼,我曾經(jīng)這樣跟人描述過(guò)當(dāng)時(shí)的場(chǎng)景,凡是運(yùn)維需要做的事情换可,凡是你能想到的椎椰,我們都沒(méi)有,沒(méi)錯(cuò)锦担,就是都沒(méi)有俭识,此時(shí)的我們剛?cè)肼毑坏絻蓚€(gè)月,每天都在應(yīng)急救火洞渔,這個(gè)沒(méi)修好呢那個(gè)又掛了套媚,每天都是疲于奔命的狀態(tài),根本沒(méi)時(shí)間進(jìn)行檢查和改進(jìn)磁椒,上述所有的故障也都是那個(gè)時(shí)間段發(fā)生的堤瘤,后來(lái)當(dāng)我們有時(shí)間做這些基礎(chǔ)工作以后,這類故障就再也沒(méi)發(fā)生過(guò)浆熔,直到一年多以后我們一一離職本辐,也再?zèng)]發(fā)生過(guò)這樣的故障。
額外說(shuō)一下我們?yōu)槭裁床患影嗵幚砟匾皆觯坎皇遣患影嗌髦澹翘焯旒影啵恐芄ぷ?天叶骨,每天在公司15小時(shí)以上茫多,連除夕夜都是在公司度過(guò)的,每天晚上回家只能不連續(xù)地睡3-4個(gè)小時(shí)忽刽,因?yàn)榈郊液螅ń?jīng)常夜里一兩點(diǎn))有一批人可能會(huì)打電話天揖,第二天早上5點(diǎn)多又有另一撥人打電話夺欲,一年上班365天,最累的一周累計(jì)只睡了10個(gè)小時(shí)今膊,睡覺(jué)也不是睡些阅,而是困暈過(guò)去了躺在桌上,過(guò)一會(huì)突然驚醒以后才發(fā)現(xiàn)自己睡著了斑唬,然后再根據(jù)“昏迷”前的時(shí)間是幾點(diǎn)來(lái)計(jì)算自己“睡”了多久市埋,最終,那一周我一共睡了不到10小時(shí)赖钞,一周沒(méi)回家腰素,所以不是不加班處理,而是我們團(tuán)隊(duì)當(dāng)時(shí)真的已經(jīng)到了生理極限了雪营,我個(gè)人的身體也在那個(gè)時(shí)候熬出了嚴(yán)重的問(wèn)題弓千,體重飆漲20斤,2023年離職后在家休養(yǎng)了半年沒(méi)上班献起,這期間至少有15個(gè)夜晚一夜沒(méi)睡洋访,不是不困,而是身體原因?qū)е聼o(wú)法入睡谴餐,我個(gè)人至今都在為當(dāng)時(shí)身體透支而持續(xù)付出健康成本姻政,中藥累計(jì)喝了上百斤了,其他同事由于是普通崗岂嗓,沒(méi)有我負(fù)責(zé)的事情多汁展,所以比我輕松些,但也好不到哪去厌殉。
技術(shù)復(fù)盤(pán)就說(shuō)這些吧食绿,讀完了這些,您有何收獲呢公罕?我簡(jiǎn)單總結(jié)如下:
1. 操作系統(tǒng)上線使用前器紧,必須進(jìn)行必要的處理與優(yōu)化。
2. 磁盤(pán)的分區(qū)與掛載楼眷,時(shí)間的同步铲汪,都必須處理成功才能交付使用。
3. 各種數(shù)據(jù)庫(kù)與中間件必須要進(jìn)行必要的參數(shù)優(yōu)化罐柳。
4. 數(shù)據(jù)庫(kù)與中間件必須根據(jù)使用場(chǎng)景設(shè)計(jì)不同的架構(gòu)掌腰,不能直接使用官方默認(rèn)配置。
5. 所有系統(tǒng)都必須進(jìn)行高可用配置张吉,不可以存在單點(diǎn)隱患辅斟。
6. 技術(shù)的工作讓技術(shù)人去處理,外行不要瞎指揮芦拿。
7. 數(shù)據(jù)庫(kù)使用前士飒,要正確評(píng)估IOPS,QPS等數(shù)據(jù)蔗崎,不能盲目上線使用酵幕。
8. 什么功能的軟件就做什么用,不能亂用(這個(gè)是指在redis里存二維碼導(dǎo)致內(nèi)存暴增的事)
9. 業(yè)務(wù)功能上線前要進(jìn)行必要的功能測(cè)試與壓力測(cè)試缓苛,不能把生產(chǎn)環(huán)境當(dāng)測(cè)試芳撒。
我隨便列了這么幾點(diǎn),你還有哪些補(bǔ)充嗎未桥?
現(xiàn)在技術(shù)視角聊完了笔刹,我們?cè)購(gòu)墓芾淼囊暯莵?lái)看看為什么會(huì)有這么多奇葩的情況存在吧。
技術(shù)界有句至理名言冬耿,那就是舌菜,凡是技術(shù)問(wèn)題,都能用技術(shù)解決亦镶,沒(méi)有什么技術(shù)瓶頸是無(wú)法解決的日月,而若造成了技術(shù)困境,通常都是管理水平不足造成的缤骨,那么該企業(yè)在管理上有哪些不足呢爱咬?
首先,高管內(nèi)斗绊起。這是起因精拟。公司最初的CTO和CDO因一些糾紛被CEO踢走出局了,直接將其從釘釘內(nèi)移除虱歪,關(guān)閉所有賬號(hào)蜂绎,后來(lái)CDO換人了,CTO一直空缺到今天实蔽。當(dāng)時(shí)公司為不讓兩人來(lái)公司維權(quán)荡碾,曾組織大量男員工在辦公樓所有的出入口進(jìn)行堵截,包括所有步行梯局装,電梯坛吁,貨梯,負(fù)一樓食堂铐尚,負(fù)二層和負(fù)三層車庫(kù)拨脉,所有門(mén)口都有人進(jìn)行看守,無(wú)論誰(shuí)發(fā)現(xiàn)他們接近宣增,都要立刻在群里通報(bào)他們的位置玫膀,然后公司組織人去阻攔,不讓他們進(jìn)入公司爹脾,這是2022年的事情帖旨,也就是上面三個(gè)故障發(fā)生的大概時(shí)候箕昭,技術(shù)負(fù)責(zé)人都被開(kāi)了,系統(tǒng)能穩(wěn)定運(yùn)行沒(méi)bug就怪了解阅。公司為了站在道德制高點(diǎn)落竹,還給他們倆起了個(gè)名字叫XX團(tuán)伙還是XX集團(tuán)來(lái)著,其中XX倆字是這倆人的名字各取一字货抄,總之就是極盡詆毀述召,而他們被擠出局后,新上位的技術(shù)負(fù)責(zé)人則是戰(zhàn)斗在內(nèi)斗第一線的CEO的某嫡系員工蟹地,能力極菜积暖,此人好像是CEO的學(xué)生,聽(tīng)說(shuō)好像是怪与,不確定夺刑,該企業(yè)的CEO以前好像是中科院某所的老師,新上位的這個(gè)負(fù)責(zé)人崗位是技術(shù)副總裁琼梆,但實(shí)際就是個(gè)類似”走路的某常見(jiàn)家養(yǎng)寵物”的那個(gè)兩個(gè)字的角色性誉,你們知道我說(shuō)的是哪兩個(gè)字吧?在這種背景下上位的人茎杂,你覺(jué)得他的水平能高到哪去错览。該企業(yè)的知乎內(nèi)有大量的前員工的爆料,里面痛斥的內(nèi)容我基本都看過(guò)煌往,大部分事情說(shuō)的都是這個(gè)人倾哺。但你們現(xiàn)在只能看到一小部分了,因?yàn)榇蟛糠直隙急还P(guān)刪除了刽脖,這也是我在本文中不提他們公司名字的原因羞海,以免他們有借口向平臺(tái)投訴。
第二曲管,不把員工當(dāng)人却邓。該公司對(duì)員工可以說(shuō)是極度壓榨,像牲口一樣使喚院水,有時(shí)候還不如牲口腊徙,能把人逼瘋的那種程度,公司的態(tài)度一直是盛氣凌人的那種檬某,無(wú)論什么事情撬腾,都把責(zé)任推給員工,今天說(shuō)這個(gè)員工有問(wèn)題恢恼,明天說(shuō)那個(gè)員工有問(wèn)題民傻,還動(dòng)不動(dòng)就發(fā)全員公告绷落,內(nèi)容每次都差不多特碳,說(shuō)的基本都是某某某員工扩灯,在某某工作中疚颊,思想不積極,工作不努力喧半,給公司造成了什么什么損失之類的碟刺,公司對(duì)該員工給與嚴(yán)重警告,望廣大員工引以為戒薯酝,端正自己的工作態(tài)度,積極地為公司奮斗類似的話爽柒。最搞笑的是有一次竟然對(duì)一個(gè)已經(jīng)離職的員工發(fā)通報(bào)批評(píng)吴菠。公司從來(lái)不說(shuō)自己有問(wèn)題,只要出事那就是員工的問(wèn)題浩村,曾經(jīng)知乎里有大量員工的爆料與吐槽做葵,然后公司組織法務(wù)給離職員工大批量發(fā)律師函,要求他們刪除爆料與取消點(diǎn)贊心墅,還在公司內(nèi)部調(diào)查哪個(gè)哪個(gè)賬號(hào)可能是誰(shuí)酿矢,然后他的上級(jí)要擔(dān)責(zé),沒(méi)錯(cuò)怎燥,如果你的下屬離職后去知乎上吐槽你是要擔(dān)責(zé)受處罰的瘫筐。該公司一直在防范員工去網(wǎng)上爆料發(fā)聲,但從來(lái)不想為什么每個(gè)員工離職后都這樣铐姚,甚至策肝,很多員工還沒(méi)離職呢也這樣。公司從來(lái)不反思自己為什么和每個(gè)員工都處不好關(guān)系隐绵,為什么和每個(gè)供應(yīng)商也都處不好關(guān)系之众。公司還曾經(jīng)發(fā)全員公告,讓大家去學(xué)習(xí)什么是“達(dá)克效應(yīng)”依许,暗示員工們都有問(wèn)題棺禾,不要自我感覺(jué)良好,可我看峭跳,最應(yīng)該學(xué)習(xí)的反而是公司自己膘婶,而不是員工。如果是少數(shù)員工對(duì)公司有意見(jiàn)坦康,那絕對(duì)是那幾個(gè)員工有問(wèn)題竣付,現(xiàn)在是幾乎所有人都對(duì)公司有意見(jiàn),那還能是員工的問(wèn)題嗎滞欠?看看公司有多少仲裁就知道了古胆。
第三,企業(yè)無(wú)擔(dān)當(dāng),沒(méi)責(zé)任心逸绎。和第二點(diǎn)相似惹恃,有問(wèn)題就怪員工,和其他企業(yè)合作時(shí)也把各種責(zé)任推給其他企業(yè)棺牧,例如技術(shù)章節(jié)復(fù)盤(pán)時(shí)我們提到了公司把責(zé)任推給政務(wù)云巫糙,該政務(wù)云當(dāng)時(shí)確實(shí)有點(diǎn)小過(guò)錯(cuò),導(dǎo)致最終背了大鍋颊乘,我當(dāng)時(shí)一直奇怪参淹,為什么我們有需求找政務(wù)云時(shí)他們對(duì)我們的態(tài)度很不友善,愛(ài)搭不理的乏悄,后來(lái)我明白了浙值,我們一直不停地甩鍋給他們,他們態(tài)度能好才怪呢檩小,2022年3月我去經(jīng)信局參加了一個(gè)核酸相關(guān)的會(huì)議开呐,第一次實(shí)地見(jiàn)到了該政務(wù)云的負(fù)責(zé)人,于是我上去打了個(gè)招呼规求,放低姿態(tài)以類似道歉的口吻跟他說(shuō)我們以后好好合作筐付,一起把防疫系統(tǒng)做好,避免疫情擴(kuò)散阻肿,如果我們有哪些做的不好的地方請(qǐng)您多擔(dān)待瓦戚。他的回復(fù)也很客氣,畢竟是現(xiàn)場(chǎng)面對(duì)面冕茅,也不至于說(shuō)酸話和狠話伤极,但是后來(lái)也就那樣吧,因?yàn)槲覀兒芸炀桶颜?wù)云從他們家換成了別家姨伤,再加上以前替我們背的鍋哨坪,這無(wú)異于在向衛(wèi)健委說(shuō)他們不行,我們要把他們換掉乍楚,雖然實(shí)際我們并未這樣表態(tài)当编,但我們的做法已經(jīng)在暗示這樣的觀點(diǎn)了。所以呢徒溪,他們跟我們不可能有多友好忿偷,于是我們技術(shù)團(tuán)隊(duì)的同事就被坑了,明明是公司惹毛了人家臊泌,最終影響的卻是我們的工作鲤桥。
第四,公司為了利益渠概,拿疫情防控當(dāng)兒戲茶凳。最早的核酸系統(tǒng)版本中嫂拴,好像是某個(gè)小程序還是什么功能,頁(yè)面里面有圖片贮喧,圖片沒(méi)上CDN筒狠,這又暴漏了一個(gè)新的技術(shù)缺陷,技術(shù)章節(jié)忘記說(shuō)了箱沦,當(dāng)時(shí)該系統(tǒng)是給云南省使用的辩恼,云南人口沒(méi)有北京多,但是大規(guī)模核酸檢測(cè)時(shí)谓形,造成的帶寬峰值達(dá)到了2G灶伊,就是因?yàn)閹讉€(gè)幾百K的圖片造成的,而當(dāng)時(shí)版本正在滾動(dòng)升級(jí)寒跳,當(dāng)時(shí)技術(shù)團(tuán)隊(duì)要改成使用CDN谁帕,但是CEO卻說(shuō)不上,畢竟上了CDN以后的帶寬成本是要我們自己承擔(dān)的冯袍,CEO說(shuō)把這個(gè)壓力轉(zhuǎn)給政務(wù)云,這個(gè)也不是原話碾牌,原話記不清了康愤,但原話里絕對(duì)有一句把壓力轉(zhuǎn)給政務(wù)云,這句話我印象極深舶吗,CEO當(dāng)時(shí)大致的意思就是北京的核酸系統(tǒng)也這樣用征冷,我們不用考慮帶寬的事,這些事讓政務(wù)云負(fù)責(zé)就行了誓琼,他們有義務(wù)解決帶寬問(wèn)題检激,我看得出來(lái)當(dāng)時(shí)CEO說(shuō)的是氣話,但我依然嚇的立刻去問(wèn)了政務(wù)云他們的總帶寬是多少腹侣,你想想如果機(jī)房帶寬被打滿導(dǎo)致系統(tǒng)無(wú)法使用叔收,最終因未及時(shí)檢測(cè)出陽(yáng)性患者導(dǎo)致疫情擴(kuò)散會(huì)是什么后果?政務(wù)云回復(fù)后傲隶,我得到的回復(fù)是幾十G饺律,真實(shí)數(shù)字我就不說(shuō)了,總之總帶寬遠(yuǎn)遠(yuǎn)高于我們的需求跺株,這我才稍微放點(diǎn)心下來(lái)复濒,按北京與云南的人口倍數(shù)來(lái)估算,圖片不上CDN帶來(lái)的帶寬最高能到10-15G左右乒省,政務(wù)云的總帶寬能輕松覆蓋這個(gè)量巧颈,所以我就沒(méi)說(shuō)啥,這也屬于我在默許公司故意去坑政務(wù)云了袖扛,不過(guò)我反對(duì)也沒(méi)啥用砸泛,老板的話大于天,打工人沒(méi)話語(yǔ)權(quán)。所以晾嘶,后來(lái)無(wú)論政務(wù)云的同事用什么態(tài)度跟我們說(shuō)話妓雾,我都沒(méi)有任何不滿的情緒,即便他們想罵我垒迂,那也是我們應(yīng)該承受的械姻,當(dāng)然這只是舉例,他們不可能真的來(lái)罵人机断,我只是表達(dá)這個(gè)意思楷拳,但他們?cè)诒澈笸低盗R我們肯定是100%的。當(dāng)然后來(lái)我們也沒(méi)有按坑政務(wù)云的方法去做吏奸,圖片最終還是上了CDN欢揖。
第五,為了利益奋蔚,違規(guī)將敏感數(shù)據(jù)放在公有云上她混。既然上面提到了云南省核酸檢測(cè)系統(tǒng),那我就說(shuō)幾句云南吧泊碑,云南全省都在用該企業(yè)的核酸系統(tǒng)坤按,河南與山西也有幾個(gè)城市也在單獨(dú)用,四川有個(gè)自治州剛開(kāi)始部署馒过,但最終沒(méi)上線臭脓,再就是北京了,該企業(yè)的陣地一共就這些腹忽,其他城市和省份用的好像都是東軟的来累。云南當(dāng)時(shí)由于沒(méi)有政務(wù)云,這種政務(wù)系統(tǒng)又有合規(guī)要求窘奏,所以該企業(yè)一直說(shuō)自己用的是其他政務(wù)云嘹锁,但實(shí)際根本不是,他們用的是某家公有云着裹,所有數(shù)據(jù)都在公有云上兼耀,完全不符合合規(guī)要求,更大的隱患是數(shù)據(jù)庫(kù)里的敏感信息都沒(méi)加密求冷,身份證手機(jī)號(hào)居住地等信息全能直接查到明文瘤运,不知道后來(lái)改沒(méi)改。由于該企業(yè)沒(méi)有按要求使用政務(wù)云匠题,有一天夜里11點(diǎn)多還緊急拉過(guò)一次會(huì)討論怎么向云南衛(wèi)健委解釋拯坟,當(dāng)時(shí)參會(huì)的同事們說(shuō)立項(xiàng)時(shí)是如何如何向云南衛(wèi)健委承諾的,設(shè)計(jì)書(shū)是如何如何寫(xiě)的韭山,但是現(xiàn)在云南那邊問(wèn)詢了郁季,公司已經(jīng)沒(méi)法解釋了冷溃,謊言瞞不住了,于是開(kāi)會(huì)討論如何騙云南衛(wèi)健委梦裂,該企業(yè)還曾經(jīng)為了獲得投標(biāo)資格似枕,讓員工大批量自費(fèi)去參加軟考,廣撒網(wǎng)的方式年柠,只要有人通過(guò)了凿歼,企業(yè)就能得到一些資格。云南的事冗恨,最終該企業(yè)是找了其他某個(gè)政務(wù)云幫忙答憔。北京核酸系統(tǒng)更換政務(wù)云之后換成了某新的云,所以云南的事情就找了這個(gè)云幫忙掀抹,該政務(wù)云在北京某區(qū)的政務(wù)云里有些資源虐拓,但很少,帶寬性能什么的也都不足傲武,無(wú)法正式承擔(dān)業(yè)務(wù)蓉驹,所以該企業(yè)在該政務(wù)云創(chuàng)建了數(shù)十臺(tái)低配服務(wù)器,機(jī)器功能角色等完全模擬生產(chǎn)環(huán)境揪利,但是沒(méi)流量戒幔,不跑真正的業(yè)務(wù),目的就是為了應(yīng)付檢查土童,由于這些事不能外傳,對(duì)該政務(wù)云也只說(shuō)這是我們的第三號(hào)系統(tǒng)工坊,至于具體是什么系統(tǒng)并未告訴他們献汗。該云后來(lái)也得到了該企業(yè)豐厚的回報(bào),回報(bào)是什么呢王污?該企業(yè)與該云還聯(lián)合負(fù)責(zé)過(guò)另外一個(gè)項(xiàng)目罢吃,此項(xiàng)目的甲方已將總費(fèi)用支付給該企業(yè),該企業(yè)則應(yīng)該把機(jī)房資源費(fèi)用支付給該云昭齐,但是該企業(yè)一直拖著不給尿招,把對(duì)方商務(wù)心態(tài)搞崩了,后來(lái)該云的商務(wù)直接發(fā)了最后通牒阱驾,還來(lái)了公司就谜,說(shuō)這是最后一次催款了,如果貴公司依然拒不支付那就只能走法律程序了里覆,還亮出了當(dāng)時(shí)簽訂的合同丧荐,而公司是怎么躲的呢?該云的商務(wù)來(lái)訪時(shí)喧枷,是讓我出面的虹统,我是技術(shù)崗弓坞,讓我去應(yīng)付對(duì)方商務(wù)的催款,逗吧车荔?我和該云的商務(wù)同事在一個(gè)小會(huì)議室聊天聊了半個(gè)多小時(shí)渡冻,只有我們倆,然后其他人才姍姍來(lái)遲忧便,之后我就離開(kāi)會(huì)議室了族吻,不知道這事他們后來(lái)有沒(méi)有談崩。再有就是通州區(qū)環(huán)球影城項(xiàng)目茬腿,這又是另一個(gè)項(xiàng)目了呼奢,也是與合作方鬧崩了,甚至我方的員工都與外協(xié)人員一起離職切平,離職時(shí)辦公電腦等都拒不歸還想用于抵薪握础,事后半年內(nèi)又多次來(lái)公司維權(quán)抗議,電梯間經(jīng)常圍滿了來(lái)維權(quán)的人大聲喊口號(hào)悴品,我們都被通知不準(zhǔn)出去禀综。那個(gè)合作方后來(lái)還做了一個(gè)不該做的報(bào)復(fù)手段,在市里某領(lǐng)導(dǎo)(好像是殷市長(zhǎng))去環(huán)球影城視察時(shí)苔严,故意修改了后臺(tái)密碼定枷,導(dǎo)致該企業(yè)負(fù)責(zé)的顯示大屏變黑屏了還是沒(méi)內(nèi)容了之類的,總之就是看不到該看到的數(shù)據(jù)了届氢。這明顯就是故意打擊報(bào)復(fù)欠窒,想讓他們?cè)谑蓄I(lǐng)導(dǎo)面前丟臉,該廠商遠(yuǎn)程改密碼是我們通過(guò)查數(shù)據(jù)庫(kù)的方式發(fā)現(xiàn)的退子,然后手動(dòng)將密碼改了回來(lái)岖妄,最終沒(méi)在市領(lǐng)導(dǎo)面前出丑,但是過(guò)了沒(méi)多久寂祥,密碼又被改掉了荐虐,后來(lái)我們做過(guò)多次梳理,直到我們都離職了丸凭,依然有大量服務(wù)器我們沒(méi)有密碼福扬,無(wú)法登陸,對(duì)方也不可能告訴我們惜犀,沒(méi)刪庫(kù)跑路就已經(jīng)算仁至義盡了铛碑。
第六,外行瞎指揮虽界。前面略微有點(diǎn)跑題亚茬。第六點(diǎn)咱們兜回來(lái),該企業(yè)在管理上的缺陷還有一個(gè)就是外行瞎指揮浓恳,前面說(shuō)的那個(gè)靠?jī)?nèi)斗上位的技術(shù)副總裁刹缝,自己水平菜不說(shuō)碗暗,還完全不信任自己公司的員工,無(wú)論我們提出什么方案他都覺(jué)得不靠譜梢夯,總要找外援來(lái)幫忙言疗,例如redis曾造成過(guò)重大的P0故障,所以他從某大廠請(qǐng)了一位專家過(guò)來(lái)給我們進(jìn)行“指導(dǎo)”颂砸,當(dāng)時(shí)我們忙的要死噪奄,前面我說(shuō)過(guò)我們連睡覺(jué)都沒(méi)時(shí)間,哪有時(shí)間去聽(tīng)別人的分享人乓,我們r(jià)edis的痛點(diǎn)我們一清二楚勤篮,我們自己有解決方案,對(duì)我們來(lái)說(shuō)這也不是什么難處理的技術(shù)問(wèn)題色罚,只是需要很多時(shí)間而已碰缔。結(jié)果這位副總裁大人就是不信任我們,非得讓我們?nèi)ヂ?tīng)課戳护,還說(shuō)我們要聽(tīng)勸金抡,結(jié)果該專家講了什么呢?他講的是他們公司的場(chǎng)景腌且,他們是自己對(duì)redis做了二次開(kāi)發(fā)梗肝,實(shí)現(xiàn)了什么什么功能,我當(dāng)時(shí)就說(shuō)铺董,他們公司場(chǎng)景跟我們完全不一樣巫击,他這種“傳授”有什么用呢?我們的redis是不接受丟數(shù)據(jù)的精续,而他們的是純緩存的場(chǎng)景坝锰,數(shù)據(jù)丟了就丟了,丟了以后可以讀后端的關(guān)系型數(shù)據(jù)庫(kù)驻右,我們場(chǎng)景一樣嗎?用法都不一樣崎淳,如何借鑒他們的做法堪夭?還有,他們用的是自己開(kāi)發(fā)的系統(tǒng)拣凹,他們自己開(kāi)發(fā)的內(nèi)部工具能拿出來(lái)給我們使用嗎森爽?就算他們老板同意了,誰(shuí)來(lái)給我們部署嚣镜?后期出故障誰(shuí)來(lái)給我們解決爬迟?報(bào)錯(cuò)以后網(wǎng)上沒(méi)有任何文檔如何解決?掛了以后沒(méi)人知道怎么處理菊匿,誰(shuí)負(fù)責(zé)付呕?等等等等计福,一堆不現(xiàn)實(shí)的想法,該副總裁就是一個(gè)字也聽(tīng)不進(jìn)去徽职,一直就在那讓我們好好聽(tīng)人家講象颖,讓我們向人家學(xué)習(xí)。最終浪費(fèi)了我們好幾個(gè)小時(shí)的時(shí)間姆钉,要是不浪費(fèi)時(shí)間说订,有這功夫我們事情都做完了,可現(xiàn)在卻是把故障和隱患丟在一邊不處理潮瓶,反而去聽(tīng)別人講那些很牛[字母]但我們卻用不上的方案陶冷,有啥用?純影響工作毯辅,如果這期間redis又掛了怎么辦埂伦?但無(wú)論我們這邊如何解釋與反對(duì),此人就是不聽(tīng)悉罕,還鼓動(dòng)我的領(lǐng)導(dǎo)讓我們過(guò)來(lái)聽(tīng)分享(說(shuō)明:我們部門(mén)由公司某高官分管赤屋,不歸該副總裁管,所以他無(wú)法直接命令我們)壁袄,最終該專家分享的經(jīng)驗(yàn)也是不了了之类早,因?yàn)槟莻€(gè)方案除了他們公司以外,沒(méi)有任何其他公司可使用嗜逻,畢竟是他們公司內(nèi)部的工具涩僻,又沒(méi)有開(kāi)源出來(lái),你讓其他企業(yè)如何使用栈顷?還有就是逆日,若下班后發(fā)生了故障,該企業(yè)要求員工要立刻出發(fā)到公司處理故障萄凤,而不是在家里遠(yuǎn)程解決室抽,即便是P0級(jí)的重大故障,也是必須到公司靡努,我們?cè)範(fàn)庍^(guò)坪圾,說(shuō)就算讓我們來(lái)公司,那等我們先把故障處理完然后再去公司開(kāi)會(huì)復(fù)盤(pán)不行嗎惑朦?非得立刻出發(fā)兽泄?公司的回復(fù)就是不行,必須立刻到公司漾月,如果你沒(méi)出門(mén)病梢,你的電話能被打到?jīng)]電,這就意味著哪怕是個(gè)你只需幾秒就能恢復(fù)的小故障梁肿,你也需要讓它一直處于故障的狀態(tài)蜓陌,然后去公司處理故障觅彰。而公司這么強(qiáng)硬地要求員工立刻到公司去,而不是立刻處理故障护奈,僅僅是因?yàn)椴幌嘈艈T工會(huì)在家里處理故障缔莲,公司的原話是員工在家里有可能不處理故障,但是說(shuō)成自己在處理故障霉旗,所以才會(huì)要求員工在故障發(fā)生時(shí)必須要第一時(shí)間出門(mén)到公司去痴奏,哪怕路上需要1個(gè)小時(shí),那也得去公司厌秒,公司要求員工必需時(shí)刻在眼皮底下读拆、公司能看見(jiàn)的地方。即便當(dāng)時(shí)是疫情最為嚴(yán)重的時(shí)候鸵闪,核酸系統(tǒng)要是掛了檐晕,那滿大街的上百萬(wàn)的人都要站著排隊(duì)等待,此刻相信百萬(wàn)大眾最期待的就是我們盡快把故障修復(fù)蚌讼,但是對(duì)不起辟灰,我們正在被電話轟炸要求我們到公司去,你們期待的時(shí)候我們很可能堵在去公司的路上呢篡石,但值得慶幸的是芥喇,白天時(shí)未發(fā)生過(guò)這類故障,所以沒(méi)有導(dǎo)致大家在街上等我們凰萨,否則當(dāng)你們今天看見(jiàn)這段話時(shí)得氣出心臟病來(lái)继控。
第七,技術(shù)管理者技術(shù)水平太菜胖眷。經(jīng)常出現(xiàn)“我都不知道這個(gè)需求是什么我怎么要求你們做”武通,大概這樣的場(chǎng)景,還有就是對(duì)技術(shù)知識(shí)的儲(chǔ)備太淺珊搀,前面redis的例子是一個(gè)冶忱,java連接mongodb時(shí)如何設(shè)置讀寫(xiě)分離竟也不知道,kafka只知topic境析,不知道partition是什么囚枪,自然也就沒(méi)配,redis刪數(shù)據(jù)不知道怎么刪簿晓,前面說(shuō)過(guò)redis因未使用路由連接眶拉,導(dǎo)致各分片內(nèi)有臟數(shù)據(jù)千埃,而寫(xiě)代碼刪除的需求憔儿,當(dāng)時(shí)的研發(fā)部門(mén)搞不定,不會(huì)寫(xiě)放可,最終谒臼,這個(gè)代碼是運(yùn)維團(tuán)隊(duì)寫(xiě)的朝刊,你說(shuō)奇葩不奇葩。那研發(fā)為什么不會(huì)寫(xiě)呢蜈缤?因?yàn)闀?huì)的人都被各種原因擠兌離職了拾氓,當(dāng)時(shí)連公司全力投入的核酸檢測(cè)系統(tǒng)的團(tuán)隊(duì)都青黃不接了,大量功能沒(méi)人知道怎么回事底哥,幾個(gè)月后新入職的技術(shù)團(tuán)隊(duì)將k8s中的deployment從70多個(gè)縮減到了20多個(gè)咙鞍,下線的deployment說(shuō)明都是無(wú)效的,但是沒(méi)人知道這些服務(wù)是做什么的趾徽,只是平白在那運(yùn)行著占用資源续滋,解決各種bug時(shí),也沒(méi)有任何人知道怎么回事孵奶,當(dāng)時(shí)所有靠譜的人幾乎都是新入職的疲酌,不能說(shuō)是100%吧,但也占了絕對(duì)多數(shù)了了袁,上一批人已經(jīng)都不在了朗恳,再加上該企業(yè)一直以來(lái)對(duì)員工的壓榨與奴役,導(dǎo)致所有人離職后對(duì)公司都是恨之入骨载绿,這也導(dǎo)致了該企業(yè)的在職員工無(wú)法像其他企業(yè)那樣找前員工求助和咨詢粥诫,最后公司只能付費(fèi)咨詢,該企業(yè)的技術(shù)副總裁每次都是微信直接發(fā)2000紅包卢鹦,然后才問(wèn)問(wèn)題臀脏,注意,是直接甩個(gè)紅包過(guò)去冀自,然后才有臉問(wèn)問(wèn)題揉稚,在這樣的背景下,業(yè)務(wù)系統(tǒng)能健壯嗎熬粗?所以搀玖,北京核酸系統(tǒng)為什么那么多低級(jí)失誤?你現(xiàn)在知道了吧驻呐。2022年年初的時(shí)候灌诅,有次有個(gè)bug解決不了,在職的研發(fā)基本都是新入職的含末,誰(shuí)也不知道怎么回事猜拾,只能找離職員工問(wèn),但是那次要找的那個(gè)員工沒(méi)時(shí)間佣盒,已經(jīng)在新公司上班了挎袜,結(jié)果公司說(shuō),這都什么時(shí)候了,這是計(jì)較個(gè)人得失的時(shí)候嗎盯仪?要找人家過(guò)來(lái)加班紊搪,還說(shuō)要找公安部門(mén)運(yùn)作一下,把他抓起來(lái)關(guān)幾天全景,看他幫不幫忙耀石,這是他們CEO的原話,當(dāng)時(shí)好多人在旁邊爸黄,都看見(jiàn)了和聽(tīng)見(jiàn)了滞伟,我也在現(xiàn)場(chǎng)。而公司說(shuō)這種話的底氣來(lái)源僅僅是因?yàn)橛袀€(gè)"公安局反詐系統(tǒng)"的項(xiàng)目合作炕贵,僅此而已诗良,然后他們就覺(jué)得自己有本事調(diào)動(dòng)公安局去抓一個(gè)沒(méi)違反任何法律的前員工,甚至連任何治安條例都未違反鲁驶,然后他們就有那個(gè)自信可以去抓人坐牢鉴裹,植物!
第八钥弯,沒(méi)有團(tuán)隊(duì)精神径荔,無(wú)法組織起團(tuán)結(jié)的隊(duì)伍。該企業(yè)對(duì)員工非常不友善脆霎,為了防止員工反抗总处,該企業(yè)從入職起就對(duì)員工開(kāi)始各種防范,有事請(qǐng)假都必需寫(xiě)明是什么事睛蛛,請(qǐng)假去醫(yī)院還得寫(xiě)清去哪個(gè)醫(yī)院鹦马,得了什么病,否則請(qǐng)假不予通過(guò)忆肾。五一十一前后的幾天荸频,很多人會(huì)請(qǐng)假湊個(gè)小長(zhǎng)假,該企業(yè)請(qǐng)假時(shí)你必須說(shuō)清楚請(qǐng)這幾天假是要去哪客冈,做什么事旭从,否則也是不給假。員工下樓取個(gè)奶茶外賣也會(huì)被HR跟蹤監(jiān)視然后舉報(bào)场仲,說(shuō)員工在工作時(shí)間外出和悦,員工的工作與生活都受到了嚴(yán)重的監(jiān)視。公司的辦公軟件從釘釘改成企業(yè)微信后渠缕,連私聊的權(quán)限都關(guān)了鸽素,同事之間由于工作需求要私聊都沒(méi)辦法,只能找領(lǐng)導(dǎo)拉群討論亦鳞。員工入職后馍忽,試用期會(huì)被安排大量任務(wù)澜汤,員工為了通過(guò)試用期只能狂卷,但是他們想不到的是舵匾,他們根本過(guò)不了試用期,轉(zhuǎn)正答辯時(shí)會(huì)有各種理由不讓你通過(guò)谁不,不通過(guò)就得離職坐梯,然后再招下一批人繼續(xù)重復(fù)這個(gè)過(guò)程,很多人甚至沒(méi)熬到答辯就自己辭職了刹帕。該企業(yè)對(duì)員工只有壓榨吵血,詆毀,提防偷溺,洗腦蹋辅,動(dòng)不動(dòng)就開(kāi)除,然后還得發(fā)公告對(duì)其進(jìn)行抹黑挫掏。我的團(tuán)隊(duì)的成員也被他們這樣開(kāi)除過(guò)好幾個(gè)人侦另,該企業(yè)的轉(zhuǎn)正答辯并不是員工的直屬上級(jí)定他的去留,而是公司的CEO尉共,技術(shù)副總裁褒傅,黨支部,HR袄友,老板的親戚等人來(lái)評(píng)審撒会,你能不能通過(guò)試用期和你的能力與產(chǎn)出沒(méi)有任何關(guān)系荧库,能否通過(guò)只取決于你表現(xiàn)出來(lái)的態(tài)度,按他們的話來(lái)說(shuō),你要有“正確的”價(jià)值觀媒吗,你知道他們心里的正確是啥意思吧?但凡你表現(xiàn)的不符合他們的預(yù)期醒陆,你就會(huì)被打上價(jià)值觀不正確的標(biāo)簽宙搬,然后被迫離職。本人團(tuán)隊(duì)內(nèi)曾有個(gè)初級(jí)工程師目尖,薪資極低叹坦,但他的表現(xiàn)特別好,遠(yuǎn)遠(yuǎn)超出其薪資的標(biāo)準(zhǔn)卑雁,我對(duì)他也特別滿意募书,但轉(zhuǎn)正答辯時(shí),公司就是不讓他過(guò)测蹲,我求情求了至少7次莹捡,但最終他還是被迫離職了,把我氣得要死扣甲,后來(lái)他們還對(duì)我團(tuán)隊(duì)的一名同事進(jìn)行人身攻擊篮赢,該企業(yè)的技術(shù)副總裁說(shuō)我團(tuán)隊(duì)的那個(gè)人平時(shí)不洗澡齿椅,身上有味道他能聞到,留著影響公司启泣,所以試用期不給過(guò)涣脚,服了,他平時(shí)就坐我附近寥茫,我是從來(lái)沒(méi)聞到過(guò)遣蚀,這個(gè)副總裁和我們中間隔了好幾排人呢,狗鼻子嗎纱耻?
第九芭梯,對(duì)外虛假宣傳。導(dǎo)致新員工入職后心里落差極大弄喘,他們?cè)赽oss直聘里寫(xiě)的公司福利大部分是假的或者言過(guò)其詞玖喘,等員工入職后才發(fā)現(xiàn)上當(dāng)了,再加上那個(gè)副總裁的氣質(zhì)蘑志,不開(kāi)罵反而不正常累奈,該技術(shù)副總裁還找過(guò)我抱怨說(shuō):“我新招的人,剛?cè)肼毦土R我急但,而且人還是我招來(lái)的费尽,他是不是有病羊始?”旱幼,而我想說(shuō)的是,你看你做的那些事突委,被罵難道不應(yīng)該嗎柏卤?為什么我團(tuán)隊(duì)的人沒(méi)人罵我呢,所以匀油,該公司的員工離職率極高缘缚,流動(dòng)非常大,這也進(jìn)一步導(dǎo)致了產(chǎn)品不穩(wěn)定敌蚜,因?yàn)槿丝倱Q桥滨,流水式的人接替開(kāi)發(fā),系統(tǒng)好得了嗎弛车?他們對(duì)外還總宣傳說(shuō)自己的系統(tǒng)怎么怎么牛齐媒,從未發(fā)生“丟人丟管”,但實(shí)際則是經(jīng)常丟纷跛,技術(shù)章節(jié)說(shuō)過(guò)同一份日志被記錄了3次喻括,就是因?yàn)榻?jīng)常丟人丟管,所以他們?yōu)榱艘苑廊f(wàn)一贫奠,把日志寫(xiě)了多份唬血,因?yàn)閬G失的數(shù)據(jù)可以從日志里找到望蜡,最終修復(fù)成功,也實(shí)現(xiàn)了他們所說(shuō)的不丟一人不丟一管拷恨,但這真是算沒(méi)丟嗎脖律?還有就是他們一直在大肆宣傳自己的技術(shù)怎么怎么牛,但實(shí)際呢腕侄,呵呵小泉,反正能騙一波是一波,總會(huì)有不了解公司情況的新韭菜一批一批地入職兜挨,公司可以無(wú)限使用試用期員工完成業(yè)務(wù)系統(tǒng)的開(kāi)發(fā)。
第十眯分,賞罰不明拌汇。獎(jiǎng)勵(lì)很少,處罰為主弊决。而且各種制度與做法都是以處罰和扣工資為目的噪舀。其做法總結(jié)起來(lái)就是:大功小賞,小功不賞飘诗,沒(méi)錯(cuò)找茬与倡,小錯(cuò)重罰,中錯(cuò)開(kāi)除昆稿,大錯(cuò)沒(méi)機(jī)會(huì)犯纺座,中錯(cuò)時(shí)已被開(kāi)除。無(wú)論你在公司做了多大的貢獻(xiàn)溉潭,公司都會(huì)當(dāng)作沒(méi)看見(jiàn)净响,大量的人轉(zhuǎn)正答辯都無(wú)法通過(guò),而能通過(guò)的人喳瓣,年終總結(jié)也一樣會(huì)被貶的一文不值馋贤,2023年年初進(jìn)行2022年的年終總結(jié)時(shí),CEO對(duì)我們?cè)?022年做的巨大貢獻(xiàn)不聞不問(wèn)畏陕,只說(shuō)我們產(chǎn)出不夠配乓,讓我們回去思考能為公司做什么,還有個(gè)崗位的同事甚至都還沒(méi)講呢就被定性了說(shuō)不合格惠毁,然后年終總結(jié)會(huì)就中途停了犹芹。年度考核時(shí),我們團(tuán)隊(duì)被劃到了該技術(shù)副總裁名下鞠绰,原本我們和他是平級(jí)羽莺,現(xiàn)在變成了他的下級(jí),于是他就開(kāi)始瘋狂報(bào)復(fù)洞豁,我本人的考核盐固,他直接說(shuō)了句我對(duì)你不滿意荒给,然后給我打了個(gè)全公司最低分,績(jī)效等級(jí)D刁卜,這是唯一一個(gè)年終獎(jiǎng)金額是0的等級(jí)志电,他給了我,然后還口口聲聲說(shuō)這是為我好蛔趴,說(shuō)“我這是在幫助你成長(zhǎng)挑辆,你以后要想在管理方面有所進(jìn)步,就要怎樣怎樣之類的”孝情,把“又當(dāng)又立”表現(xiàn)的淋漓盡致鱼蝉,前面提到的他抱怨他招的人剛?cè)肼毦土R他也是這時(shí)候說(shuō)的,然后又問(wèn)到了我平時(shí)總買吃的和奶茶什么的給我團(tuán)隊(duì)成員的事箫荡,說(shuō)到我和團(tuán)隊(duì)成員關(guān)系都很好魁亦,然后他又開(kāi)始瘋狂暗示讓我平時(shí)也請(qǐng)他,他跟我說(shuō):“你要是找我說(shuō):冰哥羔挡,我給你買了奶茶洁奈,那我也會(huì)很高興啊”,我當(dāng)時(shí)真的是感覺(jué)惡心至極绞灼,然后他還讓我對(duì)我團(tuán)隊(duì)的人進(jìn)行處罰利术,說(shuō)這是在幫助我提高我的管理能力。那天的面談聊了將近兩個(gè)小時(shí)低矮,他一直不肯結(jié)束印叁,一直不停地瘋狂PUA和給我洗腦,后來(lái)我不想浪費(fèi)時(shí)間了军掂,就說(shuō)對(duì)對(duì)對(duì)喉钢,你說(shuō)的都對(duì),都聽(tīng)你的良姆,以后你說(shuō)啥就是啥肠虽,你說(shuō)罰誰(shuí)就罰誰(shuí),我實(shí)在是忍不了了玛追,太惡心了税课。之后又過(guò)了一兩個(gè)月,每天都各種挑刺找茬痊剖,短短幾個(gè)月韩玩,我團(tuán)隊(duì)的人就要走沒(méi)了,后來(lái)我也就離職走人了陆馁。冬奧會(huì)時(shí)期全體員工都瘋狂加班找颓,本人更是每天在公司15小時(shí)以上,當(dāng)時(shí)公司承諾以后會(huì)給大家獎(jiǎng)勵(lì)叮贩,但是等繁忙時(shí)期度過(guò)后击狮,公司覺(jué)得大家沒(méi)什么利用價(jià)值了佛析,就把很多人用各種理由或開(kāi)除或擠兌走,典型的卸磨殺驢彪蓬,兔死狗烹寸莫,鳥(niǎo)盡弓藏,而他們做這些事情的時(shí)候档冬,那些未離職的人是都看在眼里的膘茎,所以誰(shuí)還敢把事情做的很好,做完了就得被開(kāi)除酷誓,還要被詆毀成價(jià)值觀不正確披坏,即便離職很久都要被不停地翻出來(lái)做“反面例子”,最慘的是曾經(jīng)的研發(fā)負(fù)責(zé)人盐数,也是為公司做出過(guò)巨大貢獻(xiàn)棒拂,但離職一年多了,還在被拿出來(lái)娘扩,被罵是XX(經(jīng)典國(guó)罵那倆字)着茸,沒(méi)錯(cuò)壮锻,就是那倆字琐旁,而且那個(gè)副總裁還是笑呵呵地說(shuō)的,恬不知恥啊猜绣。在這樣的擔(dān)憂下灰殴,誰(shuí)會(huì)真心付出?
十一掰邢,責(zé)任劃分不明牺陶,亂用處罰機(jī)制。該企業(yè)的產(chǎn)品辣之,無(wú)論出什么事情掰伸,記錄詳情時(shí)填寫(xiě)的責(zé)任人都必需是在職員工,不可以寫(xiě)離職員工怀估,假設(shè)某人寫(xiě)了個(gè)嚴(yán)重的bug導(dǎo)致大故障了狮鸭,但是上周他剛好離職了,而你是交接人多搀,那么故障責(zé)任人就是你歧蕉,而不是那個(gè)已離職的人,哪怕你是剛?cè)肼氁恢艿目得悄阋彩秦?zé)任人惯退。如果沒(méi)發(fā)生故障時(shí),你由于技術(shù)能力強(qiáng)从藤,發(fā)現(xiàn)了一個(gè)重大的隱患催跪,當(dāng)你提出這個(gè)隱患時(shí)锁蠕,你就必須將其解決,負(fù)責(zé)人就變成了你叠荠,解決好了也沒(méi)什么獎(jiǎng)勵(lì)匿沛,但只要出一點(diǎn)問(wèn)題,你就是該P(yáng)0的責(zé)任人榛鼎,這導(dǎo)致了所有人工作時(shí)都擔(dān)驚受怕逃呼,能躲則躲,沒(méi)人敢主動(dòng)去解決問(wèn)題或改進(jìn)系統(tǒng)者娱,畢竟只要出事你名下就會(huì)有個(gè)P0抡笼。該企業(yè)對(duì)故障也一直都是小題大作,草木皆兵黄鳍,杯弓蛇影推姻,風(fēng)聲鶴唳,不管啥故障框沟,直接就定級(jí)P0藏古,這個(gè)也P0,那個(gè)也P0忍燥,以上種種拧晕,導(dǎo)致很多人即便發(fā)現(xiàn)了什么也不敢提,所以我們?cè)诩夹g(shù)章節(jié)說(shuō)的那么多低級(jí)錯(cuò)誤梅垄,難道真的是因?yàn)楫?dāng)時(shí)的團(tuán)隊(duì)很菜嗎厂捞?會(huì)不會(huì)是他們知道這些隱患,只是不敢說(shuō)出來(lái)而已呢队丝?該企業(yè)的wiki里記錄了一部分的P0故障靡馁,但絕大多數(shù)都算不上P0,真正的P0只有技術(shù)章節(jié)里我寫(xiě)的那兩次机久,前兩次算臭墨,第三次其實(shí)也不算,因?yàn)榈谌沃皇菢I(yè)務(wù)數(shù)據(jù)亂了膘盖,顯示的不準(zhǔn)而已胧弛,系統(tǒng)并沒(méi)掛。
十二衔憨,管理能力弱叶圃,領(lǐng)導(dǎo)沒(méi)主見(jiàn)。前面說(shuō)過(guò)該領(lǐng)導(dǎo)喜歡求外援践图,不信任自己人掺冠,別人說(shuō)啥都是對(duì)的,我們說(shuō)啥都不對(duì),哪怕外援與我們觀點(diǎn)一致德崭,他也覺(jué)得別人說(shuō)的對(duì)斥黑。這也導(dǎo)致了公司的技術(shù)方案不穩(wěn)定,今天聽(tīng)說(shuō)了這個(gè)就這么干眉厨,明天聽(tīng)說(shuō)了那個(gè)就那么干锌奴,最被折騰的應(yīng)該算大數(shù)據(jù)團(tuán)隊(duì)了,最初所有的后臺(tái)報(bào)表計(jì)算都是直連的mongodb憾股,后來(lái)想要搞大數(shù)據(jù)鹿蜀,申請(qǐng)了很多臺(tái)高配的機(jī)器,浪費(fèi)納稅人的錢服球,但是最終也沒(méi)做出來(lái)茴恰,方案一直變,大數(shù)據(jù)的負(fù)責(zé)人也在一直變斩熊,我印象中大數(shù)據(jù)團(tuán)隊(duì)中沒(méi)有人通過(guò)試用期往枣,所有人全部在答辯結(jié)束第二天離職,最終大數(shù)據(jù)功能肯定也就做不出來(lái)了粉渠。還有北京核酸系統(tǒng)的架構(gòu)設(shè)計(jì)分冈,最初是單云,后來(lái)甲方爸爸說(shuō)了健康寶的做法霸株,說(shuō)他們可以在兩套系統(tǒng)間來(lái)回切換雕沉,使用A升級(jí)B,B升級(jí)完畢后使用B淳衙,A變回備用蘑秽,這其實(shí)就是藍(lán)綠部署饺著,然后問(wèn)我們核酸系統(tǒng)如何做箫攀,然后,呵呵幼衰,你別指望那個(gè)副總裁能有什么好見(jiàn)解靴跛,最終是我說(shuō)的,我說(shuō)我們的資源無(wú)法實(shí)現(xiàn)這個(gè)模式渡嚣,因?yàn)榘催@種做法梢睛,我們的資源需要翻倍,或者將現(xiàn)有資源一分為二识椰,一半使用绝葡,另一半做備用,這樣才能和健康寶一樣腹鹉,但是按當(dāng)時(shí)的評(píng)估藏畅,一半資源不夠用,資源翻倍的成本無(wú)法接受功咒,所以我提了雙活的架構(gòu)愉阎,即:選用兩家政務(wù)云绞蹦,所有數(shù)據(jù)庫(kù)配置成跨云的集群(redis)或副本集(mongodb),選用第三家政務(wù)云部署少量機(jī)器做仲裁節(jié)點(diǎn)榜旦,因?yàn)楸本┱?wù)云有多家廠商負(fù)責(zé)幽七,他們的機(jī)器都在同一棟樓里,所以雖然網(wǎng)絡(luò)上是隔離的溅呢,但是只要開(kāi)通權(quán)限后澡屡,內(nèi)網(wǎng)延遲依然可以在5毫秒以下,和使用一家云沒(méi)區(qū)別咐旧,所以我才敢這樣設(shè)計(jì)挪蹭。數(shù)據(jù)庫(kù)跨云后,兩家主云分別部署一套應(yīng)用(k8s等)休偶,這樣兩個(gè)云既可以同時(shí)使用梁厉,也可以單獨(dú)分別使用,只需要在dns那邊改解析就行了踏兜,解析到誰(shuí)誰(shuí)就是生產(chǎn)词顾,另一個(gè)是備用,倆云同時(shí)生效就是雙活碱妆,由于數(shù)據(jù)庫(kù)是同一套肉盹,所以無(wú)論哪邊產(chǎn)生的數(shù)據(jù),另一個(gè)云里都能獲取到疹尾,按這種方式實(shí)現(xiàn)的話上忍,總資源不變,但是業(yè)務(wù)系統(tǒng)變成了兩份纳本,而且是部署在不同的云里窍蓝,若一家云的平臺(tái)故障,另一家不會(huì)受影響繁成,升級(jí)時(shí)也可以先升一半吓笙,有問(wèn)題立刻回滾,不會(huì)影響用戶巾腕。大規(guī)模核酸檢測(cè)時(shí)面睛,兩家云同時(shí)啟用,這樣總資源就是夠的尊搬,于是就可以實(shí)現(xiàn)甲方爸爸的想法了叁鉴,這是我當(dāng)時(shí)提的方案,后來(lái)也按這個(gè)做了佛寿,但是投入使用后幌墓,一直只有一邊生效,另一半根本未啟用,因?yàn)槟莻€(gè)副總裁覺(jué)得這樣不靠譜克锣,不知道他為啥會(huì)有這種想法茵肃,如果覺(jué)得不靠譜當(dāng)初為啥不反對(duì)呢,現(xiàn)在都上線了又開(kāi)始懷疑這懷疑那了袭祟,于是验残,該系統(tǒng)就一直只用一半云,相當(dāng)于浪費(fèi)了一半的資源巾乳,但這樣也沒(méi)任何影響您没,為什么呢?因?yàn)樵缭诎肽昵暗ò恚本┑暮怂嵯到y(tǒng)就已經(jīng)切換到了東軟的系統(tǒng)氨鹏,該企業(yè)的系統(tǒng)一直說(shuō)要切回來(lái),但直到疫情結(jié)束也沒(méi)切压状,所以自然無(wú)論怎么折騰都不會(huì)有人受影響仆抵,如果后來(lái)真的切回去了,說(shuō)不定出什么幺蛾子呢种冬,這家企業(yè)最不缺的就是作死的行為镣丑。
十三,不說(shuō)了娱两,這樣的例子實(shí)在是太多了莺匠,罄竹難書(shū),說(shuō)太多可能大家就不仔細(xì)看了十兢,此刻的我是在用wps文字寫(xiě)草稿趣竣,當(dāng)前頁(yè)碼已經(jīng)到了第14頁(yè)底端了,就先說(shuō)這么多吧旱物。
綜上所述遥缕,大家知道為什么北京的核酸檢測(cè)系統(tǒng)為什么那么XX了吧,由于2022年年初的那幾次大故障异袄,很多其他省市對(duì)該企業(yè)的產(chǎn)品的態(tài)度都由接受變成了觀望通砍,2022年4-5月左右玛臂,時(shí)間可能會(huì)有誤差烤蜕,CEO曾組織了一個(gè)會(huì)議,參會(huì)人員有公司所有高管及各團(tuán)隊(duì)負(fù)責(zé)人迹冤,會(huì)議內(nèi)容是統(tǒng)計(jì)公司有多少項(xiàng)目因這幾次故障導(dǎo)致尾款收不回來(lái)讽营,或者原本計(jì)劃購(gòu)買的客戶也不買了,當(dāng)時(shí)好像是讓財(cái)務(wù)總監(jiān)用電腦投影一個(gè)個(gè)統(tǒng)計(jì)的泡徙,最終的數(shù)字是1.3億還是1.4億來(lái)著橱鹏,大概這個(gè)數(shù)字吧,2022年一季度,公司的損失就是這個(gè)數(shù)莉兰,沒(méi)賺到就等于損失挑围。之后,該企業(yè)也并沒(méi)有吸取教訓(xùn)糖荒,依舊在作杉辙,疫情結(jié)束后更是日落西山,員工們被用各種方式逼走或開(kāi)除捶朵,僅一個(gè)季度的時(shí)間蜘矢,辦公室就空了大半,桌上落滿了灰塵综看,本人也是那個(gè)時(shí)候被逼走的品腹,之后就和所有其他人一樣徹底站在公司的對(duì)立面了,曾經(jīng)的熱情早已不復(fù)存在红碑,對(duì)公司的責(zé)任感也早已被消磨殆盡舞吭,若只是裁員,很多人并不會(huì)對(duì)公司有多恨析珊,但該企業(yè)不只是裁人而已镣典,而是對(duì)你各種詆毀,洗腦唾琼,逼你認(rèn)可他們的價(jià)值觀兄春,你必須贊成他們的所作所為,否則就是無(wú)休止地談話锡溯。更可惡的是赶舆,他們?cè)谧鲞@些事情后,找你談話都讓黨支部出面和你聊祭饭,明明是他們自己作惡芜茵,卻非要打著黨的旗號(hào),真的是可惡至極倡蝙。后來(lái)黨支部的那些員工也和其他人一樣被逼走了九串,并沒(méi)有因?yàn)槭屈h員就能躲過(guò)一劫,有的人離職比我還早寺鸥,最終是誰(shuí)也沒(méi)躲過(guò)去猪钮,除了老板的親戚。
至此胆建,當(dāng)初為公司做過(guò)各種重大貢獻(xiàn)的元老都已不在了烤低,很多人在公司奉獻(xiàn)了五六年,最終都被逼走了笆载,什么也沒(méi)得到扑馁。CTO早在我入職的當(dāng)月就不在了涯呻,我也是在入職一年半以后被逼走,所有的其他高管也一個(gè)不剩腻要,目前就財(cái)務(wù)總監(jiān)還在复罐,其他人都不在了。
截止到目前雄家,該企業(yè)尚未破產(chǎn)市栗,聽(tīng)同事說(shuō)該企業(yè)的股東們意識(shí)到了投資風(fēng)險(xiǎn),多方打探企業(yè)的情況咳短,多名已離職高管都被找過(guò)打探情況填帽,后來(lái)CEO以自己經(jīng)營(yíng)不善為借口應(yīng)付過(guò)去了,該企業(yè)現(xiàn)在又回歸老本行了咙好,不再涉及防疫項(xiàng)目篡腌,但是人才都沒(méi)了,招聘也因網(wǎng)上的各種爆料導(dǎo)致新員工不敢去入職勾效,企業(yè)還有未來(lái)嗎嘹悼?
素材說(shuō)明:
本文所述案例,絕大部分來(lái)自于本人的親身經(jīng)歷层宫,部分來(lái)源于該企業(yè)的知乎話題內(nèi)各離職員工的爆料杨伙,少量來(lái)源于離職群和維權(quán)2群。因素材較多萌腿,本文并未將所有事情全部寫(xiě)入限匣,被選用的案例基本都是我可以100%確認(rèn)真實(shí)性的案例,那種無(wú)法證明真?zhèn)蔚囊桓盼催x用毁菱。雖然有些事根據(jù)同事的描述我能斷定真實(shí)的可能性在99.9999999%以上米死,但對(duì)于未在這家企業(yè)工作過(guò)的路人來(lái)說(shuō),所述內(nèi)容看起來(lái)未免會(huì)顯得很夸張贮庞,甚至懷疑其真假峦筒。的確,對(duì)于未經(jīng)歷過(guò)的人來(lái)說(shuō)窗慎,的確難以想象人可以壞到那種程度物喷,企業(yè)可以無(wú)恥到那種程度,這已經(jīng)不是網(wǎng)上那種常見(jiàn)的裁員糾紛導(dǎo)致仲裁的那種普通層級(jí)了遮斥,真實(shí)情況遠(yuǎn)遠(yuǎn)超出你的想象峦失,甚至可以一再突破你作為人類的認(rèn)知下限。所以這種案例我基本沒(méi)選用伏伐,只寫(xiě)了一些大家尚能接受的案例宠进。本文的首發(fā)日期是20240313,未來(lái)的幾年內(nèi)會(huì)不斷更新藐翎,每當(dāng)我得到新的素材并可以確認(rèn)真實(shí)性材蹬,我都會(huì)將其更新至本文中。也歡迎各前同事踴躍提供各種案例吝镣,可以微信直接發(fā)給我堤器,若不想告訴我你的身份,也可以用本平臺(tái)站內(nèi)私信的方式發(fā)末贾。
更新日志(Release Notes):
2024-03-13:初稿首發(fā)闸溃。