主頁 > 軟體設計 > 讀發布!設計與部署穩定的分布式系統(第2版)筆記16_握手和考驗機

讀發布!設計與部署穩定的分布式系統(第2版)筆記16_握手和考驗機

2023-06-30 08:30:46 軟體設計

1. 握手

1.1. 發送方和接收方之間的信號傳遞程序

1.2. 模擬調制解調器使用一種握手形式,協商兩個設備都能接受的速度和信號編碼

1.3. TCP使用三次握手建立套接字連接

1.4. TCP握手還允許接收方發信號告訴發送方:在接收方準備好之前不要發送資料

1.5. EIA-232C(以前稱為RS-232)的串行協議,是從接收方那里知道它何時能準備好接收資料

1.6. 握手在低層通信協議中無處不在,但幾乎很少出現在應用程式層

1.7. 握手是一種未被充分利用的技術,在應用層協議中擁有巨大的優勢

1.7.1. HTTP并不擅長握手

2. 創建基于合作的需求控制機制

2.1. 客戶端和服務器之間的握手,允許將需求的流量調節到可服務的級別

2.2. 在構建客戶端和服務器時,兩者都必須實作握手

2.3. 讓服務器通過限制自己的作業量保護自己

2.3.1. 服務器應該有辦法拒絕執行發來的作業,而不是成為滿足任何要求的“受氣包”

2.3.2. 基于HTTP的服務器需要依賴負載均衡器與Web服務器或應用程式服務器之間的合作關系實作“握手”

3. 健康狀況檢查

3.1. 在集群或負載均衡服務中,使用健康狀況檢查實作實體與負載均衡器握手

3.2. 當失衡的系統容量導致回應緩慢時,“握手”可能是最有價值的

3.3. 當呼叫缺乏握手機制的服務時,斷路器是一種可以使用的權宜之計

3.4. 在層疊失效情況下,握手是一種防止裂紋跨層蔓延的有效方法

4. 在自己的低層協議中構建握手

4.1. 如果創建了基于套接字的協議,那么可以在其中構建握手機制

4.2. 端點就可以在未準備好接受作業時,通知其他端點

5. 考驗機

5.1. 分布式系統的失效方式很難在開發環境或QA環境中顯現

5.2. 可以創建考驗機來模擬每個集成點另一端的遠程系統

5.2.1. 硬體工程師和機械工程師一直使用考驗機

5.2.2. 軟體工程師雖然也已經在使用,但其考驗機過于簡單

5.2.3. 像設計應用程式服務器一樣來設計考驗機,其中與真實應用程式相關的那些測驗,可以設計為可插拔的形式

5.3. 優秀的考驗機嚴格測驗系統,像現實世界的系統一樣“惡毒”

5.4. 考驗機應該給被測系統留下“傷疤”,它的意義就是讓被測系統做到不信有好事

5.4.1. 考驗機應該像一個小“黑客”,嘗試各種不良行為來給呼叫方搞破壞

5.5. 考驗機會引出混沌工程

5.6. 考驗機作為一臺單獨的服務器運行,沒有義務遵循任何介面規范,可以激發網路錯誤、協議錯誤或應用程式級錯誤

5.6.1. 每個系統最終都會偏離介面規范,因此在遠程系統無法使用時,測驗本地系統的行為就變得至關重要

5.6.2. 模擬偏離介面規范的系統失效方式

5.7. 遠程呼叫使用網路,套接字連接容易出現的失效

5.7.1. 網路傳輸問題

5.7.2. 網路協議問題

5.7.3. 應用程式協議問題

5.7.4. 應用程式邏輯問題

5.8. 考驗機知道其存在的意義是且僅是進行測驗

5.8.1. 真正的應用程式不會直接呼叫低層網路API,但考驗機可以

5.8.2. 其位元組發送速度能快能慢

5.8.3. 能建立極長的監聽佇列

5.8.4. 能與套接字系結卻從不發起連接

5.9. 考驗機僅是補充,不能取代其他測驗方法

5.10. 考驗機有助于驗證非功能性行為,同時又與遠程系統保持隔離

6. mock物件

6.1. mock物件只能產生符合已定義介面的行為

6.2. mock物件通過切斷所有外部連接改進單元測驗的隔離性,通常在系統層級之間的邊界處使用

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

標籤:架構設計

上一篇:教你如何用Vue3搭配Spring Framework

下一篇:返回列表

標籤雲
其他(161889) Python(38266) JavaScript(25517) Java(18284) C(15238) 區塊鏈(8274) C#(7972) AI(7469) 爪哇(7425) MySQL(7273) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4609) 数据框(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) .NET技术(1985) HtmlCss(1979) 功能(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
最新发布
  • 讀發布!設計與部署穩定的分布式系統(第2版)筆記16_握手和考驗機

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230628115834099-2000661347.png) # 1. 握手 ## 1.1. 發送方和接收方之間的信號傳遞程序 ## 1.2. 模擬調制解調器使用一種握手形式 ......

    uj5u.com 2023-06-30 08:30:46 more
  • 教你如何用Vue3搭配Spring Framework

    摘要:在本文中,我們將介紹如何使用Vue3和Spring Framework進行開發,并創建一個簡單的TodoList應用程式。 本文分享自華為云社區《Vue3搭配Spring Framework開發【Vue3應用程式實戰】》,作者:黎燃。 一、介紹 Vue3和Spring Framework都是現 ......

    uj5u.com 2023-06-30 08:30:41 more
  • 如何成為架構師?

    作者總結這些年在支付寶做架構的經驗,把自己摸索成長的內容寫下來,從對架構師的認知到業務能力和架構能力多方面總結了案例經驗,希望可以幫助到大家。 ......

    uj5u.com 2023-06-29 08:59:41 more
  • 讀發布!設計與部署穩定的分布式系統(第2版)筆記15_快速失敗和替換

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230627103223140-2108494309.png) # 1. 快速失敗而非緩慢回應 ## 1.1. 如果回應緩慢比沒有回應更糟,那么最壞的情況肯定是緩慢的失敗回應 ......

    uj5u.com 2023-06-29 08:59:27 more
  • Bean生命周期的擴展點:Bean Post Processor

    摘要:在本篇文章中,我們將深入探討Spring框架中的重要組件——BeanPostProcessor。首先,我們將了解其設計理念和目標,然后通過實際的例子學習如何基礎使用它,如何通過BeanPostProcessor改變Bean的初始化結果以及如何利用它修改Bean的屬性。 本文分享自華為云社區《S ......

    uj5u.com 2023-06-29 08:59:04 more
  • 如何成為架構師?

    作者總結這些年在支付寶做架構的經驗,把自己摸索成長的內容寫下來,從對架構師的認知到業務能力和架構能力多方面總結了案例經驗,希望可以幫助到大家。 ......

    uj5u.com 2023-06-29 08:58:22 more
  • 讀發布!設計與部署穩定的分布式系統(第2版)筆記15_快速失敗和替換

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230627103223140-2108494309.png) # 1. 快速失敗而非緩慢回應 ## 1.1. 如果回應緩慢比沒有回應更糟,那么最壞的情況肯定是緩慢的失敗回應 ......

    uj5u.com 2023-06-29 08:58:07 more
  • Bean生命周期的擴展點:Bean Post Processor

    摘要:在本篇文章中,我們將深入探討Spring框架中的重要組件——BeanPostProcessor。首先,我們將了解其設計理念和目標,然后通過實際的例子學習如何基礎使用它,如何通過BeanPostProcessor改變Bean的初始化結果以及如何利用它修改Bean的屬性。 本文分享自華為云社區《S ......

    uj5u.com 2023-06-29 08:56:17 more
  • 說說設計模式~委派模式

    [回到目錄](https://www.cnblogs.com/lori/p/3896484.html) # 概述 委派模式(Delegate Pattern)又叫作委托模式,是一種面向物件的設計模式,允許物件組合實作與繼承相同的代碼重用。它的基本作用就是負責任務的呼叫和分配,是一種特殊的靜態代理模式 ......

    uj5u.com 2023-06-28 11:02:11 more
  • 說說設計模式~責任鏈模式

    [回到目錄](https://www.cnblogs.com/lori/p/3896484.html) # 責任鏈模式 它是一種設計模塊,主要將操作流程與具體操作解耦,讓每個操作都可以設定自己的操作流程,這對于作業流應用是一個不錯的選擇! 下面是官方標準的定義:責任鏈模式是一種設計模式。在責任鏈模式 ......

    uj5u.com 2023-06-28 11:02:04 more