一文搞懂業務架構、技術架構、數據架構、運維架構、物理架構理清不同視角的架構

来源:https://www.cnblogs.com/88223100/archive/2023/10/09/technical-architecture-data-architecture-operation-maintenance-architecture-physical-architecture.html
-Advertisement-
Play Games

一起學習下架構的視角。 架構的視角 在筆者的知識體系中,實際上將架構分為業務架構、應用架構、雲基礎架構這幾大類,業務架構主要著眼於控制業務的複雜性,基礎架構著眼於解決分散式系統中存在的一系列問題。無論何種架構,都希望能實現系統的可變的同時保障業務的高可用。 很多時候架構的視角/分類沒有明顯的邊界,通 ...


 

一起學習下架構的視角。

架構的視角

在筆者的知識體系中,實際上將架構分為業務架構、應用架構、雲基礎架構這幾大類,業務架構主要著眼於控制業務的複雜性,基礎架構著眼於解決分散式系統中存在的一系列問題。無論何種架構,都希望能實現系統的可變的同時保障業務的高可用。

  • 很多時候架構的視角/分類沒有明顯的邊界,通常是交叉的;
  • 有意思的是,軟體架構及其視角往往和它所在的部門組織架構有著直接關係。@pdai

業務架構

核心是解決業務帶來的系統複雜性,瞭解客戶/業務方的痛點,項目定義,現有環境;梳理高階需求和非功能性需求,進行問題域劃分與領域建模等工作;溝通,方案建議,多次迭代,交付總體架構。

圖片

看看京東業務架構(網上分享圖):

圖片

應用/技術架構

根據業務場景的需要,設計應用的層次結構,制定應用規範、定義介面和數據交互協議等。並儘量將應用的複雜度控制在一個可以接受的水平,從而在快速的支撐業務發展的同時,在保證系統的可用性和可維護性的同時,確保應用滿足非功能屬性要求(性能、安全、穩定性等)。技術架構主要考慮系統的非功能性特征,對系統的高可用、高性能、擴展、安全、伸縮性、簡潔等做系統級的把握。

不限於如下視角,主要表示應用開發中的軟體架構視角...

視角:功能視角

功能視角和業務視角有重合的地方,主要針對開發而言的服務功能;

視角:技術視角-總體

技術框架(technological Framework)是整個或部分技術系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種定義認為,技術框架是可被技術開發者定製的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。

從技術層面描述,主要是分層模型,例如持久層、數據層、邏輯層、應用層、表現層等,然後每層使用什麼技術框架,例如Spring、hibernate、ioc、MVC、成熟的類庫、中間件、WebService等,分別說明,要求這些技術能夠將整個系統的主要實現概括。

圖片

視角:技術視角-數據架構

專註於構建數據中台,統一數據定義規範,標準化數據表達,形成有效易維護的數據資產。打造統一的大數據處理平臺,包括數據可視化運營平臺、數據共用平臺、數據許可權管理平臺等。

視角:技術視角-基礎架構

PAAS,IAAS...

圖片

視角:技術視角-運維架構

負責運維繫統的規劃、選型、部署上線,建立規範化的運維體系。

圖片

物理架構

物理架構關註軟體元件是如何放到硬體上的,專註於基礎設施,某種軟硬體體系,甚至雲平臺,包括機房搭建、網路拓撲結構,網路分流器、代理伺服器、Web 伺服器、應用伺服器、報表伺服器、整合伺服器、存儲伺服器和主機等。

以一個銀行系統為例

下麵為業務性能及網路性能監控的物理部署架構圖,分網路接入層和匯聚層兩個層次對網路流量報文進行捕獲和深入分析。

圖片

物理部署架構設計說明:

  • (1)通過4台TAP設備獲取青山湖和艾溪湖兩個數據中心、五個機房相關應用伺服器接入交換機的鏡像流量,併進行規則過濾;
  • (2)通過1台高性能匯聚TAP來獲取艾溪湖數據中心二層匯聚交換機和核心交換機的鏡像流量,併進行規則過濾;
  • (3)艾溪湖主數據中心各機房接入層TAP設備的流量共用給匯聚TAP設備;
  • (4)BPC系統的5台BPC伺服器在兩個數據中心的每個機房進行分散式部署、解碼和分析,並集中展示;
  • (5)NPM系統在艾溪湖數據中心部署一臺管理端伺服器,併在每個數據中心各部署一臺NPM探針伺服器,通過分散式部署、捕獲數據,集中監控展示的方式,監控兩個數據中心的各業務系統的網路性能;
  • (6)通過雙數據中心、多機房分散式部署的方式,端到端的監控業務在各個環節的流轉情況,實時監控,快速定位。

下麵為運維大數據平臺的物理部署拓撲圖,分為三個集群,Hadoop集群、ES日誌集群和Kalfka消息集群。

圖片

物理部署架構設計說明:

  • 配置多台伺服器做Hadoop集群,滿足不同應用和系統日誌的單系統與跨系統交易日誌統計與分析,滿足數千個基礎監控分區的基礎性能分析與運行性能指標預測等,以及指性能標入庫與歷史日誌數據入庫的存儲需要。
  • 配置多台伺服器做ES集群,承載實時統一日誌查詢與分析平臺的任務,滿足數天至一個月不同需求的日誌查詢和分析需求,歷史日誌查詢需要從HDFS中將數據導入至ES中,進行二次查詢。
  • 配置多台伺服器做Kafka集群用於實時的指標型與日誌型數據流的採集,滿足實時監控的需求。

DDD到各種架構

領域驅動設計的戰略核心即是將問題域與應用架構相剝離,將業務語義顯現化,把原先晦澀難懂的業務演算法邏輯,通過領域對象(Domain Object),統一語言(Ubiquitous Language)轉化為領域概念清晰的顯性化表達出來。

  • 統一語言,軟體的開發人員/使用人員都使用同一套語言,即對某個概念,名詞的認知是統一的,建立清晰的業務模型,形成統一的業務語義。將模型作為語言的支柱。確保團隊在內部的所有交流中,代碼中,畫圖,寫東西,特別是講話的時候都要使用這種語言。例如賬號,轉賬,透支策略,這些都是非常重要的領域概念,如果這些命名都和我們日常討論以及 PRD 中的描述保持一致,將會極大提升代碼的可讀性,減少認知成本。。比如不再會有人在會議中對“工單”、“審核單”、“表單”而反覆確認含義了,DDD 的模型建立不會被 DB 所綁架。

  • 面向領域,業務語義顯性化,以領域去思考問題,而不是模塊。將隱式的業務邏輯從一推 if-else 裡面抽取出來,用通用語言去命名、去寫代碼、去擴展,讓其變成顯示概念;很多重要的業務概念,按照事務腳本的寫法,其含義完全淹沒在代碼邏輯中沒有突顯出來。

  • 職責劃分,根據實際業務合理劃分模型,模型之間依賴結構和邊界更加清晰,避免了混亂的依賴關係,進而增加可讀性、可維護性;單一職責,模型只關註自身的本職工作,避免“越權”而導致混亂的調用關係。通過建模,更好的表達現實世界中的複雜業務,隨著時間的發展,不斷增加系統對實際業務的沉澱,也將更好的通過清晰的代碼描述業務邏輯,模型的內聚增加了系統的高度模塊化,提升代碼的可重用性,對比傳統三層模式中,很有可能大量重覆的功能散落在各個 Service 內部。

圖片

參考文章

  • https://blog.csdn.net/wxyyxc1992/article/details/100129049
  • https://baijiahao.baidu.com/s?id=1608647829654152773&wfr=spider&for=pc
  • https://blog.csdn.net/zhangbijun1230/article/details/81979535
  • https://blog.csdn.net/ITLearnHall/article/details/82985480
  • http://www.talkwithtrend.com/Article/243093
  • https://segmentfault.com/a/1190000020220143 著作權歸@pdai所有
  • 原文鏈接:https://pdai.tech/md/arch/arch-x-view.html

 

作者|頂尖架構師棧

本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/technical-architecture-data-architecture-operation-maintenance-architecture-physical-architecture.html


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

-Advertisement-
Play Games
更多相關文章
  • 背景 系統需要交付,客戶要求提供交維材料,包括系統的表結構,安排開發人員進行梳理,效率比較慢,遂自己花點時間搗鼓一下,發現有此插件,記錄一下方便與同事分享 前提條件 必須有 go語言環境,有的話直接看第二點 一、安裝 go語言環境 1、檢查本機是否安裝 go go version 2、如果沒有,安裝 ...
  • 一、環境介紹 本文環境,以及本文所採用資料庫為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 ...
  • 目錄Vue模板應用{{}} 變數插值v-once 只會插值一次v-html 對HTML代碼插值v-bindHTML標簽屬性的插值在外部傳遞數值類型的數據到組件內部時, 必須使用v-bind指令的方式進行傳遞, 直接使用HTML屬性設置的方式傳遞會將傳遞的數據作為字元串傳遞v-on 監聽、綁定事件v- ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前端換膚方案 - element+less無感換膚(無需頁面刷新) 前言 前不久在改造一個迭代了一年多的項目時,增加了一個換膚功能。通過自己的探索,總結出了一套比較合適的改造方案供大家參考,如有更好的方案歡迎評論區踴躍評論😄 先上效果: ...
  • three.js、webgl、3D煤礦隧道、三維井下人員定位、掘進面三維可視化、縱採面可視化、採集面可視化展示、設備檢測、數字孿生、物聯網3D、3d建築、3d庫房,bim管理系統 ...
  • 導讀 VTable: 不只是高性能的多維數據分析表格,更是行列間創作的方格藝術家! VTable是位元組跳動開源可視化解決方案 VisActor 的組件之一。 在現代應用程式中,表格組件是不可或缺的一部分,它們能夠快速展示大量數據,並提供良好的可視化效果和交互體驗。VTable是一款基於可視化渲染引擎 ...
  • 單例模式 一個類只有一個實例,並提供一個全局訪問此實例的點,哪怕多線程同時訪問。 單例模式主要解決了一個全局使用的類被頻繁的創建和消費的問題。 單例模式的案例場景 資料庫的連接池不會反覆創建 spring中一個單例模式bean的生成和使用 在我們平常的代碼中需要設置全局的一些屬性保存 七種單例模式的 ...
  • 本文介紹了一種基於線上流量實現對重構系統進行功能和性能驗證的實踐方案。針對線上流量如何攔截、如何錄製、如何存儲、如何回放以及如何發壓均作了詳細說明,為具有類似需求的讀者提供了一種可供參考的思路。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...