主頁 > 軟體設計 > 讀發布!設計與部署穩定的分布式系統(第2版)筆記10_自動化和緩慢的回應

讀發布!設計與部署穩定的分布式系統(第2版)筆記10_自動化和緩慢的回應

2023-06-25 08:12:51 軟體設計

1. 工業機器人

1.1. 具有多層防護措施,防止對人員、機器和設施造成損害

1.2. 防護措施能限制機器人的動作和傳感器的感知

1.3. 機械臂的旋轉范圍會遠遠小于它可以達到的全部運動范圍

2. 自動化

2.1. 它更像是工業機器人

2.1.1. 掌握控制層感知系統的當前狀態

2.1.2. 將其與期望的狀態進行對比

2.1.3. 對系統施加影響,使當前狀態進入到期望狀態

2.2. 自動化系統并未簡單地按照人類管理員的意愿行事

2.2.1. 自動化平臺與管理員關于系統預期狀態的不同“信念”的沖突,引發了2016年8月11日鏈接聚合網站Reddit遭遇停機事故

2.2.2. 刻意的手動更改與自動化平臺之間的沖突

2.3. 自動化使得管理員能夠花費較少的努力進行大量的操作,這就是一個力量倍增器

2.4. 自動化系統面對兩套相互沖突的指令時,也會卡殼

2.5. 由自動化所引發的操作,需要花時間才能完成

2.5.1. 這段時間通常會比監控的時間間隔要長,因此請務必考慮到系統需要經過一些延遲后,才能對操作做出回應

3. 控制層

3.1. 控制層中的軟體主要管理基礎設施和應用程式,而不是直接交付用戶功能

3.1.1. 日志記錄

3.1.2. 監控

3.1.3. 調度程式

3.1.4. 擴展控制器

3.1.5. 負載均衡器

3.1.6. 配置管理

3.2. 基礎設施管理工具可以迅速對系統產生巨大的影響,要在其內部構建限制器和防護措施,防止其快速毀掉整個系統

3.3. 控制層軟體中實作類似工業機器人的防護措施

3.3.1. 如果軟體觀測器顯示系統中80%以上的部分不可用,那么與系統出問題相比,軟體觀測器出問題的可能性更大

3.3.1.1. 被隔離的節點無法正確地感知當前狀態

3.3.1.2. 控制系統會感知環境,但它們有可能被愚弄

3.3.2. 運用滯后原則

3.3.2.1. 快速啟動機器

3.3.2.2. 要慢慢關機

3.3.2.3. 啟動新機器要比關閉舊機器更安全

3.3.3. 當期望狀態與觀測狀態之間的差距很大時,要發出確認信號,這相當于工業機器人上的大型黃色旋轉警示燈在報警

3.3.4. 那些消耗資源的系統應該設計成有狀態的,從而檢測它們是否正在試圖啟動無限多個實體

3.3.5. 構建減速區域,緩解勢能

3.3.5.1. 控制層雖然每秒都能感知到系統已經過載,但它啟動一臺虛擬機處理負載需要花費5分鐘

3.3.5.2. 大量負載依然存在的情況下,要確保控制層不會在5分鐘內啟動300個虛擬機

4. 緩慢的回應

4.1. 通常由過度的需求引起

4.2. 爭著使用已經供不應求的資料庫連接,會使回應變慢,進而加劇這種爭用,導致惡性回圈

4.3. 記憶體泄漏經常表現為回應緩慢

4.3.1. 記憶體泄漏會導致垃圾收集器過度運行,從而引發回應緩慢

4.4. 低層級的低效協議會導致網路停頓,從而導致回應緩慢

4.5. 對網站來說,回應緩慢會招致更多的流量

4.5.1. 那些等待頁面回應的用戶,會頻繁地單擊重新加載按鈕,為已經過載的系統施加更多的流量

4.6. 緩慢的回應會將呼叫系統和被呼叫系統中的資源拖得動彈不得

4.6.1. 生成回應較慢比拒絕連接或回傳錯誤更糟

4.7. 緩慢的回應傾向于逐層向上傳播,并逐漸導致層疊失效

4.7.1. 一旦陷入回應緩慢,上游系統本身的處理速度也會隨之變慢,并且當回應時間超過其自身的超時時間時,會很容易引發穩定性問題

4.8. 快速回傳系統失效資訊,能使呼叫方的系統快速完成事務處理,最終成功或是系統失效,取決于應用程式的邏輯

4.9. 讓系統具備監控自身性能的能力,就能辨別其何時違背SLA

4.9.1. 系統能跟蹤自己的回應情況,那么就可以知道自己何時變慢

4.9.2. 系統平均回應時間超出系統所允許的時間時,可以考慮發送一個即時錯誤回應

4.9.3. 當平均回應時間超過呼叫方的超時時間時,應該發送這樣的回應

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

標籤:其他

上一篇:讀發布!設計與部署穩定的分布式系統(第2版)筆記11_無限長的結果集

下一篇:返回列表

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