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

来源:https://www.cnblogs.com/lying7/archive/2023/07/05/17523288.html
-Advertisement-
Play Games

![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230703164452820-448646113.png) # 1. 物理主機 ## 1.1. 以前數據中心硬體就是建立在單個物理機器的高可靠性上的 ## 1.2. 如今通過 ...


1. 物理主機

1.1. 以前數據中心硬體就是建立在單個物理機器的高可靠性上的

1.2. 如今通過足夠多的主機保證各個服務的負載均衡,使得單台主機的損失不再是災難性的

1.2.1. 希望每台主機都儘可能便宜

1.2.2. 數據中心的硬體設備都是一次性的消耗品

2. 數據中心的虛擬機

2.1. 應用程式並不會直接在硬體上運行,21世紀初的虛擬化浪潮將直接在物理機器上運行軟體的方式淘汰了

2.2. 虛擬化不利的一面是系統性能的可預測性不強

2.2.1. 所有虛擬機相互爭奪資源,並且會隨機地變慢,而“客戶機操作系統”幾乎不可能監控到這一點

2.3. 當將應用程式設計為在虛擬機上運行時,必須要確保任何一臺主機的損失或減速都不會對其造成影響

2.3.1. 分散式編程技術需要整個集群的同步響應才能繼續發揮作用

2.3.2. 密切註意集群管理器或資源鎖管理器等“特殊”的機器,除非存在無須重新配置即可取而代之的另一臺機器

2.3.3. 留心應用程式對請求或事件發生順序的依賴

2.3.3.1. 沒有人會將其設計到系統中,但這種依賴可能會意外地蔓延到系統中

2.4. 虛擬機使得所有有關時鐘的問題都變得更糟

2.4.1. 不要相信操作系統的時鐘

2.4.2. 如果人類使用的時間很重要,可以使用類似本地網路時間協議伺服器等外部時間來源

3. 數據中心的容器

3.1. 永遠不會再問生產環境是否與QA環境一致這樣的問題

3.2. 提供進程隔離和虛擬機封裝技術,以及開發人員容易掌握的構建過程

3.3. 任何單個容器的“身份”都很短暫,因此,不應該基於每個容器實例來配置

3.4. 容器沒有太多的本地存儲空間

3.4.1. 應用程式必須依靠外部存儲系統存儲文件、數據甚至是緩存

3.5. 所有的證書授權信息都必須提供給容器

3.6. 聯網問題

3.6.1. 預設情況下,容器不會在主機上暴露任何埠

3.6.1.1. 在其自身的虛擬網路介面上暴露

3.6.2. 有選擇地將埠從容器轉發到主機

3.7. 確保在正確的機器上運行足夠多的正確類型的容器實例

3.7.1. 它們啟動時間非常快(是毫秒級而不是分鐘級)

3.7.2. 意味著容器實例將會像一團團小泡沫一樣在主機上時隱時現

3.8. Kubernetes、Mesos和Docker Swarm這樣的軟體包可以解決容器實例的聯網和分配調度問題

3.9. 調試正在容器中運行的應用程式非常困難

3.9.1. 容器化的應用程式更需要將其“遙測”監控數據發送到數據採集器集中處理

4. 12要素應用程式

4.1. 指明瞭各種潛在部署障礙

4.1.1. 為解決各種障礙提供了參考方案

4.2. 基準代碼在版本控制系統中只有一份,每個版本只構建一次二進位包,並將其部署到各個環境中

4.3. 顯式聲明依賴關係

4.4. 在環境中存儲配置信息

4.5. 把後端服務當作附加資源

4.6. 嚴格分離構建和運行

4.7. 以一個或多個無狀態進程運行應用程式

4.8. 通過埠綁定提供服務

4.9. 通過進程模型進行擴展

4.10. 快速啟動和優雅終止可最大化穩健性

4.11. ⑩讓開發環境、預發佈環境和生產環境儘可能一致

4.12. ⑾將日誌視為事件流

4.13. ⑿將後臺管理任務當作一次性進程運行

5. 雲上的虛擬機

5.1. 雲原生系統將具有更好的運維特性,尤其在可用性和成本方面

5.2. 雲上的虛擬機還與其他虛擬機共用物理主機,並可能與之爭奪資源

5.2.1. 無論時間長短,都會遇到虛擬機毫無徵兆死機的情況

5.3. 機器“身份”的短暫性

5.3.1. 每次虛擬機啟動時其IP地址都會更改

5.3.2. 需要從亞馬遜那裡租用彈性IP地址

6. 雲上的容器

6.1. 在雲上虛擬機中運行的容器,同時繼承了容器和雲帶來的挑戰

6.2. 這些容器構建成一個整體的系統,從某種意義上講,容器的使用將複雜性這口“鍋”,從容器內部甩給了控制層


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據倉庫是資料庫的下一代產品形態 —— 如何對數字化轉型過程中涌現的數據集合進行有效的存儲、分析和利用,繼而幫忙企業進行運營決策優化甚至創造出新的獲客模式和商業模式形成競爭力,是企業主們亟需解決的問題。在數據價值爆發的時代背景中,數據倉庫在千行百業中都有著相應的應用場景。 ...
  • 原文地址: [Android BottomNavigation底部導航欄使用 - Stars-One的雜貨小窩](https://stars-one.site/2023/07/04/android-bottomnavigation-use) ## 基本使用 本文側重點記錄一些特殊的樣式設置,所以基本 ...
  • ### 動機 在進行移動端全球化的時候,我們需要根據語言類型準備格式相同,文本不同的好多個文件,如果一個一個翻譯顯然很浪費時間,如果整篇複製到Google翻譯通常翻譯出來的文本是沒辦法直接用的,所以我通過有道雲API實現了一個翻譯iOS全球化文件的工具類。Android可以重寫文本匹配的部分。 ## ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 在使用 Vue 3 組件庫 Naive UI 的數據表格組件 DataTable 時碰到的問題,NaiveUI 的數據表格組件 DataTable 在固定頭部和列的示例中,在鍵盤操作下表格橫向滾動會有問題,本文是記錄下解決問題的過程 ...
  • vue3+tiff.js展示tif文件 場景:tif格式的文件需要在頁面上預覽(預覽的tif文件較小) 組件:tiff.js npm install tiff.js 組件引入: import 'tiff.js'; 註意:網路上的信息引入使用import Tiff from 'tiff.js' 但是實 ...
  • 有很多方法可以優化我們的 JavaScript 代碼,本文總結了我在工作中經常使用的 8 個 JavaScript 技巧,希望它也能幫助你。 ### 減少使用 if-else 在編寫兩個以上的 if ... else 時,是否有更好的優化方法? 如下代碼,我們需要根據一個漢堡包的名字來計算它的價格。 ...
  • 一、推送作用 推送作用我就不廢話了,能做推送的都知道作用,直接上乾貨。 二、unipush 快速開通 Dcloud 開發者實名認證註冊賬號,綁定對應的 app 信息。 uni-push產品有2個入口: 通過 HBuilderX(3.5.1及其以上版本)進入 打開 HBuilderX,雙擊項目中的 “ ...
  • 腳手架大家一定都不陌生,比如我們經常使用的 vue-cli、create-react-app,它可以幫助我們快速的初始化一個項目,無需從零配置,極大的方便我們的開發。到這裡你可能會疑惑,既然市面上有成熟的腳手架,為什麼需要寫一個屬於自己的腳手架呢。因為公共腳手架雖然強大,但並不能滿足我們的實際開發需... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...