架構應用總結

来源:https://www.cnblogs.com/88223100/archive/2023/10/18/Architecture-Application-Summary.html
-Advertisement-
Play Games

天帶來的是架構活動中的常見原則,在我們平時做技術方案,非功能設計時一定需要銘記於心這些方法論。 架構目標 高可用性 整體系統可用性最低99.9%,目標99.99%。全年故障時間整個系統不超過500分鐘,單個系統故障不超過50分鐘。 高可擴展性 系統架構簡單清晰,應用系統間耦合低,容易水平擴展,業務功 ...


天帶來的是架構活動中的常見原則,在我們平時做技術方案,非功能設計時一定需要銘記於心這些方法論。

架構目標

  1. 高可用性

整體系統可用性最低99.9%,目標99.99%。全年故障時間整個系統不超過500分鐘,單個系統故障不超過50分鐘。

  1. 高可擴展性 系統架構簡單清晰,應用系統間耦合低,容易水平擴展,業務功能增改方便快捷。

  2. 低成本 增加服務的重用性,提高開發效率,降低人力成本;

  3. 最終一致性

服務設計能滿足數據最終一致性,能方便、快捷的滿足三方、或者對方對賬需求。

  1. 質量要求

我們要求在系統設計時候要兼顧下麵的各個質量要求

圖片

架構總體原則

圖片

DID原則解釋

Design(D)設計20倍的容量;Implement(I)實施3倍的容量;Deploy(D)部署1.5倍的容量

原因:DID為產品擴展提供了經濟,有效,及時的方法

要點:在早期考慮可擴展性可以幫助團隊節省時間和金錢。在需求發生大約一個月前實施(寫代碼),在客戶蜂擁而至的幾天前部署。

例子:“什麼時候該在可擴展性上投入”有些輕率的回答是,最好在需要的前一天投入和部署。如果你能夠多做到達需要改善可擴展性方案的前一天部署,那麼 這筆投資的時機最佳,而且有助於實現公司財務和股東利益的最大化。 讓我們面對現實,及時投入和部署根本就不可能,即使可能,也無法確定具體的時間,而且會帶來很多風險。

DID(設計-實施-部署):思考問題和設計方案,為方案構建系統和編寫代碼;實際安裝或者部署方案。

設計(Design):DID方法的設計(D)階段聚集在擴展到20倍和無限大之間,通過如今可擴展性大會,把領導者和工程師團隊聚集在一起,共同討論產品的擴展瓶頸,這是在DID設計階段發現和確定需要擴展部分的一個好辦法。

實施(I,Implement):我們把規模需求的範圍縮小到更接近現實,例如當前規模的3~20倍。

部署(D,Deploy):在部署階段資產的成本較高,如果是一家適度高增長的公司,也許我們可以把最大產能提高到1.5倍;如果是一家超高增長的公司,也許我們可以把最大產能提高到5倍。擴展具有彈性,它既可以擴張也可以收縮,因此靈活性是關鍵,因為你需要響應客戶的請求,隨著規模的收縮和擴張,在系統之間調整容量

架構設計原則

  1. 業務平臺化
  • 業務平臺化,相互獨立。 如交易平臺、倉儲平臺、物流平臺、支付平臺、廣告平臺等
  • 基礎業務下沉,可復用。如用戶、商品、類目、促銷、訂單等 (參考目前核心系統)。
  1. 核心業務、非核心業務分離

核心業務與非核心業務分離,核心業務精簡(利於穩定),非核心業務多樣化。

  1. 隔離不同類型的業務
  • 交易業務是簽訂買家和賣家之間的交易合同,需要優先保證高可用性,讓用戶能快速下單
  • 對高併發要求很高的業務,應該跟普通業務隔離
  1. 區分主流程、輔流程

分清哪些是主流程。運行時,優先保證主流程的順利完成,輔流程可以採用後臺非同步的方式。避免輔流程的失敗導致主流程的回滾。

應用架構設計要點

  1. 穩定性原則
  • 一切以穩定為中心
  • 架構儘可能簡單、清晰
  • 不過度設計
  1. 解耦、拆分
  • 穩定部分與易變部分分離
  • 核心業務與非核心業務分離
  • 主業務與輔業務分離
  • 應用與數據分離
  • 服務與實現細節分離
  1. 抽象化
  • 應用抽象化:應用只依賴服務抽象,不依賴服務實現細節、位置
  • 資料庫抽象化:應用只依賴邏輯資料庫,不需要關心物理庫的位置和分片
  • 伺服器抽象化:應用虛擬化部署,不需要關心實體機配置,動態調配資源
  1. 松耦合
  • 同步調用時,需要設置超時時間、對調用異常時候的failover處理。
  • 非核心業務儘量非同步化:核心、非核心業務之間,儘量非同步解耦。
  • 跨業務線(比如分期樂、桔子、鼎盛間)調用需要採用HTTP介面方式,避免底層業務邏輯耦合和依賴。
  1. 容錯設計
  • 服務自治:服務能彼此獨立修改、部署、發佈和管理,避免一個服務發生災害引發連鎖反應(一定要對mq、rpc、db、redis的異常容錯處理、異常包括超時、業務異常、系統異常等)。
  • 集群容錯:應用系統集群,避免單點。
  • 多機房容災:多機房部署,多活。

6 數據的一致性原則

  • 小規模分佈或不分佈的業務確保可用、數據可靠、一致,即A & C兼顧;
  • 中型分佈系統需要考慮【BASE-最終一致性】,如果涉及到訂單、交易、清結算等數據敏感場景,保持數據最終一致性是最基本原則;
  • 大規模分散式系統在不涉及訂單、交易、清結算等數據敏感場景上可以考慮【有損服務】;。

架構分解原則

圖片

架構依賴原則

  1. 依賴穩定部分
  • 穩定部分不依賴易變部分
  • 易變部分可以依賴穩定部分
  • 要求:避免迴圈依賴
  1. 跨域弱依賴

跨業務域調用時,儘可能非同步弱依賴

  1. 基本服務依賴
  • 基本服務不能向上依賴流程服務
  • 組合服務、流程服務可以向下依賴基本服務
  • 條件:基本服務穩定
  1. 平臺服務依賴
  • 平臺服務不依賴上層應用
  • 上層應用可依賴平臺服務
  • 條件:平臺服務穩定
  1. 核心服務依賴
  • 核心服務不依賴非核心服務
  • 非核心服務可依賴核心服務
  • 條件:核心服務穩定

 

作者|易安

本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Architecture-Application-Summary.html


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

-Advertisement-
Play Games
更多相關文章
  • 一、環境介紹 本文環境,以及本文所採用資料庫為GreatSQL 8.0.32-24 $ cat /etc/system-release Red Hat Enterprise Linux Server release 7.9 (Maipo) $ uname -a Linux gip 3.10.0-11 ...
  • 下載VM與Centos鏡像 用的 VM 17 版本: 該版本解決了老版本的一些藍屏問題和相容性問題 https://download3.vmware.com/software/WKST-1700-WIN/VMware-workstation-full-17.0.0-20800274.exe # 密鑰 ...
  • 接上一節:從零用VitePress搭建博客教程(2) –VitePress預設首頁和頭部導航、左側導航配置 五、預設主題相關細節配置 關於預設主題的標題,logo、頁腳,最後更新時間等相關細節配置,我們也是通過文件config.js中的themeConfig選項配置的,以下所有配置都是在themeC ...
  • 我的小冊 《CSS 技術揭秘與實戰通關》上線了,想瞭解更多有趣、進階、系統化的 CSS 內容,可以猛擊 - LINK。 最近大家刷抖音,是否有刷到拉斯維加斯的新地標 「Sphere」: 場館內部的視覺效果非常驚人,其中一個效果讓我虎軀一震: 我的第一想法就是,這個看起來用 CSS 也可以實現嘛?還有 ...
  • 本文總結了軟體開發過程中經常用到的基礎常識,分為基礎篇和實踐篇兩個篇章,其中基礎篇中著重講述了類,方法,變數的命名規範以及代碼註釋好壞的評判標準。實踐篇中從類,方法以及對象三個層面分析了常見的技術概念和落地實踐,希望這些常識能夠為讀者帶來一些思考和幫助。 ...
  • 架構的範疇太大太廣,本文嘗試從一個點切入闡述一下個人的認知。有太多相關性的問題想去闡述,比如SOA與BPM的結合、實踐過程中遇到的細節問題等等,為了比較乾凈的剖析SOA還是刪除掉了。希望各位看官有所收穫。 ...
  • 一、定義 組合多個對象形成樹形結構以表示具有部分-整體關係的層次結構。組合模式讓客戶端可以統一對待單個對象和組合對象。組合模式是一種結構型模式。 二、描述 包含以下三個角色:1、Component(抽象構件):它可以是介面或抽象類,為葉子構件和容器構件對象聲明介面,在該角色中可以包含所有子類共有行為 ...
  • 無論是在內部系統還是在外部的互聯網站上,都少不了檢索系統。數據是為了用戶而服務。電腦在採集數據,處理數據,存儲數據之後,各種客戶端的操作pc機或者是移動嵌入式設備都可以很好的獲取數據,得到 想要的數據服務。 檢索分為SQL過濾查詢和全文檢索。數據都是放在資料庫里,資料庫里的數據量太大,要檢索到精準 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...