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

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

2023-07-06 09:10:32 軟體設計

1. 術語的定義

1.1. 服務

1.1.1. 指共同協作、以單元的形式對外提供功能的跨機器行程集合

1.1.2. 一個服務可以由多種可執行檔案組成

1.1.3. 一個服務可能包含來自多個可執行檔案的多個行程

1.1.4. 可能對外呈現單個IP地址,并在后臺進行負載均衡

1.1.5. 可能有多個IP地址,且每個都使用相同的DNS名稱

1.2. 實體

1.2.1. 指單臺機器(容器、虛擬機或物理機)上的一個安裝檔案集,位于運行相同可執行檔案的負載均衡陣列中

1.2.2. 一組實體指的是運行相同可執行檔案的多個行程,這些實體在不同的機器上運行

1.3. 可執行檔案

1.3.1. 指由構建程序所創建的制品,機器可以將其作為行程來啟動

1.3.2. 在編譯型語言中,是一個可執行的二進制檔案

1.3.3. 對于解釋型語言則是源檔案

1.3.4. 還包括在執行之前需要安裝的共享庫

1.4. 行程

1.4.1. 指在系統中正在運行的一個應用程式,也是可執行檔案的運行時鏡像

1.5. 安裝檔案集

1.5.1. 指可執行檔案、所有衍生目錄、組態檔以及機器上的其他資源

1.6. 部署

1.6.1. 在一臺機器上創建安裝檔案集的行為

1.6.2. 部署是自動化的程序,其定義在源代碼控制系統中保存

2. 構建代碼

2.1. 保證用戶準確地知道實體中添加的代碼

2.2. 建立從開發人員到生產環境實體的強大的“監管鏈”至關重要

2.3. 必須確保任何未經授權的一方,都無法在用戶系統中添加代碼

2.4. “監管鏈”從開發人員的工位開始,開發人員應該在版本控制系統中管理代碼

2.4.1. 只有代碼才能進入版本控制系統

2.4.2. 版本控制并不擅長處理第三方庫或依賴庫

2.5. 構建工具必須能將依賴庫從某處下載到開發人員的計算機中

2.6. 從互聯網下載依賴庫雖然方便但不安全

2.6.1. 中間人攻擊或上游庫的操縱,從互聯網下載的某個依賴庫能輕易地被悄悄替換掉

2.6.2. 從網上下載依賴庫,也應該盡快將其轉移到私有庫中

2.6.3. 只有當依賴庫的數字簽名與來自上游提供商已公布的資訊匹配時,才能將該依賴庫存入私有庫中

2.7. 開發人員不應該最先在自己的機器上創建生產版本

2.7.1. 開發人員的計算機已經被徹底污染了

2.7.2. 瀏覽器也安裝了“惹人嫌”的工具列和冒牌的“搜索增強器”

2.8. 只能在CI服務器上創建生產版本,并將其二進制檔案存在其他人無法寫入的安全的部署包庫中

3. 不可變、易處理的基礎設施

3.1. 通過腳本描述的機器運行狀態

3.1.1. “一層層抹泥”的方法更新機器的狀態有兩大挑戰

3.1.1.1. 這樣做容易產生副作用,腳本無法描述機器狀態

3.1.1.2. 只能部分作業的受損的機器或腳本,它們會使機器處于未定義的狀態

3.2. 創建新鏡像

3.2.1. 不可變基礎設施

3.2.1.1. 機器一旦部署就不再變更

3.2.2. 始終從已知的基礎鏡像開始,在其上施加一組固定的更改,之后不再對該機器進行修補或更新,這樣做會更可靠

3.2.3. 當需要變更計算機時,再次從基礎鏡像開始,創建一個新的鏡像

3.2.4. 容器的“檔案系統”是部署包庫中的二進制鏡像,包含能在實體上運行的代碼,當需要部署新代碼時,我們不會再修補容器,而是構建并啟動一個新容器,放棄舊容器

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

標籤:架構設計

上一篇:讀發布!設計與部署穩定的分布式系統(第2版)筆記19_基礎層之設備

下一篇:返回列表

標籤雲
其他(162107) Python(38266) JavaScript(25524) Java(18290) C(15238) 區塊鏈(8275) C#(7972) AI(7469) 爪哇(7425) MySQL(7285) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5876) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4611) 数据框(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(1989) .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
最新发布