主頁 > 軟體設計 > 讀發布!設計與部署穩定的分布式系統(第2版)筆記21_實體層之配置

讀發布!設計與部署穩定的分布式系統(第2版)筆記21_實體層之配置

2023-07-07 08:49:46 軟體設計

1. 導致運維失誤的兩大因素

1.1. 隱秘的連鎖反應

1.2. 暗藏的高復雜度

1.3. 影響著配置屬性

2. 配置

2.1. 配置屬性是系統用戶介面的一部分,供支持其開發和運維的人員使用

2.1.1. 最易被忽視

2.2. 生產級別的軟體都有大量可配置的屬性

2.2.1. 主機名

2.2.2. 埠號

2.2.3. 檔案系統位置

2.2.4. ID號

2.2.5. 用戶名

2.2.6. 密碼

2.3. 任何屬性出現錯誤,系統都會遭到破壞

2.3.1. 即使該系統大部分時間能夠正常作業,也仍有可能在某個重要時刻中斷服務

3. 組態檔

3.1. 由于同一個軟體需要在不同的實體上運行,因此某些配置屬性可能會因機器而異

3.2. 代碼應該在部署目錄之外查找適合相應部署環境的配置

3.3. 組態檔會包含整個企業中最敏感的資訊:生產資料庫的密碼

3.3.1. 要避免將不同部署環境的配置值保存在版本控制系統中

3.4. 只要將配置資訊存放在與源代碼不同的存盤庫中,將其鎖好,僅對有權訪問的人開放,并且管理員能夠根據程序、程式和執行人等授予或撤銷對相關配置資訊的訪問權限,那么配置資訊也可以存放在版本控制系統中

4. 易處理基礎設施的配置

4.1. 基于鏡像的環境中無法針對不同的實體改變其組態檔

4.2. 方法

4.2.1. 在啟動時注入配置資訊

4.2.1.1. 提供環境變數或文本blob來注入配置資訊

4.2.1.2. 對大多數小團隊來說,注入配置資訊更為適用

4.2.2. 使用配置服務

4.2.2.1. 將配置資訊注入鏡像的方法通過配置服務完成

4.2.2.2. 實體會對配置服務產生嚴重的依賴

4.2.2.2.1. 配置服務只要一中斷,就立即會引發嚴重級別高達1級的事故
4.2.2.2.2. 當配置服務不可用時,實體就根本無法啟動

4.2.2.3. ZooKeeper、etcd以及其他任何配置服務,都是復雜的分布式系統軟體

4.2.2.3.1. 必須依賴一個精心設計的網路拓撲才能最大限度地提高可用性,并且必須對其容量進行精細的管理

4.2.2.4. 配置服務需要高度的運維成熟度,并會帶來一些顯著的開銷

4.2.2.4.1. 只是服務于一個應用程式,那么就不值得使用配置服務
4.2.2.4.2. 只有服務于組織中更廣泛的應用程式時,才適合進行配置服務

5. 定義配置屬性

5.1. 屬性名稱應足夠清晰,幫助用戶避免“自我失誤”

5.2. 主機就定義為hostname,這樣的命名雖然沒錯,但毫無幫助

6. 明晰性

6.1. 指的是系統容許運維工程師、開發工程師和業務負責人了解其歷史趨勢、當前狀況、即時狀態和未來走向的程度

6.2. 系統級的明晰性視圖將呈現歷史分析、當前狀態、即時行為和未來走向,每個實體都可以提供足夠多的資料構建系統級視圖

6.3. 當且僅當具有某種程度的明晰性時,系統才能更加成熟

6.4. 良好的資料有助于做出正確的決策,在缺乏可信資料的情況下,決策就只能根據某人的影響力、偏見

6.5. 缺乏明晰性的系統無法在生產環境中長期運行

6.5.1. 如果系統管理員不了解系統在做什么,就無法對其進行調整和優化

6.5.2. 如果開發人員不了解生產環境中系統各個部分的運行狀況,那么他們就不能隨著時間的推移,提高系統的可靠性或韌性

6.5.3. 如果業務負責人不了解系統是否在幫助他們賺錢,那么他們將不會投資系統未來的作業

6.5.4. 如果缺乏明晰性,那么每次發布都會讓系統變得更糟,從而令系統發生退化

7. 明晰性設計

7.1. 嚴格的區域可見性只能實作嚴格的區域優化

7.2. 如果每次僅提升一個應用程式的可見性,則會掩蓋擴展效應引發的問題

7.3. 監控和報告系統應該像在系統周圍構建的外骨骼,而不是交織在系統內部

7.3.1. 要密切關注系統內耦合現象,監控框架侵入系統內部相對容易

7.4. 從行程中獲取資訊

7.5. 在實體上運行的行程是完全不明晰的

7.5.1. 除非能在該行程中運行除錯器,否則行程幾乎不會揭示任何關于自己的資訊

7.6. 黑盒技術在系統外部運行,通過外部觀察到的事物檢查行程

7.6.1. 可以在系統發布后實施,通常由運維人員完成

7.6.2. 易用的日志抓取系統(如Splunk)就是黑盒技術的例子

7.7. 白盒技術在系統內部運行,通常這種技術看起來像是由特定語言庫提供的代理

7.7.1. 在開發程序中,白盒技術和行程必須要集成到一起

7.7.2. 白盒技術與編程語言和開發框架之間的耦合更為緊密

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

標籤:架構設計

上一篇:讀發布!設計與部署穩定的分布式系統(第2版)筆記20_實體層之代碼

下一篇:返回列表

標籤雲
其他(162182) Python(38266) JavaScript(25527) Java(18291) C(15238) 區塊鏈(8275) C#(7972) AI(7469) 爪哇(7425) MySQL(7288) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4613) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2438) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) HtmlCss(1992) .NET技术(1985) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1882) .NETCore(1863) 谷歌表格(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
最新发布