[架構之路-259]:目標系統 - 設計方法 - 軟件工程 - 軟件設計 - 架構設計 - 面向服務的架構SOA與微服務架構(以服務為最小的構建單位)

目錄

前言:

二、軟件架構層面的復用

三、什么是面向服務的架構SOA

3.1 什么是面向服務的架構

3.2 面向服務架構的案例

3.3 云服務:everything?is service一切皆服務

四、什么是微服務架構

4.1 什么是微服務架構

4.2 微服務架構的案例

五、企業服務總線ESB

5.1 什么是企業服務器總線

5.2?常見的企業服務總線


前言:

隨著軟件規模的擴大,對軟件復用的需求越發強烈,有函數級別的復用,有對象了類級別的復用,也有軟件組件層的復用,也有架構層面的復用,抽象出軟件架構的作用:一面是為了軟件產品的需要,另一方面,成功或優秀的軟件架構本身也可以被后續軟件復用。

二、軟件架構層面的復用

在軟件架構中,復用是通過將通用的架構模式、設計模式、組件、服務等進行提取和重復使用的方式來實現的。通過復用,可以提高系統的可維護性、可擴展性和可重用性,減少重復開發的工作量,并提高開發效率和質量。實際上,前人總結出來的成功的軟件架構或軟件架構風格,就是為了被其他或項目復用的。

以下是一些常見的軟件架構復用方式:

  1. 分層架構:將系統分為多個層次,每個層次負責不同的功能,通過定義良好的接口和約定,使得每個層次可以被多個應用程序復用。

  2. 領域驅動設計(Domain-Driven Design,DDD):將系統按照業務領域進行劃分,并通過領域模型、聚合根等概念來提高領域內的復用性。

  3. 微服務架構:將系統拆分為多個小型、獨立的服務,每個服務專注于完成特定的業務功能,通過服務間的通信實現復用。

  4. 中間件和框架:使用現有的中間件和框架,如數據庫中間件、消息隊列、Web框架等,來提供通用功能,減少開發工作。

  5. 設計模式:使用常用的設計模式,如工廠模式、單例模式、觀察者模式等,來解決特定的設計問題,提高系統的可復用性。

  6. 組件化架構:將系統劃分為多個組件,每個組件具有獨立的功能和接口,可以在不同的應用中進行復用。

復用軟件架構的關鍵在于良好的設計和規范,以及對通用功能和模塊的抽象和封裝。同時,需要注意在復用過程中平衡通用性和定制性的考慮,以保證復用的有效性和靈活性。

三、什么是面向服務的架構SOA

面向服務的架構SOA是以服務為架構的最小構建單元。

3.1 什么是面向服務的架構

面向服務的架構(Service-Oriented Architecture,SOA)是一種設計原則和架構風格,旨在實現系統的模塊化、可擴展和可重用。

在面向服務的架構中,系統被分割為一組相互獨立的服務,每個服務代表一個特定的業務功能。這些服務通過定義明確定義的接口和協議進行通信,可以部署在不同的服務器上,使用不同的技術和平臺來實現。

以下是面向服務的架構的一些特點和優勢:

  1. 松耦合:服務之間通過接口進行通信,彼此不直接依賴。這種松耦合的特點使得系統更加靈活和可維護,能夠獨立地更新、替換和擴展服務,而不會對其他服務造成影響。

  2. 可重用性:面向服務的架構鼓勵將通用的功能封裝成服務,并在系統中復用。這種復用性可以減少重復開發工作量,提高開發效率和質量。

  3. 模塊化:將系統拆分為多個服務單元,每個服務專注于一個特定的業務功能。這種模塊化的設計可以簡化系統的復雜性,使得系統更易于理解、測試和維護。

  4. 可擴展性:每個服務可以獨立地進行水平擴展,根據實際需求增加或減少服務的實例數量,從而提高系統的性能和容錯性。

  5. 跨平臺和跨語言:面向服務的架構允許不同的服務使用不同的技術和平臺進行實現,使得系統具有更大的靈活性和互操作性。

  6. 業務驅動:面向服務的架構強調與業務需求的緊密對應,使得系統能夠更好地適應變化的業務需求和業務流程。

面向服務的架構可以通過使用標準的服務協議(如SOAP、REST)和服務注冊與發現機制(如服務目錄、服務注冊表)來實現服務之間的通信和管理。同時也需要考慮如安全性、事務處理和性能優化等方面的問題來保證系統的穩定性和可靠性。

3.2 面向服務架構的案例

面向服務的架構已被廣泛應用于各個領域,下面列舉幾個實際案例:

  1. 云計算平臺:云計算平臺如亞馬遜AWS、微軟Azure和谷歌云平臺等采用基于服務的架構。它們將各種基礎設施服務(如計算、存儲、網絡等)以及中間件服務(如消息隊列、數據庫等)作為獨立的可復用服務,通過API進行調用。

  2. 電子商務平臺:在線購物網站如亞馬遜、eBay和淘寶等采用面向服務的架構。這些平臺將商品管理、訂單處理、支付服務、物流追蹤等功能作為獨立的服務,并通過服務間的調用來實現整個電商系統的運作。

  3. 銀行和金融系統:面向服務的架構在銀行和金融領域也得到廣泛應用。例如,銀行系統中的支付服務、賬戶管理、風險評估等功能可以作為獨立的服務,通過服務調用來提供各種金融服務。

  4. 知識圖譜和搜索引擎:大型知識圖譜和搜索引擎,如谷歌搜索、百度和維基百科等,都采用了面向服務的架構。它們將數據存儲、索引服務、查詢服務等作為獨立的服務,通過服務之間的通信和協作來提供高效的搜索和知識獲取功能。

  5. 企業服務總線(Enterprise Service Bus,ESB):ESB是一種支持面向服務的架構的中間件技術,用于集成和管理企業內部的各種應用和服務。它提供了統一的消息傳遞、協議轉換、安全性和可靠性保證等功能,使得不同的應用和服務能夠無縫地進行交互和集成。

這些案例只是面向服務的架構在實際應用中的幾個例子。面向服務的架構在許多領域中具有廣泛的適應性和可擴展性,讓系統更靈活、可維護和可擴展。

3.3 云服務:everything?is service一切皆服務

"云服務:everything is service(一切皆服務)"是云計算領域的一個重要概念,強調了云計算提供的服務化模式和思維方式。

"一切皆服務"意味著將各種計算資源(如計算、存儲、數據庫、網絡等)功能(如人工智能、大數據分析、物聯網等)都以服務的形式提供一切的軟件功能或實現都可以作為服務!!!!都可以被反復服用!!!

無論是企業還是個人用戶,都可以通過云服務提供商的平臺來消費和使用這些服務,而無需擔心底層的復雜性和維護工作。

云服務采用了面向服務的架構,并通過服務級別協議(Service Level Agreements,SLAs)對服務進行約束和保證。用戶可以根據實際需求靈活地選擇和使用各種服務,并根據實際使用情況進行彈性擴展和付費。

以下是一些云服務的例子:

  1. 基礎設施即服務(Infrastructure as a Service,IaaS):提供虛擬化的計算資源(如虛擬機、存儲、網絡等),用戶可以在云平臺上創建和管理自己的虛擬數據中心。

  2. 平臺即服務(Platform as a Service,PaaS):提供開發和運行應用程序所需的平臺環境,用戶可以使用預置的開發工具、運行時環境等來開發和部署應用。

  3. 軟件即服務(Software as a Service,SaaS):提供各種應用程序作為服務,用戶通過云平臺直接使用這些應用,無需關心底層的軟件安裝和維護。

  4. 數據庫即服務(Database as a Service,DBaaS):提供數據庫管理系統作為服務,用戶可以使用數據庫功能來存儲和管理數據,無需關心數據庫的部署和維護。

  5. 大數據分析即服務(Analytics as a Service,AaaS):提供大數據分析和人工智能服務,用戶可以通過云平臺使用各種數據分析和機器學習算法來獲取洞察和優化業務。

  6. AIaaS(AI as a Service):指的是將人工智能能力作為云服務提供給用戶。它允許企業和開發者利用人工智能的能力,而無需構建和維護自己的人工智能基礎設施和模型。

????????通過"一切皆服務"的理念,云服務將計算資源和應用功能封裝成可消費的服務,為用戶提供了更靈活、高效和成本效益的方式來構建和管理他們的應用和業務。

四、什么是微服務架構

4.1 什么是微服務架構

微服務架構是一種將一體化的應用程序拆分為多個小型、獨立部署的服務的方法每個服務都具有自己的業務功能和相應的 API 接口。每個服務都是運行在其自己的進程中,并且可以使用不同的編程語言、數據庫和技術棧。

微服務架構的主要特點如下:

  1. 獨立性:每個服務都是獨立且自治的,這意味著系統中的其他服務不會因為其中一個服務故障或故障而受到影響。每個服務都有自己的數據存儲和處理能力,可以獨立管理和擴展。

  2. 靈活性:每個服務可以獨立開發、測試和部署,這使得服務的迭代速度更快,可以更快地響應用戶需求和市場變化。

  3. 可組合性:每個服務都提供 API 接口,這使得不同的服務可以組合成一個完整的應用程序。這使得應用程序可以更加靈活、可拓展和可維護。

  4. 可替換性:由于每個服務是自治的,所以可以使用不同的技術棧和解決方案來實現每個服務。如果服務出現問題,可以更換使用新技術棧的服務,而不會影響整個系統。

  5. 可擴展性:由于每個服務都是獨立的,可以根據需要自由地增加或減少服務的數量。這使得系統可以更加靈活地應對流量高峰以及應用程序規模的變化。

微服務架構的本質是一個分布式系統,需要考慮分布式架構中的各種問題,如服務發現、負載均衡、故障轉移、數據管理和安全性等。微服務架構要求開發團隊具備更高的技術能力和團隊協作能力,但在應對快速變化的市場和業務需求方面具有非常明顯的優勢。

4.2 微服務架構的案例

微服務架構已經被廣泛地應用于眾多成功的應用程序中,下面是幾個比較具有代表性的案例:

  1. Netflix

Netflix 是一個知名的在線視頻平臺,它以微服務架構來構建其應用程序。Netflix 將其應用程序拆分為超過 500 個微服務,每個微服務都有自己的部署管道和數據存儲方案。Netflix 的微服務架構允許其快速地適應市場,構建并提供新功能和服務。

  1. Uber

Uber 是一家非常成功的系統級的物流運輸和出行平臺,它主要基于微服務架構構建Uber 的微服務架構允許其將應用程序拆分為多個獨立的服務,包括訂單管理、支付、定位和路線規劃等服務。這使得 Uber 能夠快速響應市場需求和路況變化。

  1. Amazon

Amazon 是最早引入微服務架構的公司之一,它使用微服務架構來構建其云服務、市場和庫存管理系統。微服務架構為 Amazon 提供了更為靈活和可擴展的系統架構,同時也減少了系統重構的風險。

  1. Airbnb

Airbnb 是一個在線房屋出租平臺,它利用微服務架構來構建其核心系統。Airbnb 的微服務架構允許其將應用程序拆分為多個小型服務,包括搜索、訂閱、預訂和房源管理等服務。微服務架構為 Airbnb 提供了更大的敏捷性,更快的迭代速度和更佳的維護性。

這些公司都已經證明了微服務架構在構建復雜、高度可擴展的應用程序方面的巨大價值,它已經成為構建現代應用程序的一種主流方法。

五、企業服務總線ESB

5.1 什么是企業服務器總線

企業服務總線(Enterprise Service Bus,ESB)是一種中介軟件架構,用于促進企業內部不同應用系統之間的集成和通信。ESB 提供了一種統一的、可靠的消息傳遞機制,以及服務管理和轉換功能,使各個系統能夠以松耦合的方式相互通信。

ESB 主要包含以下組件和特性:

  1. 消息傳遞:ESB 通過在不同應用程序之間傳遞消息來實現集成。消息可以是一種標準格式,如 XML 或 JSON,也可以是特定于某個應用程序的自定義格式。ESB 可以確保消息的可靠投遞,并提供消息路由和轉換等功能。

  2. 中介器:ESB 充當應用程序之間中介器,負責接收、處理和路由消息。它可以處理不同協議之間的轉換,例如將消息從一個應用程序的 SOAP Web 服務轉換為另一個應用程序的 REST API。

  3. 服務管理ESB 提供服務注冊和發現機制,允許應用程序發布其提供的服務訂閱其他服務。這使得應用程序可以通過 ESB 輕松地發現和使用其他應用程序的功能,促進了服務的重用和集成。

  4. 安全性和身份驗證:通過提供安全機制和身份驗證功能,ESB 可以確保通信在不同系統之間是安全和可信的。它可以處理身份驗證和授權,保護敏感數據的傳輸,并實施訪問控制策略。

  5. 監控和日志記錄:ESB 提供監控和日志記錄功能,可以跟蹤消息的流動和處理情況。這使得開發人員和管理員可以實時了解系統的狀態和性能,并進行故障排除和優化。

????????ESB 的目標是簡化企業內部系統集成,并提供靈活、可擴展和可靠的集成解決方案。它使企業能夠更容易地實現應用程序之間的互操作性,降低集成成本和復雜性,并加快新功能的開發和交付。

5.2?常見的企業服務總線

以下是一些常見的企業服務總線(ESB)實例:

  1. Oracle Service Bus:Oracle Service Bus 是 Oracle 公司提供的一款綜合性 ESB 解決方案。它通過提供中央集成架構、消息路由、轉換和基于規則的業務流程編排等功能,幫助企業實現應用系統之間的集成和通信

  2. MuleSoft Anypoint Platform:MuleSoft Anypoint Platform 是一種全面的集成平臺,其中包括 ESB 功能。它提供了用于構建、部署和管理 API、應用程序和數據集成的工具和服務。MuleSoft Anypoint Platform 的靈活性和可擴展性使其成為了企業中廣泛采用的 ESB 解決方案之一。

  3. IBM Integration Bus:IBM Integration Bus(前身為 IBM WebSphere Message Broker)是 IBM 公司提供的一款企業級 ESB 解決方案。它提供了高度可靠的消息傳遞、數據轉換和路由功能,允許企業內部的多個應用系統相互通信和集成。

  4. Apache ServiceMix:Apache ServiceMix 是一個基于開源的 ESB 和集成平臺。它使用 Apache Camel 作為核心引擎,提供了消息路由、轉換和流程編排等功能。Apache ServiceMix 具有靈活的插件架構,可以與其他開源技術無縫集成。

  5. TIBCO ActiveMatrix BusinessWorks:TIBCO ActiveMatrix BusinessWorks 是一種全面的集成功能平臺,其中包括 ESB 功能。它提供了強大的消息傳遞、數據轉換和流程編排能力,可幫助企業實現不同應用系統之間的高效集成和通信。

這些是一些常見的企業服務總線實例,它們提供了豐富的功能和工具,幫助企業實現應用程序之間的集成和交流。選擇適合企業需求的 ESB 解決方案需要綜合考慮架構要求、性能需求、可靠性和成本等因素。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208877.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

樹莓派 5 - Raspberry Pi 5 入門教程

系列文章目錄 文章目錄 ??????? 前言 如果您是第一次使用 Raspberry Pi,請參閱我們的入門指南(how to get started)。 Raspberry Pi 5 Raspberry Pi 5 配備了運行頻率為 2.4GHz 的 64 位四核 Arm Cortex-A76 處理器,CPU 性…

java第三十三課

ISBN 編號:字符串 商品模塊中:增刪改查是最基本的操作。 查詢:復雜查詢(與多表有關系) 訂單,訂單詳情兩個表 訂單(增刪改查), 訂單詳情(增刪改查)…

LangChain+通義千問+AnalyticDB向量引擎保姆級教程

本文以構建AIGC落地應用ChatBot和構建AI Agent為例,從代碼級別詳細分享AI框架LangChain、阿里云通義大模型和AnalyticDB向量引擎的開發經驗和最佳實踐,給大家快速落地AIGC應用提供參考。 前言 通義模型具備的能力包括: 1.創作文字&#xf…

【已解決】SpringBoot Maven 打包失敗:class lombok.javac.apt.LombokProcessor 錯誤

文章目錄 出錯原因解決辦法總結 最新項目部署的時候&#xff0c;出現了一個maven打包失敗的問題&#xff0c;主要是lombok這個組件出的問題&#xff0c;具體的錯誤信息如下&#xff1a; 我的lombok版本如下&#xff1a; <dependency><groupId>org.projectlombok&l…

Android View.inflate 和 LayoutInflater.from(this).inflate 的區別

前言 兩個都是布局加載器&#xff0c;而View.inflate是對 LayoutInflater.from(context).inflate的封裝&#xff0c;功能相同&#xff0c;案例使用了dataBinding。 View.inflate(context, layoutResId, root) LayoutInflater.from(context).inflate(layoutResId, root, fals…

【JS】JS數組添加元素的三種方法

> 1、push() 方法可向數組的末尾添加一個或多個元素&#xff0c;并返回新的長度。 > 2、unshift()方法可向數組的開頭添加一個或更多元素&#xff0c;并返回新的長度。 > 3、splice() 方法向/從數組中添加/刪除項目&#xff0c;然后返回被刪除的項目。1、push() 方法…

nodejs+vue+微信小程序+python+PHP的黃山旅游景點購票系統設計與實現-計算機畢業設計推薦

本文首先對該系統進行了詳細地描述&#xff0c;然后對該系統進行了詳細的描述。管理人員增加了系統首頁、個人中心、用戶管理、景點分類管理、景點簡介管理、旅游路線管理、文章分類管理、公告文章管理、系統管理理等功能。黃山旅游景點購票系統是根據當前的現實需要&#xff0…

線程池的原理和基本使用~

線程池的基本原理&#xff1a; 無論是之前在JavaSE基礎中&#xff0c;我們學習過的常量池&#xff0c;還是在操作數據庫時&#xff0c;我們學習過數據庫連接池&#xff0c;以及接下來要學習的線程池&#xff0c;均是一種池化思想&#xff0c;其目的就是為了提高資源的利用率&a…

mysql 鏈接超時的幾個參數詳解

mysql5.7版本中&#xff0c;先查看超時設置參數&#xff0c;我們這里只關注需要的超時參數&#xff0c;并不是全都講解 show variables like %timeout%; connect_timeout 指的是連接過程中握手的超時時間,在5.0.52以后默認為10秒&#xff0c;之前版本默認是5秒&#xff0c;主…

【vscode寫vue代碼是白色怎么辦】

【vscode寫vue代碼是白色怎么辦】 在插件列表中搜索Vetur 安裝即可

Web學習路線

閱讀前請看一下&#xff1a;我是一個熱衷于記錄的人&#xff0c;每次寫博客會反復研讀&#xff0c;盡量不斷提升博客質量。文章設置為僅粉絲可見&#xff0c;是因為寫博客確實花了不少精力。希望互相進步謝謝&#xff01;&#xff01; 文章目錄 閱讀前請看一下&#xff1a;我是…

Redis 命令全解析之 Hash類型

文章目錄 ?介紹?命令?RedisTemplate API?應用場景 ?介紹 Hash類型&#xff0c;也叫散列&#xff0c;其value是一個無序字典&#xff0c;類似于Java中的 HashMap 結構。 String結構是將對象序列化為JSON字符串后存儲&#xff0c;當需要修改對象某個字段時很不方便&#xf…

降維技術——PCA、LCA 和 SVD

一、說明 降維在數據分析和機器學習中發揮著關鍵作用&#xff0c;為高維數據集帶來的挑戰提供了戰略解決方案。隨著數據集規模和復雜性的增長&#xff0c;特征或維度的數量通常變得難以處理&#xff0c;導致計算需求增加、潛在的過度擬合和模型可解釋性降低。降維技術通過捕獲數…

用隊列實現棧

問題描述&#xff1a; 請你僅用兩個隊列實現一個后入先出&#xff08;LIFO&#xff09;的棧&#xff0c;并支持普通隊列的全部四種操作&#xff08;push、top、pop和empty&#xff09;。 實現MyStack類&#xff1a; void push(int x) 將元素x壓入棧頂。int pop()移除并返回棧頂…

java中線程的狀態是如何轉換的?

在 Java 中&#xff0c;線程有幾種狀態&#xff0c;主要包括 NEW&#xff08;新建&#xff09;、RUNNABLE&#xff08;可運行&#xff09;、BLOCKED&#xff08;阻塞&#xff09;、WAITING&#xff08;等待&#xff09;、TIMED_WAITING&#xff08;計時等待&#xff09;、和 TE…

Vue學習筆記-Vue3中的計算屬性與監視屬性

computed函數 import {reactive,computed} from vue export default {name: "DemoVue",setup(){//數據定義let person reactive({firstName : 李,lastName : 四,age:18,})//計算屬性定義-簡寫形式person.fullName computed(()>{return person.firstName-person…

手寫 Promise:深入理解異步編程的基石

手寫 Promise&#xff1a;深入理解異步編程的基石 本文將帶您逐步實現一個簡單的 Promise&#xff0c;以幫助您深入理解異步編程的基本概念。通過自己動手編寫 Promise 的過程&#xff0c;您將更好地理解 Promise 的工作原理和常見用法&#xff0c;并能夠應用于實際項目中。 …

什么是網站劫持

網站劫持是一種網絡安全威脅&#xff0c;它通過非法訪問或篡改網站的內容來獲取機密信息或者破壞計算機系統。如果您遇到了網站劫持問題&#xff0c;建議您立即聯系相關的安全機構或者技術支持團隊&#xff0c;以獲得更專業的幫助和解決方案。

探索 HTTPS:保障網絡通信的安全性

引言 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是一種安全的通信協議&#xff0c;用于在網絡上安全地傳輸數據。它是基于 HTTP 協議的擴展&#xff0c;通過加密通信實現了數據的保護和安全性。 功能介紹 加密數據傳輸&#xff1a; 使用加密技術對數…

Prism框架快速注冊帶有特性標簽的類型

前言 最近用Prims框架,真的是懶得手動注冊各種類型,不利于團隊開發工作,各種dll強耦合,后期維護還麻煩,這次我們帶來了一個快速注冊的類來快速提高開發效率。重點用到的就是通過反射出dll里面的類型,然后根據特性或者類型過濾來完成快速注冊的功能。 代碼 using Prism…