主頁 > 軟體設計 > 安全生產 - 系統穩定性建設

安全生產 - 系統穩定性建設

2022-09-16 09:07:37 軟體設計

 

 

前言

 

安全是產品的底座,是體驗的基礎,也是企業的一項核心競爭力,安全生產是一項系統性的作業,同時也是一件比較瑣碎的事,需要做方方面面的考慮盡一切可能保障系統安全穩定運行,個人之前一直負責商品的穩定性作業,在這方面有比較多的經歷和實踐,

 

記得在18年的時候,我們做商品發布的組件化改造,當時正好碰上網站剛開始類目調整,一度連續3個月每個月都有故障,當時穩定性的壓力很大,當然那也是一個貧訓,商品的穩定性建設也是從那個時候開始起步,然后逐步的完善,

 

大綱

 

安全生產建設大致上可以分為這三個階段:

 

事前:故障預防,這里需要考慮的就是怎么通過預先的設計,最大限度的保證質量,降低風險,提升穩定性,

 

事中:應急處置,出了問題以后怎么處理,快恢手段有哪些,流程是什么,

 

事后:復盤改進,事后肯定要總結經驗,舉一反三解決同類的問題,不要被同一棵石頭絆倒兩次,

 

故障預防

 

魏文王問扁鵲:你醫術為啥這么好?


扁鵲說:我醫術在我三兄弟里面算差的,最好的是我大哥,還沒有任何癥狀就撲滅了,次好是我二哥,一點點輕微的癥狀就解決了,再次就是我,出了嚴重的問題我才開始醫治,所以雖然我名滿天下,但是我醫術可比我的大哥二哥差得遠啦,

 

做個類比,故障預防做的好的就是大哥,應急處置做的好的就是二哥,總結復盤做的好的就只能是扁鵲了,所以預防生產事故的發生是最重要的,也是最基礎的,

 

架構設計

 

單個技術點在絕大部分時候都可以正常作業,但是當規模和復雜度達到一定程度的時候,失敗其實無處不在,--《安全生產指南》

 

面向失敗設計是應對安全生產最重要的方法論和指導方針,只有對各種失敗場景有提前的布防才可以在出問題的時候有效應對,那么面向失敗設計具體有哪些方式方法?

 

  • 冗余設計避免單點

 

冗余最早是航空器常用的技術術語,飛機設計最顯著的一個特點就是冗余,比如一般大型客機都會有兩套甚至四套引擎,類似的還有兩套基本同質的主副駕駛系統,為什么要這么設計,還有額外的成本,根本原因還是因為冗余設計可以在一套出現問題時另一套依然能保障系統正常運行,

 

 

在ICBU的場景中中美新容災就是我們最主要的冗余設計,也是穩定性保障最核心的手段,商品是ICBU內第一個構建起中美異地容災能力的業務場景,也正是因為有了這個能力幫助商品避免了不少的故障發生,

 

  • 服務分治避免雪崩

 

其實就是做好隔離,中國古代的木船設計有一個很重要的發明叫“水密隔艙”,現在很多軍用艦船也有借鑒,典型的像航空母艦據說有2000多個獨立的密閉隔倉,作用就是當船舶遭遇意外或者破損進水時,可以通過隔離受損艙室級訓下沉,它是一種安全生產的設計,對我們有借鑒意義,系統要做模塊化的設計、薄弱點或者風險點可以被單獨隔離和降級,保障整體可用性,

我們之前發生過一次問題,因為ES集群中一臺物理機故障導致上層應用的執行緒池被耗盡從而引起服務不可用,根本原因就是隔離沒有做好,

 

 

  • 服務冪等保證一致


服務或介面應該保證冪等,多次呼叫和一次呼叫結果應該是一致的,避免重復呼叫導致資料或邏輯例外,

 

 

  • 服務無狀態可漂移


服務或介面最好設計成無狀態模式,從擴展性的角度來講,無狀態模式可以很容易的根據流量情況彈性伸縮,

 

 

 

  • 運行狀態精確監控


把我們的應用系統比做飛機,我們的系統也需要各種傳感器和儀表盤去實時監控系統運行狀態,系統對于運維人員來說應該是個白盒而不是黑盒,核心的業務或者系統監控有助于提前發現問題,細粒度、多維度的監控有助于快速定位問題,

 

  • 自動化運維管控

 

最好的處理是不需要處理,

 

核心思路是一切操作標準化、流程化、自動化,降低人為干預、提升操作效率,像商品發布/商品管理都有一些自動容災預案,可以在出現問題時自動快恢,下面的案例是周末出現的一次風險預警就是通過自動執行快恢避免了線上故障的發生,

 

 

 

另外今年旺鋪的一次風險預警,在出現容量性能問題的時候也是通過自動彈性擴容快速解決了問題,

 

編碼開發

 

  • 并發控制


在服務能力受限的情況下,我們需要主動控制客戶端并發數,特別是任務型場景,通常有靜態限流和動態限流兩種選擇,


靜態限流比較簡單但有一個局限就是資源利用率不高,動態限流的原理是根據服務端的回應情況動態調整客戶端速率,簡單來講就是計算服務超時/例外的數量,超時多了請求就放慢一點,

 

  • 資料控制


資料是資訊系統中的血液,通過資料的流動才能將一個個業務或功能模塊串聯在一起,一方面是資料的生產要嚴格校驗保證資料的合法性和準確性,另一方面是資料的消費,需要評估單次處理的資料量、資料處理頻次,不要因為高并發、海量資料導致系統記憶體、負載承壓,商品曾經因為這個經歷過最慘痛的教訓:

 

 

 

  • 防御編程

 

1.批量容錯:比如一個串列肯定不能因為某一行有問題而導致整個串列出不來,同樣的同步任務也不能因為某一個任務例外而堵塞整個任務佇列,所以需要對這些場景做好容錯處理,其實還是在強調隔離風險,像商品的引擎同步任務、質量分計算任務都有獨立的在線實時佇列、實時重試佇列、離線佇列,目的就是為了不影響實時增量任務的正常執行,

 

2.資料兼容:另外有些存量業務,可能已經積累了很多的歷史資料,拿商品來舉例,今天我們的認知里moq就是最小起訂量肯定是數字,包裝重量肯定也是數字,但其實之前商品的部分屬性是可以自定義的,有些可能是用戶隨便填的,所以在功能升級迭代的程序中需要考慮對歷史資料的兼容,

 

  • 簡化代碼

 

越簡單東西的越可靠,越復雜的東西容錯性越低,把簡單的事情想復雜,把復雜的事情做簡單,

 

少用同步鎖:系統設計和編碼盡量使用無鎖實作,避免引起不必要的死鎖問題,商品同樣因為同步鎖的原因出現過線上問題:

 

 

慎用執行緒池:其實跟同步鎖類似,它是一個比較危險的操作,要做好測驗和驗證,

 

容災防護

 

  • 過載保護


過載保護是保障系統整體可用的重要手段之一,設計過載保護可以有效避免因為流量問題導致的系統不可用,所以我們的應用要具備自我防護的能力,web型應用接入流量清洗系統,服務型應用做好服務限流,

 

  • 依賴降級


當前大部分的業務系統都比較復雜,特別是在分布式架構中,一個請求可能依賴多個系統支撐共同完成,呼叫鏈路中的任何一個節點都可能影響整體穩定性,所以一方面我們要保證自身服務的穩定性,另外一方面也要考慮在依賴服務出現問題后怎么保證主鏈路的可用,而依賴降級的前提是先理清依賴關系:

 

1.弱依賴就自動降級比如校驗類的,

2.有一些是強依賴但可以異步處理的就降級后異步重試,

3.有一些是強依賴又不能異步的,就需要產品化了,把降級能力作為產品設計的一部分,

 

下圖是商品發布鏈路的部分容災降級點:

 

 

 

這其中超過95%都從來沒有使用過,安全生產的建設就是這樣,很多穩定性保障措施大部分時候都默默無聞,但是真正使用到的時候卻都是關鍵的時刻,

 

監控預警

 

  • 監控標準化


一堆無意義的"System Error"無濟于事,標準錯誤碼和SPM監控是當前比較好的一個實踐,

 

  • 預警有效性

 

1.召回優先:預警有效性其實比較難做,監控覆寫度越廣,預警機制越靈敏,報警量可能就會越多,誤報也會越多,商品無人值守樣板間在開始時候也是召回優先,誤報慢慢收斂,這是一個持續治理的程序,

2.報警分層:另外可以根據監控場景對報警分層, 通過報警分層一定程度上可以兼顧召回和免打擾,重要的業務系統監控推送到核心預警群,非故障場景或者輔助定位的監控報警可以推送到其他普通預警群,同樣也需要對報警通知方式做分層,比如成本率下跌2%可能是釘釘通知,下跌5%就需要電話通知,

 

測驗回歸

 

測驗回歸是質量保障很重要的一個環節,

 

  • 單元測驗


單測我相信有人會懷疑它的價值,而且在剛開始的時候的確比較耗費時間精力,但是它是一個難而正確的事情,這里分享兩點:

 

1.單測是代碼的照妖鏡,我們會發現通常單測很難跑起來的往往就是代碼設計不合理,耦合過多,單測可以幫助自己優化代碼,

2.單測是質量的保證,前端時間跟我對接的前端同學突然跟我說,“文清,沒想到這次專案這么順利”,這個專案也是我個人第一次在一個專案里寫完整的單測代碼,從我個人的實踐經歷來看,單測特別是對于喜歡重構的人來說還是非常有價值的,

 

  • 巡檢/流量回放


我們當前的業務大部分都比較復雜,有非常多的分支流程,舉個例子商品有5000多個葉子類目,每個類目的商品表單是不一樣的,這么多的場景靠人肉是根本覆寫不了的,只能靠機器和自動化去回歸,前臺頁面場景巡檢是一個比較好的方式,它可以模擬用戶操作,對于后臺服務流量回放也是一種可行的方案,商品無人值守樣板間也在使用巡檢和流量回放來保障發布質量,

 

  • 壓測


新的服務上線前需要評估流量和性能情況,根據預估對服務進行壓測以驗證是否能夠滿足需求,同時整個鏈路能夠支撐的QPS上限也需要通過壓測確定,幫助我們合理的評估系統水位,

 

變更發布

 

回過頭去分析會發現其實我們大部分問題都是變更引入的,商家技術部三規九條里有規定變更發布三原則 “可灰度、可監控、可回滾”,發布之前要做好發布計劃和評審,檢查是否滿足這三個要素,

灰度分為功能灰度和發布灰度,功能灰度可以根據自己的團隊情況設計,發布灰度首先從流程上建議增加小流量灰度環境,部分流量可以劫持到小流量環境,一些重大的問題可以在小流量環境提前發現,另外有條件的應用也建議分單元/磁區域分開部署,短時間內模擬藍綠部署,為容災切流創造條件,

 

對于回滾,切記要做回滾驗證,不要一股腦不暫停回滾完,因為之前碰到過一個案例,越回滾問題越嚴重,原因是當時的問題是遠程快取例外導致應用啟動后出現資料例外,回滾重啟后又導致已發布機器本地快取失效放大了影響面,

 

應急處置

 

故障預防是降低問題發生的概率,不是消滅問題,根據墨菲定律,只要存在可能就一定會發生,所以應急處置就是我們的兜底手段,是保證高可用性的重要一環,

 

容災切流

 

出現故障我們首先需要做的不是定位原因,而是及時止血和快速恢復,而容災切流往往是快恢的首選,時效性最高,

 

1.web型應用:當前成熟的方案是vipserver容災機制,原理也很簡單,多單元的機器都掛載到vipserverkey下,正常情況下因為同機房規則生效請求都是單元內呼叫,當需要容災時拉黑例外單元下的機器,同機房規則失效流量就會串流到其他單元從而達到跨單元容災的效果,

 

 

 2.服務型應用:當前還沒有特別標準的方案,商品的做法是使用代理服務多地注冊,在容災切流時通過呼叫不同單元的代理服務來達到跨單元切流的效果,

 

 

變更回滾

 

出現線上問題的時候,如果無法通過容災切流的手段解決就要看一下有沒有變更發布,判斷如果可能跟變更有關就先回滾,重要的還是要做好回滾驗證,

 

擴容重啟

 

遇到突發流量、下游系統慢或本身資源容量不足都可能導致應用自身負載承壓,在遇到資源瓶頸的時候快速擴容就是首選,這個時候考驗的是系統的彈性能力,當前也有一些可行的方案:

 

1.VPA:基于CPU/記憶體垂直彈性,調整的是cpu核數和記憶體大小,不過有上限,

2.HPA:基于CPU/記憶體水平彈性,缺點就是擴容速度不夠快,還是要經歷應用啟動的程序,應對突發的流量波峰可能不太可行,

3.KPA:基于流量/回應水平彈性,據稱是CSE的替代者,猜測應該可以通過回放記憶體鏡像來實作快速擴容,

 

當無法擴容的時候,重啟是解決系統性能問題的另一個重要手段,據不科學的統計,90%的暫不明原因的性能問題可以通過重啟暫時解決或一定程度上緩解,

 

限流降級

 

面對容量問題,除了擴容以外另一個選擇就是限流和降級,可以根據重要程度優先對邊緣應用和非核心場景做限制,

 

1.分層分場景:我們支撐的業務肯定是有優先級的,有核心的業務,也有邊緣場景,當需要做限流降級處置的時候不能一刀切,要根據重要程度先對非重要的應用作限制,

2.分用戶粒度:同樣我們服務的用戶也是有優先級的,以商品為例有付費商家和免費商家,那么在整體資源受限的情況下就可以先對免費商家做降級處理,

3.根據資源占用分層:像商品場景存在品量非常多的商家,這部分用戶的某些操作可能對系統資源占用比較大,比較常見的就是引起資料熱點或者資料偏移,而這些都是影響性能的因素,所以對資源占用大戶也要有對應的處置措施,比如禁讀禁寫,

 

應急公告

 

如果短時間內無法恢復(參考1-5-10標準),那么就需要掛應急公告減少用戶進線,每個業務場景的應急公告應該預先編制完成,在有需要時一鍵執行,

 

應急參考

 

應急處置的方案有很多,但是在處理線上問題時應該是有優先級的,先做什么其次做什么最后做什么,下圖是整理的一份應急處置SOP參考檔案,它不是操作手冊,不能在出問題時再去查閱,而是每個人腦子里應該有這樣一張圖,對于線上應急處理流程爛熟于胸,

 

 

 

故障演練

 

所有的安全生產的措施都做好了,那么怎么驗證它可以正常作業,故障演練是很好的手段,一方面可以檢驗穩定性保障措施的可用性,另外一方面也可以鍛煉技術人員的應急處理能力,我看到過不止一次有人在處理故障時很緊張手都在抖,所以常態化的故障演練,特別是突襲演練可以讓更多人參與到應急處理的程序中去,多實踐才可以在真正發生問題的時候有條不紊,

 

復盤改進

 

歸納總結

 

出問題不可怕,重要的是分析這個程序中存在什么問題,流程機制上有什么漏洞,從而幫助我們做的更好,商品的穩定性措施就是在一次次面對各種問題的程序中總結和實踐的,

 

經驗分享

 

歸納總結是利己,避免自己再犯相同的錯誤,經驗分享是利他,幫助別人不要掉到同樣的坑里,另外技術風險防控平臺里的大部分故障都是公開的,可以看看自己的應用有沒有同樣的風險,

 

總結

 

風險意識:做好穩定性最重要的是要有風險意識,對生產保持敬畏之心,有風險意識才會在產研的全流程中關注穩定性的事情,比如新引入了一個依賴,就會考慮它例外了對于自己有什么影響,有沒有容災方案,能不能降級等等,另外有風險意識也會慢慢的形成一些良好的習慣,比如定期Review系統水位,我個人每天早上剛到公司做的第一件事就是看一下監控和報警,

 

減少損失:應急處置的第一原則是把損失降到最低,先恢復,再定位,

 

風險自愈:安全生產建設最終的目的應該是具備自愈能力,在系統出現問題時能夠及時介入并自動恢復,

 

向人體學習,他擁有一套三重的免疫系統,這是一個百年的相當穩定的系統,-- 魯肅

 

所以事前要有風險意識,事中要及時止損,事后查漏補缺構建風險自愈的能力,更重要的是秉持長期主義的精神,相信最終能夠做好安全生產的事情,

 

 

作 者 | 彭文清(馬恪)

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

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

標籤:架構設計

上一篇:如何強制msbuild在CodeAnalysis上創建SARIF檔案

下一篇:微服務設計(二)---springCloud基礎及注冊中心

標籤雲
其他(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