主頁 > 軟體設計 > 連阿里大神都畏懼的高可用風險

連阿里大神都畏懼的高可用風險

2022-01-17 17:58:25 軟體設計

我是樂羊,一個熱愛風險防控的人,之前參與過螞蟻Glocal多個站點從0到1的建站和高可用建設,目前正在參與螞蟻大安全的高可用建設,無論是一個域,一個BG,還是一個站點,雖然范圍有大有小,物件有所不同,但其高可用的理念都是相通的,今天將自己對高可用的一點點思考以及總結的【nPRT公式】分享給大家,

本文采用“高可用是什么,為什么要高可用,怎么做高可用,為什么這么做,軟體風險又在哪里”的邏輯來介紹,

高可用是一種控制風險的能力

高可用是一種面向風險設計,使系統具備控制風險,提供更高的可用性的能力,

為什么要高可用

對于一個公司而言,“為什么要高可用”可以完整理解為“公司為什么要(做系統)高可用”,以公司為物件,從內看包括:人,軟(物),硬體(物);從外看包括:客戶,股東,社會;從自身看包括:公司,

 

 

 

高可用的大前提:所有事物都不是100%可靠的

所有事物都是變化的(唯一不變的是變化),

所有變化的都不是100%可靠的,

結論:所有事物都不是100%可靠的,

內因:人、物都不是100%可靠的

  • 從人的層面:人都是有可能犯錯的,
  • 從軟體層面:軟體都是有可能有BUG的,
  • 從硬體層面:硬體都是有可能會壞的,

從概率學角度分析,凡是有可能會出錯的,只要變化次數足夠多,最終出錯的概率會無限趨向于1,

外因:無高可用,對外影響面是很大的

  • 從客戶角度:無高可用,客戶服務可能會中斷,
  • 從股東層面:無高可用,股價可能會下跌,
  • 從社會角度:無高可用,社會秩序可能受影響,

根因(本質):控制風險

從公司自身角度:控制風險,保障公司價值,避免傷及根本,

如何做高可用

1.風險相關概念

  • 風險:指未來會發生危害的一種可能性,但實際未發生,記為r,
  • 故障:指已發生或正在發生危害的一種事實,是風險變現實的結果,
  • 風險概率:指一個風險變故障的概率,用它來表示風險觸發為故障的難易程度,記為P(r),
  • 故障影響范圍:指在單位時間內,一個故障造成的危害影響,記為R(r),
  • 故障影響時長:指一個故障持續的時間,記為T(r),
  • 故障影響面:指一個故障影響范圍乘以故障影響時長的總和,這里用故障影響面來表示故障總的危害程度,記為F(r),
  • 風險期望:指每個風險變故障的概率乘以每個風險變故障后的故障影響面的總和,這里用風險期望來表示風險的潛在危害程度,記為E(r),

2.風險期望的公式

根據上節的定義,可以推匯出風險期望的公式如下:

 

 

r代表風險,風險期望會隨著風險的數量n和每個風險的P、R、T下降而下降,簡稱nPRT公式,

注:如果要參考該公式請注明出處,

3.控制風險的4大因素(nPRT)

減少風險數量,n

從源頭遠離風險,做到與風險載體無連接,無關系;那么該風險概率就是0,也不關心該風險發生后的故障影響面是大是小,完全不關心,

  • 例如:重大節榷訓動,施行全站封網,變更的數量就會得到一個明顯的下降,就是典型的減少風險數量,
  • 例如:系統A完全不依賴Oracle,那系統A就不用關心Oracle的任何風險,哪怕美國總統突然緊急宣布Oracle立即立刻禁止在中國使用,系統A也無所謂,
  • 例如:最近新冠大流行,人傳人很可怕,如果你今天選擇不上班不出門,那你今天就不用擔心被外面的行人和同事傳染,

降低風險變故障的概率(即:增加風險變故障的難度),P

把風險當成一個物件看待,給它層層設卡,增加風險變故障的門檻和難度,不要再讓“不小心多了一個空格或字符,系統就掛了”這種慘案輕易出現,

  • 例如:人員B要對系統C進行變更,可以對人員B增加變更認證考試,對變更內容要求線下(或仿真)測驗,對變更內容進行CR,系統C提供變更效果預覽能力(類似監控模式或試運行),萬一人員B想惡意變更搞破壞,還可以增加非同人復核,系統C可以增加防錯設計進行保護等等,
  • 例如:以新冠為例,帶口罩,勤洗手,多通風等就可以降低染上新冠的概率,

減小故障影響范圍,R

以大拆小,將一個整體拆分成N個小的個體,每個個體之間進行相互隔離,單個個體出問題僅影響單個個體,實作小而美,

  • 例如:分布式架構就是這個的典范,集中式一損俱損,分布式一損即N分之一損,
  • 例如:以新冠為例,網格化管理,各省或市間的流動進行限制,跨省必須核酸+隔離14天,有效控制新冠的傳播范圍,

縮短故障影響時長,T

故障影響時長由故障發現時間和故障止血時間決定,所以要早發現早止血,

發現方式分為:事前的預警,事后的告警,盡可能朝事前預警去做,給止血爭取時間甚至將風險扼殺在搖籃中,

止血方式分為:切換,回滾,擴容,降級 or 限流,BUG修復等,故障出現時第一優先原則為快速止血(如切換、回滾、擴容),嚴禁去定位根因;當無法快速止血時以少流血為第二優先原則,如降級、限流,

止血效率:自動 vs 人工 ;一鍵化 vs 多步操作,盡可能用自動化去代替人工操作,若人工操作時盡量實作一鍵化,提升止血速度,

  • 例如:對于容量水位,可以在警戒線之前劃一條預警線,提前預警,從容應對,
  • 例如:分布式應用集群,任何一臺應用服務器有問題時,負載均衡會通過心跳檢查自動把有問題的應用服務器剔除,將請求轉發給其他(熱)備份冗余的服務器上,
  • 例如:以新冠為例,但由于每個生命都是獨一無二的,沒有辦法切換,也沒有辦法回滾,也不能降級(涉及人道主義),只能對癥下藥慢慢治療,

4.高可用架構設計的7大核心原則

根據nPRT公式,在高可用架構設計時有以下7個核心原則:

少依賴原則:能不依賴的,盡可能不依賴,越少越好(n)

由于所有事物都不是100%可靠的,當2個事物之間有了關系,那么就會相互影響,就互為對方的一個風險,一個出問題可能會影響另外一個,我們統一用依賴來泛指這里的“關系”,

例如:一個系統同時依賴Oracle,Mysql,OB三種關系型資料庫,少依賴原則是改成僅依賴最成熟穩定的OB,不依賴Oracle和Mysql,

什么場景適合多依賴?

當引入依賴(n變大)可以減小PRT中的一個或多個,且使E(r)整體下降時,

例如:為解決DB風險,引入分布式快取,只要2者不同時掛的時候依然可用,

弱依賴原則:一定要依賴的,盡可能弱依賴,越弱越好(P)

事物a強依賴事物b,一旦b出問題時,那么a也會出問題,一損俱損,

所以任何強依賴都要盡可能的轉化成弱依賴,可以直接降低出問題的概率,

  • 例如:交易核心鏈路在交易成功后要要給用戶發放積分權益;交易核心系統需要依賴積分權益系統,好的方式是采用弱依賴,使用異步化的方式,這樣積分權益系統不可用時,大概率不會影響交易核心鏈路,

分散原則:雞蛋不要放一個籃子,分散風險(R)

 

 

打散拆分成N份;避免全域只有1份,否則一有問題影響范圍就是100%,

  • 例如:所有交易資料都放在同一個庫同一張表里面,萬一這個庫掛了,此時影響所有交易,
  • 例如:將自己所有的錢買了同一只股票,萬一這只股票是樂視就慘了,

均衡原則:均勻分散風險,避免不均衡(R)

 

 

 

最好N份中的每份都是均衡的;避免某個份額過大,否則過大的那份一有問題就影響范圍過大了,

 

  • 例如:xx應用集群有1000臺,但由于引流組件BUG,導致所有流量引到了其中100臺上面,導致負載嚴重不均衡,最后因負載無法扛著全面崩潰,類似重大故障已經發生了多次,

 

例如:將自己所有的錢買了10只股票,其中一只占比99%,萬一這只股票是樂視就慘了,

 

隔離原則:控制風險不擴散,不放大(R)

 

 

每份之間是相互隔離的;避免一份有問題影響其他的也有問題,傳播擴散了影響范圍,

  • 例如:交易資料拆分成10庫100表,但是部署在同一臺物理機上;萬一某張表有一條大SQL把網卡打滿了,那10庫100表都會受影響,
  • 例如:將自己所有的錢均分買了10只股票,每只都占10%,但10只都是樂視系的,
  • 例如:古代赤壁之戰就是一個典型的反面例子,鐵鎖連船導致隔離性被破壞,一把大火燒了80w大軍,

隔離是有級別的,隔離級別越高,風險傳播擴散的難度就越大,容災能力越強,

  • 例如:一個應用集群由N臺服務器組成,部署在同一臺物理機上,或同一個機房的不同物理機上,或同一個城市的不同機房里,或不同城市里,不同的部署代表不同的容災能力,
  • 例如:人類由無數人組成,生活在同一個地球的不同洲上,這意味著人類不具備星球級別的隔離能力,當地球出現毀滅性影響時,人類是不具備容災的,

隔離原則是一個極其重要的原則,它是前面4個原則的前提,沒有做好隔離,前面4個原則都是脆弱的,風險很容易傳播擴散開,破壞前面4個原則的效果,大量真實系統故障是因為隔離性做得不好導致的,如:線下影響線上,離線影響在線,預發影響生產,一條爛SQL影響整個庫(或整個集群)等等,

分散,均衡,隔離是控制風險影響范圍的3個核心原則,打散拆分成N份,每一份都是均衡的,且相互隔離,一份有問題,影響范圍為1/N,

無單點原則:要有冗余或其他版本,做到有路可退(T)

 

 

 

快速止血的方式是切換,回滾,擴容等;回滾和擴容屬于特殊的切換,回滾指的是切換到某個版本,擴容指的是將流量切換到新擴容的機器上,

切換得有地方可切才行,所以不能有單點(這里特指強依賴的單點,弱依賴的可以降級),要有冗余備份或其他版本;單點會限制整體的可靠性,

假設單點的可靠性假設是99.99%,它要提升到99.999%是非常困難的,但是如果無單點而是依賴2個(1個掛掉沒有關系,只要不同時掛就行),那整體可靠性就是99.999999% 會有質的提升,

單點故障會導致無法快速止血,拉長整個止血時間,去單點至關重要,這里的單點不僅僅指的是系統節點,也包含人員,如訂閱告警的人,應急的人等等,

對于(重要)資料節點,必須滿足無單點原則,否則極端情況下可能造成資料永久丟失,永遠無法恢復;(重要)資料節點滿足無單點原則后,保障資料一致性比可用性要求更重要,

  • 例如:一個商戶僅支持一個支付渠道,就是典型的單點,萬一這個支付渠道掛了就不能支付了,
  • 例如:一個家庭的所有收入僅依賴父親一個的薪資收入,萬一這個父親病了,就沒有收入了,

無單點原則和分散原則的區別:

  • 當節點無狀態的情況下,打散拆分成N份,每份都是相同的功能,互為冗余,即:節點無狀態情況下,分散原則和無單點原則等價,滿足一個即可,

當節點有狀態的情況下,打散拆分成N份,每份都是不相同的,每份都沒有冗余,需要針對每份再做冗余,即:節點有狀態情況下,既要滿足分散原則又要滿足單點原則,

自我保護原則:少流血,犧牲一部分,保護另外一部分(P&R&T)

外部的輸入都不是100%可靠的,有時候是無意的錯誤,有時候甚至是惡意的破壞,因此針對外部輸入要有防錯設計,給自己多一些保護,

極端情況下可能無法(快速)止血,可以考慮少流血,犧牲一部分保護另外一部分,例如:限流,降級等,

  • 例如:大促峰值期間,一般會提前降級掉很多功能,同時限流,主要是為了保護峰值絕大部分人的交易支付體驗,
  • 例如:人體在失血過多或疼痛過度時就會觸發休克現象,這也是一種典型的自我保護機制,

軟體風險在何方

前面介紹了控制風險的方法,回到軟體系統這個領域,它的風險又在哪里?

以軟體系統為物件,從內看包括:計算系統和存盤系統;從外看包括:人員,硬體,上游系統,下游系統;以及(隱含的)時間,

 

由于每個物件都是由其他物件組成的,因此每個物件還可以繼續往細分解(理論上可以無限分解下去),上面的分解方式主要是為了簡化理解,

1.軟體系統風險的來源

風險源于(有危害的)變化,一個物件的風險來源于所有跟它有關系的物件的(有危害的)變化,因此,軟體系統風險的來源,分為以下7大類:

計算系統變化:運行變慢,運行錯誤

系統運行所依賴的服務器資源(如CPU,MEM,IO等),應用資源(RPC執行緒數,DB連接數等),業務資源(業務ID滿了,余額不足,業務額度不夠等)的負載等都會影響系統運行的風險期望,

存盤系統變化:運行變慢,運行錯誤,資料錯誤

系統運行所依賴的服務器資源(如CPU,MEM,IO等),存盤資源(并發數等),資料資源(單庫容量,單表容量等)的負載和資料一致性等都會影響存盤系統運行的風險期望,

人的變化:變更出錯

變更人員的數量,安全生產意識,熟練程度,變更的數量,變更的方式等都會影響變更的風險期望,

由于變更的人多,變更的次數也多,導致變更成為螞蟻所有故障來源里的TOP1,這也是為什么“變更三板斧”這么出名的原因,

“變更三板斧”正確的排序應該是“可灰度,可監控,可應急”;可灰度代表的是R,可監控和可應急代表的是T,

思考:如果變更三板斧讓你再加一板斧,你覺得應該是什么?

硬體變化:損壞

硬體的數量,質量,使用年限,保養等都會影響硬體的風險期望,硬體損壞會影響上層軟體系統不可用,

上游變化:請求變大

請求分為3個維度:(由無數API匯集而成的)網路流量,(由無數KEY請求組成的)API,KEY,

  • 網路流量過大會造成網路堵塞,影響網路通道中的所有網路流量請求,
  • API請求過大會造成對應服務集群過載,影響整個服務機器上的所有API請求,甚至往外傳播,
  • KEY請求過大(俗稱“熱點KEY”)會造成單機過載,影響單機上所有KEY請求,甚至往外傳播,

所以大促保障的時候,不僅僅是關注核心API的容量保障,還需要考慮網路流量和熱點KEY,

下游變化:回應變慢,回應錯誤

下游服務的數量,服務等級,服務可用率等影響下游服務的風險期望,下游回應變慢可能會拖慢上游,下游回應錯誤可能會影響上游運行結果,

時間變化:時間到期

時間到期往往被人忽視,但它往往具有突然性和全域破壞性,一旦時間到期觸發故障會導致非常被動,所以要提前識別,盡早預警,如:秘鑰到期,證書到期,費用到期,跨時區,跨年,跨月,跨日等,

  • 例如:2019年日本運營商軟銀因證書到期引發3000w用戶長達4小時通信中斷,

以上每一大類風險都可以基于nPRT公式進行逐一分析處理,

2.風險的數量:一生三,三生萬物

任何一個事物既是由其他事物組成的又是其他事物的組成部分,無限回圈下去;一生三,三生萬物,風險的數量是無窮無盡的,

向內看,內含內,可以無限小下去;當原子粒度的問題傳播開時,也可能影響軟體系統的可用性,就像100納米的新冠病毒就可以影響人體的可用性一樣,

向外看,外有外,可以無限大下去;當太陽系毀滅,軟體系統的可用性自然就不復存在,

雖然風險無窮無盡,但是只要我們對風險多一些了解,根據控制風險的一些理念和原則,還是可以更好的降低風險期望,

談一談敬畏之心:

  • 我們對世界的認知是有限的,這也讓我們少了許多恐懼,同時也讓我們少了一些敬畏之心,
  • 我們真正要敬畏的不是處罰條例,而是我們不知道的,以及我們不知道我們不知道,

結束語

  • 所有事物都是變化的,
  • 所有事物都不是100%可靠的,
  • 因此才有了風險,風險是不可見的,可見的是故障,
  • 風險是不能消滅光的,但是可以遠離,可以減少,
  • 故障是不可避免的,但是可以推遲,可以縮小影響范圍,縮短影響時間,

nPRT公式不僅僅適用于軟體系統風險,也適用于其他風險領域,希望對大家有用,

 

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/High_Availability_Risk.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/413127.html

標籤:架構設計

上一篇:微服務架構 | 3.2 Alibaba Nacos 注冊中心

下一篇:手機驗證碼登錄原理、風險和應對策略

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more