- 相關推薦
技術架構常用模式
技術架構模式基于經常出現的問題,給出通用、可復用的技術方案。技術架構常用模式既包括一些傳統模式,如分層架構、事件驅動架構、SOA,也包括一些新興模式,如微服務架構、上云架構、云原生架構等。企業需要結合自身業務和技術的實際特點,選擇合適的技術架構模式。
所有業務邏輯全部在一套系統中,是大而全的體系,沒有服務化,沒有分層,單機集中式數據庫,存儲過程復雜。這種架構適用于業務發展早期,這時產品的完善性、系統擴展性、部署規模的要求都不高。很多企業在發展初期,在技術方面的投入并不大,主要以外采系統為主,包括CRM、MES、ERP、HR、PLM、SCM等系統,各個系統各自獨立,各自有單獨的數據庫及權限管理。單體模式的缺點是造成“煙囪式”發展,信息化協同不便,業務需求響應有限。
分層架構是一種客戶端/服務器端架構,將系統軟件分成了多個層次,通過層次的抽象提供相對便捷的擴展和復用能力。每一層都是圍繞一種功能的抽象,各負其責,有利于系統開發、測試、管理和維護。最常使用的分層架構是MVC三層架構,將模型、表現、控制進行分離,除此之外,后文介紹的很多架構模式本質上是分層架構的進一步演進。
事件驅動架構(EDA)是使用解耦、單一用途的事件處理組件來異步接收和處理事件的架構。一個事件驅動系統一般由事件消費者和事件產生者組成。事件驅動在分布式系統、異步處理系統、高并發削峰填谷等場景中廣泛使用。事件驅動架構當然也增加了一定的復雜度,包括事務性、數據一致性、事件順序、重復消費等方面。
微內核架構(Microkernel Architecture)是一種面向功能進行拆分的可擴展架構,有時也可以稱作插件化架構,比如Eclipse類型的IDE、UNIX操作系統,都是參照微內核架構設計的。微內核主要分為核心系統和插件系統,核心系統擁有能使應用運行的最小功能邏輯,插件系統是獨立存在的系統,包含特殊的處理邏輯、額外的功能和定制的代碼,能拓展核心系統業務功能。微內核架構設計的難點是核心系統的通用性、插件系統的擴展性和靈活性。
RPC架構是遠程過程調用架構。當時,很多企業采購了ESB和數據交換工具,將不同的流程打通,做到信息拉通、數據集成、協同管理。RPC框架主要包括網絡通信、序列化或反序列化、傳輸協議和服務調用等組件。遠程服務提供者以某種形式提供服務,調用相關信息,遠程代理對象通過動態代理攔截機制生成遠程服務的本地代理,讓遠程調用在使用上和本地調用一樣。網絡通信通過序列化或反序列化方式對網絡傳輸數據進行有效的傳輸。服務調用可以分為同步調用、異步調用等方式。傳輸協議可以使用TCP和HTTP。Dubbo是RPC架構典型的分布式框架代表。
SOA通過服務化技術進行系統的拆分,進而把一個單一的大系統按邏輯拆分成不同的子系統,通過服務接口來通信,是面向服務的設計模式,最終需要總線集成服務。過程中引入中間件、消息、分布式數據庫等技術組件,通過ESB與企業系統進行集成和交互。這種架構適用于業務發展中期,這時企業對產品的完善性和精細性有了一定的需求,團隊也越來越大,擴展性主要依賴服務化的能力。
微服務架構本質上是SOA的演進,在被Martin Fowler等人推廣后,由于其實用性,越來越受到大家的重視。微服務由一組小型自治服務組成,每個服務實現單個業務功能,每個服務是小型的、獨立的、松耦合的,每個服務代碼庫都是獨立的,每個服務負責持久化自己的數據或者外部狀態,通過使用定義良好的API進行通信。微服務架構的好處很多,比如提高研發效率、支持更專注的團隊、提高可擴展性、隔離業務和數據、有更小的代碼基線;同時帶來一些挑戰,比如復雜度高、部署和運維困難、數據一致性問題、版本控制問題、組織文化考驗等。
大數據架構是數據架構的一種,其主要進行大數據的技術處理和分析海量數據。該架構是大數據解決方案的藍圖,處理的工作包括批量處理大數據源、實時處理數據、預測分析及機器學習。大數據架構的優勢是應對大規模數據處理,通過并行度提升性能,彈性伸縮,與現有方案(如物聯網、BI等)互通;其挑戰在于相關大數據技術、團隊技能儲備及數據安全等問題。
云計算已成為社會的公共的基礎設施,企業上云也被人們廣泛接受。在企業數字化轉型過程中,首先應使用云作為企業的技術基礎設施,并逐步應用云計算的紅利,逐步將應用遷移到云上,這就誕生了上云架構。上云架構有很多優勢,比如極致的彈性、降本增效、加速IT設施發展、提升系統穩定性、加強資源整合等;其挑戰是對企業的技術團隊能力要求高、整體架構與企業的對接和整合不容易等。
云原生是云計算的“下一站”,云原生的代表技術有容器、服務網格、微服務、不可變基礎設施和聲明式API。這些技術能夠構建容錯性好、易于管理和便于觀察的松耦合系統。運行在其上的應用被稱作云原生應用,云原生架構是依賴云產品和云原生技術構建的IT架構,生于云、長于云并最大化運用云的能力,讓開發者聚焦于業務本身。云原生的設計理念是面向分布式(Distribution)、配置(Configuration)、韌性(Resistancy)、彈性(Elasticity)、交付(Delivery)、性能(Performance)、自動化(Automation)、診斷性(Diagnosability)及安全性(Security)等方面。
【技術架構模式】相關文章:
Java架構師的職責02-27
平臺架構師的職責03-24
Java架構師的具體職責09-23
【優選】Java架構師的職責02-27
軟件架構師的基本職責08-10
軟件架構師的基本職責【精華】08-10
軟件架構師的主要職責06-18
軟件架構師的基本職責經典[12篇]09-07
軟件開發模式03-14