在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

軟件高可用實踐那些事兒

OSC開源社區 ? 來源:OSC開源社區 ? 2023-06-20 10:48 ? 次閱讀

前言

關于軟件的高可用,是一個老生常談的話題。“高可用性”(High Availability)通常來描述一個系統經過專門的設計,從而減少停工時間,而保持其服務的高度可用性。其計算公式是:可用率=(總時間-不可用時間)/總時間。

本文重點從落地實踐的視角作為切入點,帶領大家從協作效率,技術落地和運營規范幾個方面來展現高可用的實施步驟和落地細節。為了方便理解,先來統一語言話術,看一下軟件交付過程中的各個階段,如下圖:

2f751ed4-0e92-11ee-962d-dac502259ad0.png

為什么說軟件的高可用會面臨著諸多挑戰呢?

從需求交付鏈路來看,要完成目標交付,需要產品,研發,測試,運維,運營等多方利益相關者的密切配合。有些項目需求,合作者有時能夠達到上百人,每個人職責分工各不相同,但卻相互配合依賴,任何一個環節出現紕漏,可用率就有可能受到影響;

從時間角度來看,如果要達到全年99.99%的可用率,就意味著一年當中,允許有故障的時間為:365*24*60*(100%-99.99%)=52分鐘,如果要達到5個9的可用率,允許故障的時間僅為5分鐘,這差不多是我們發現問題后,重啟應用的耗時;

從迭代效率來看,不迭代,不上線,問題出現的概率一定會小很多。軟件的迭代效率和可用率之間存在著負相關的關系,平衡好兩者之間的關系,也會面臨著不小的挑戰。

總結一下,我們具體面臨的問題如下:

如何解決需求交付相關協作者多,鏈路長的問題?

如何應對故障時間容忍度低的問題?

如何在頻繁需求迭代的現狀下,保持可用率不受到大的沖擊問題?

協作效率保障

01認知誤區

從整個需求交付鏈路我們可以發現,隨著鏈路的逐級遞增,信息的傳遞鏈路分支就會越多,傳遞層級就會越深。這會導致兩個問題:

1.信息傳遞效率降低;

2.信息準確性變差。

這兩個問題最終導致的結果,就是協作效率的降低。

2fa5cd86-0e92-11ee-962d-dac502259ad0.png

一個沒有實戰經驗的同學往往會認為增加人數,就會提高需求交付效率。其實這種想法不完全正確,具體關系參考下圖:

2fde904e-0e92-11ee-962d-dac502259ad0.png

這就像蓋樓房,如果一個人按部就班的建設,需要100天完成。如果請了100個人來幫忙,能否用1天的時間完成房子建設呢?答案是否定的。

這里面有協作的成本,比如:團隊默契(設計師,瓦工,泥工,水電工),崗位匹配,風險控制;

這里面有流程的依賴,比如:施工依賴于設計,軟裝總在硬裝之后;

這里面有成本預算,比如:整個組織的人才梯度,規模大小(承建方,代理商,承包商);

以上這些,都不是簡單的通過人力鋪設來解決的。

02流程規范

提高協作效率的底層邏輯是通過減少交付鏈路層級,縮短信息傳遞鏈路,進而保證信息的準確性和傳遞效率。(組織建設層面的內容這里不做展開)

這就要求具有今日事,今日畢的行動力。組織層面這叫流程規范,個人層面這叫做事方法,責任心。

盡量避免將當下的事情拖延到下一個環節,否則就會影響后續鏈路的排期計劃和交付效率,極端情況甚至會出現返工的情形。簡言之,考慮清楚,不埋坑。產品需求對研發,研發設計對測試,測試用例對產品等各個交付節點都是如此,交付物一定是靠譜的。

技術落地保障

在需求響應周期中,高質量的落實架構設計,編碼實現,安全上線,部署運營等生產階段,是軟件高可用落地保障的前提和基礎。

01架構設計

架構設計往往影響著系統的前期實現成本(即ROI)和后續運維難度,屬于軟件的頂層設計,這里面既包含宏觀的設計方案,也包含落地細節里的范式約束。

流程保障

邀請架構師參與:核心交易節點、重大需求改動邀請架構師參與,這是閉坑最直接有效的方式;

重視設計文檔:方案描述清楚了,并取得相關利益者的認可,是走在正確道路上的前提。

設計保障

容災設計:要預留后路,提前想清楚,做好容災設計。可回滾,可熔斷,可重試,可降級。

魯棒性設計:無狀態設計,防重設計,冪等設計,數據一致性設計

02編碼實現

如果說架構設計是骨架,那么編碼實現就是神經,血管和肌肉。前者決定了能走多穩,走多久,后者決定著走多快,走多遠。落實到編碼層面,就是代碼的衰老腐敗程度。

流程規范

代碼評審機制:代碼評審不僅僅是發現系統中存在的問題這么簡單。它是一種長期行為,是進行組織文化貫徹和傳承的一種形式和載體。評審的過程中,明確了業務職責邊界,設計與編碼共識,優秀的標準導向等研發共識。相當于通過具象化的案例,給出針對性的指導,這些都是保證團隊戰斗力的基石。

研發過程中的很多問題,通過代碼評審機制可以被發現和解決,比如:

如何對待臨時需求的設計與實現?

如何看待“Hello World!”的N中寫法?

如何理解設計模式和過度設計的邊界?

如何評價當前階段的交付物?

是否有必要引入單元測試?

代碼規范

有沒有對錯誤進行處理?對于調用的外部服務,是否檢查了返回值或處理了異常?

設計是否遵從已知的設計模式或項目中常用的模式?

開發者新寫的代碼能否用已有的SDK/Framework中的功能實現?在本項目中是否存在類似的功能可以調用而不用全部重新實現?

工程中是否引入了無用的,功能重復的,不同版本的jar包依賴?(json類庫,各種utils)

有沒有無用的代碼可以清除?

代碼可讀性如何?有沒有足夠的注釋?

參數傳遞有無錯誤,有沒有使用斷言(Assert)或判斷來保證我們認為不變的條件真的得到滿足?

邊界條件是如何處理的?switch語句的default分支是如何處理的?循環有沒有可能出現死循環?

對資源的利用,是在哪里申請,在哪里釋放的?有無可能存在資源泄漏(包括超時時間,內存、文件、對象引用,大對象,線程數等)?有沒有優化的空間?

代碼的效能如何?最壞的情況是怎樣的?

代碼中,特別是循環中是否有明顯可優化的部分(string的操作是否能用StringBuilder來優化)?

對于系統和網絡的調用是否會超時?如何處理?

代碼是否易于測試(方法行數,圈復雜度,出入參定義是否合理)?

改動是否影響到舊版本、歷史數據、上游能否兼容??接口設計是否有考慮冪等、并發、越權,降級等問題?

是否存在緩存、數據庫性能問題以及多數據源數據一致性的問題?

上線方案是否考慮了灰度方案,數據狀態不一致問題?

03安全上線

線上70%的故障都是由某種變更而觸發的,其中相當一部分占比是不規范的上線引起的。所以安全上線這一環節至關重要。

流程規范

嚴禁頻繁上線:比如,每周不大于2次;

嚴禁高峰期上線:降低問題影響范圍;

嚴禁私自上線:有改動,必須通過測試驗證,產品回歸確認;

過程規范

摘流量:選擇第一批機器jsf下線/np摘流量(選為冷備);

看日志:觀察日志確認摘除機器無流量;

服務預熱:確認機器啟動成功,核心業務接口需要接口預熱;

掛流量:掛載上線機器流量;

看指標:觀察上線機器mdc指標是否異常(cpu、內存、負載)、日志是否有異常。

04部署運營

實現高可用的一個很重要的手段就是能力冗余。下面給出方向和思路,具體落地細節和策略,可以根據具體情況各自延展。

網絡

運營商層面,聯通,電信,移動等;

鏈路節點方面,VIP,CDN,路由器/交換機,反向代理,客戶端,瀏覽器等;

存儲

無論是數據庫主從架構,還是ES的副本架構,都是實現存儲高可用的手段,重要數據要利用好相關特性;

在進行數據結構設計時,同樣也需要做好分流策略,容量規劃,數據拆分或異構。比如:避免緩存熱key,數據庫表吞吐量瓶頸,數據庫連接數限制等各種影響高可用的問題出現。

服務

橫向擴容:服務要保證可以通過添加資源的方式進行能力擴容,這一點非常重要;

服務分組:按照業務方或使用場景,對服務進行不同粒度的隔離,防止極端情況導致服務相互影響;

極限策略:主要是一些極端異常情況下的防御策略,目的是意外發生后,盡量保持服務的可靠性。比如:限流,熔斷,重試,快速失敗等;

灰度策略:新功能上線,往往是最容易出現問題的時候,擁有成熟的流量灰度能力,是控制問題影響范圍的關鍵;

運營規范保障

01運營規范

1.可監控:系統運行狀況

2.可報警:異常情況能夠通知到系統相關人員

3.可定位:出現問題后,能夠快速定位問題原因

4.可修復:出現異常情況,能夠在第一時間進行問題修復;

02應急預案

高可用意味著對故障時間的容忍性差,意味著沒有時間進行故障排查和修復,更沒有時間打開代碼進行漏洞排查。這就要求我們有一套完備的應急預案,這套預案能夠解決大部分可預見的故障問題。

反詐在身邊

恢復生產第一;

排查問題第二;

詳細事故應急處理手冊,可以參照下圖:

300afd00-0e92-11ee-962d-dac502259ad0.png

過程規范

網絡,服務,存儲分三個維度制定對應方案,并將應急預案清單(文件名:checklist)填寫到自己的代碼庫中,保持內容傳承和更新;

可預見性,即問題觸發場景要寫清楚。舉例:按照當前進度(1萬/天),隨著數據庫數據的增加,預計10個月后,數據庫表(xxx表名)會出現慢查詢;

可執行性,能夠消除問題的解決方案。舉例:啟動歷史數據歸檔任務(xxxWorker),將歷史數據進行轉移到歸檔數據庫中;

03規范達標

再好的流程和規范都需要有對應的機制來貫徹執行,否則就是鏡中花,水中月,看著美好,實則沒用。可執行,能度量,是按照目標變好的前提。所以這里給出一個《高可用達標定期自查表》的工具,輔助規范落地。

307e1ab0-0e92-11ee-962d-dac502259ad0.png

總結

本文從“高可用為什么存在著很大挑戰?”的問題展開探討,強調了需求交付過程中,協作效率的重要性,并指出了為什么要遵從“今日事,今日畢”的工作原則。又從架構設計,編碼實現,安全上線,部署運營等幾個方面,詳細介紹了技術落地保障相關的指導規范和落地細節。最后又從上線后運營的角度,給出了應急預案三板斧,規范達標定期自查表等比較實用的運營保障工具。希望能夠給讀者帶來幫助。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 信息
    +關注

    關注

    0

    文章

    407

    瀏覽量

    35786
  • 軟件
    +關注

    關注

    69

    文章

    5093

    瀏覽量

    88761

原文標題:軟件高可用實踐那些事兒

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux內存的那些事兒

    CPU、IO、磁盤、內存,可以說是影響計算機性能的幾大關鍵因素。今天,我們就來探究一下內存的那些事兒
    發表于 09-08 14:16 ?863次閱讀

    NIOSII那些事兒REV7.0

    NIOSII那些事兒REV7.0
    發表于 03-07 11:54

    FPGA那些事兒-驅動篇I

    FPGA那些事兒-驅動篇I
    發表于 09-28 13:58

    mos管的那些事兒分享!

    通俗易懂,百度上要下載券,我直接在其他網站下了,在這里發出來,備用。MOS管的那些事兒.rar (1.33 MB )
    發表于 08-28 00:43

    NIOS那些事兒(CYCLONE IV補充)REV1.1等

    NIOS那些事兒(CYCLONE IV補充)REV1.1。
    發表于 03-14 10:43 ?1次下載

    電源選型的那些事兒

    電路教程相關知識的資料,關于電源選型的那些事兒
    發表于 10-10 14:34 ?0次下載

    Linux那些事兒linux的入門介紹

    電子發燒友網站提供《Linux那些事兒linux的入門介紹.pdf》資料免費下載
    發表于 05-02 08:00 ?5次下載

    Linux的那些事兒之我是Sysfs

    Linux的那些事兒之我是Sysfs
    發表于 10-29 09:28 ?5次下載
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事兒</b>之我是Sysfs

    Linux的那些事兒之我是SCSI硬盤

    Linux的那些事兒之我是SCSI硬盤
    發表于 10-29 09:32 ?19次下載
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事兒</b>之我是SCSI硬盤

    Linux的那些事兒之我是PCI

    Linux的那些事兒之我是PCI
    發表于 10-29 09:35 ?10次下載
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事兒</b>之我是PCI

    Linux的那些事兒之我是Hub

    Linux的那些事兒之我是Hub
    發表于 10-29 09:37 ?7次下載
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事兒</b>之我是Hub

    Linux的那些事兒之我是Block層

    Linux的那些事兒之我是Block層
    發表于 10-29 09:43 ?9次下載
    Linux的<b class='flag-5'>那些</b><b class='flag-5'>事兒</b>之我是Block層

    MOS管的那些事兒.課件下載

    MOS管的那些事兒.課件下載
    發表于 12-06 15:14 ?0次下載

    關于射頻微機電系統開關的那些事兒

    關于射頻微機電系統開關的那些事兒
    的頭像 發表于 12-06 14:58 ?697次閱讀
    關于射頻微機電系統開關的<b class='flag-5'>那些</b><b class='flag-5'>事兒</b>

    RFID和NFC之間的那些事兒,你真的了解嗎?

    RFID和NFC之間的那些事兒,你真的了解嗎?
    的頭像 發表于 12-15 09:38 ?1803次閱讀
    RFID和NFC之間的<b class='flag-5'>那些</b><b class='flag-5'>事兒</b>,你真的了解嗎?
    主站蜘蛛池模板: 亚洲天天做日日做天天看2018 | 永久免费视频网站在线观看 | dy888午夜秋霞影院不卡 | 亚洲国产色婷婷精品综合在线观看 | 亚洲男人天堂手机版 | 国产呦精品系列在线 | 亚洲第一区二区快射影院 | 中文字幕一区视频 | 免费大片黄日本在线观看 | 男操女视频网站 | 亚洲理论视频 | 国产成人a一区二区 | 一二三区在线视频 | 日本高清中文字幕在线观穿线视频 | 四虎影院精品在线观看 | 亚洲成人在线免费 | 精品国产综合区久久久久99 | 四虎最新永久在线精品免费 | 亚洲色图.com | 免费网站啪啪大全 | 人人人人干 | 77788色淫网站女女免费视频 | 日本aaaa级毛片在线看 | 欧美黄色xxx | 新版天堂中文网 | h在线观看免费 | 欧美性淫爽www视频播放 | 婷婷久久久五月综合色 | 酒色成人网 | 日本免费一区二区三区视频 | 国产精品美女自在线观看免费 | 1000部禁片黄的免费看 | 亚洲欧美日韩动漫 | 精品伊人久久大线蕉色首页 | 女人69xxx| 你懂的免费在线视频 | 天天拍夜夜添久久精品免费 | 亚洲三级免费 | ccc36色影| 欧洲色| 欧美jizz大又粗 |