架構設計思路

来源:http://www.cnblogs.com/tylercao/archive/2017/11/19/7862061.html
-Advertisement-
Play Games

前言 我們一般在做架構設計的時候,會經歷過三個階段:需求分析、概要設計和詳細設計。 1. 需求分析階段 : 主要梳理所有用例(Use case)和場景,並抽象出面向系統的用戶與角色,梳理出需求提供哪些功能與非功能的需求給這些用戶。 2. 概要設計階段 :根據需求分析的產物:核心需求,對整個系統進行模 ...


前言

我們一般在做架構設計的時候,會經歷過三個階段:需求分析、概要設計和詳細設計。

  1. 需求分析階段: 主要梳理所有用例(Use case)和場景,並抽象出面向系統的用戶與角色,梳理出需求提供哪些功能與非功能的需求給這些用戶。
  2. 概要設計階段:根據需求分析的產物:核心需求,對整個系統進行模塊劃分,並定義好模塊之間的交互關係。
  3. 詳細設計階段:通過多個視圖來描述系統的架構,包括但不局限於:邏輯系統、物理視圖、數據視圖、物理視圖

非功能需求

非功能的需求主要體現在高性能、高可用、可伸縮、可擴展、安全性等維度。

非功能指標 描述
高性能 運行效率高、響應速度快、吞吐量高
可用性 縮短宕機時間、出錯恢復、SLA 線上可用時間
可伸縮性 垂直伸縮、水平伸縮
可擴展性 可插拔、組件重用
安全性 數據安全、加密、防攻擊
魯棒性 容錯性、可恢復性

非功能需求對應不同系統指標

非功能需求對應不同系統指標主要分為 4 部分:

  • 應用伺服器
  • 資料庫
  • 緩存
  • 消息隊列

1. 應用伺服器

應用伺服器是請求的入口,所有流量都是通過應用伺服器來轉發的。主要關心 QPS 、RT 等指標。
容量與性能相關指標如下所示

1. 每天的請求量
2. 各介面的訪問峰值
3. 平均響應時間
4. 最大響應時間
5. 請求大小
6. 網卡與磁碟 I/O 負責
7. 記憶體使用情況
8. CPU 使用情況

2. 資料庫

部署結構相關指標

1. 複製模型
2. 失效轉移策略
3. 容災策略
4. 歸檔策略
5. 讀寫分離策略
6. 分庫分表策略

容量與性能相關指標如下所示

1. 當前數據容量
2. 預估數據容量
3. 每秒讀峰值
4. 每秒寫峰值
5. 每秒事務峰值

3. 緩存

部署結構相關指標

1. 複製模型
2. 失效轉移
3. 持久策略
4. 淘汰策略
5. 線程模型

容量與性能相關指標

1. 緩存內容大小
2. 緩存內容數量
3. 緩存內容過期時間
4. 緩存數據結構
5. 每秒讀峰值
6. 每秒寫峰值

4. 消息隊列

部署結構相關指標

1. 複製模型
2. 失效轉移
3. 持久策略

容量與性能相關指標

1. 每天平均數據增量
2. 消息保存時間
3. 每秒讀峰值
4. 每秒寫峰值
5. 每條消息大小
6. 平均響應時間
7. 最大響應時間

參考

  • 分散式服務架構原理、設計與實戰

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

-Advertisement-
Play Games
更多相關文章
  • 前言: 之前寫Java服務端處理POST請求時遇到了請求體轉換成字元流所用編碼來源的疑惑,在doPost方法里通過request.getReader()獲取的BufferedReader對象內部的 Reader用的是什麼編碼將位元組流轉換成字元流的呢?又是在哪裡設置呢和什麼時候生效的呢?通過查找資料, ...
  • 作者:NiceCui 本文謝絕轉載,如需轉載需徵得作者本人同意,謝謝。 本文鏈接:http://www.cnblogs.com/NiceCui/p/7862377.html 郵箱:[email protected] 日期:2017-11-19 Python學習二:詞典基礎詳解 (學習不要求多,小計劃 ...
  • 流程式控制制 與C語言不通的是python的流程式控制制代碼塊不是用{}花括弧表示的,而是強制縮進來控制的;而且縮進必須一致,官方推薦是使用4個空格,不建議使用tab(製表符)做縮進,一是不同的系統tab所占寬度不一致,會比較亂,二是由於python要求同級縮進必須保持一致,所以有些時候看上去是對齊l,但是 ...
  • Composer是一個非常流行的PHP包依賴管理工具,已經取代PEAR包管理器,對於PHP開發者來說掌握Composer是必須的. 對於使用者來說Composer非常的簡單,通過簡單的一條命令將需要的代碼包下載到vendor目錄下,然後開發者就可以引入包並使用了.其中的關鍵在於你項目定義的compo ...
  • 類的繼承 上面代碼中yello_person繼承了person父類。 子類中構造函數先對父類的構造函數進行繼承;然後加上自己的特有屬性。 18,19行示例如何使用對象分別調用父類和子類的方法 上面代碼中6行示例如何在構造函數中操作公有屬性,實現類似全局計數功能。 10行定義的方法示例如何在父類中列印 ...
  • 前言: 最近接手了一個項目,大概過了下需求,然後打開項目準備開搞的時候發現一個問題,這個項目是提供rest服務的一個web項目,其中很多關鍵的查詢都調用這個項目,之前的開發人員為了監控每個方法的執行時間,在方法開始和結束寫了很多logger.info("耗時:"+time)這種代碼。很顯然這是不合理 ...
  • 前言 本文可能不會詳細記錄每一步實現的過程,但一定程度上可以引領小伙伴走向更開闊的視野,串聯每個環節,呈現予你不一樣的效果。 業務規模 8個平臺 100+台伺服器 10+個集群分組 微服務600+ 用戶N+ 面臨問題 隨著分散式微服務容器技術的發展,傳統監控系統面臨許多問題: 容器如何監控 微服務如 ...
  • 產品或者服務由數據存儲和數據計算組成。pojo對象就是用於數據存儲。一旦確定後,整個應用或者產品的數據來源就確定。比如一個頁面或者功能需要使用什麼數據就可以快速找到對應的對象或者通過對象的關係找出來。 pojo對象屬於對系統的靜態描述。它應該是名詞,不應該是動詞或者其他。動詞、類型或者狀態等應該是算 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...