1. 程式人生 > >應用架構演進

應用架構演進

1.      傳統的垂直應用的架構:

就是我們現在企業中最常用的MVC架構,它有一個主要的特點就是技術單一,開發上手快,測試,部署都是比較簡單的

MVC的三層結構:

a.  最前端的是V(view),主要是用於前端頁面展示,使用jsp,js,html+css等

b.  中間為排程控制層(Control),主要是用於前端web請求的分發,然後排程後臺的邏輯執行,可以通過struts2或者spring mvc來實現

c.  第三層為應用模型層(Model),模型是應用程式上的字型部分,模型代表了業務邏輯和業務資料

標準的MVC模式並不包含資料訪問層,在開發中我們有一些架構可以解決這個問題,比如使用了我們的ORM(物件關係對映框架)來實現與資料庫的訪問,可以使用mybatis和hebernate,這倆個框架都不同程度的封裝了JDBC

這種垂直架構面臨的挑戰:

1.      複雜應用開發的維護成本很高,部署效率低

2.      團隊合作弱,多個專案的或者同一個專案的公共模組重複開發,增加了程式碼量的冗餘

3.      系統可靠性降低,隨業務的不斷增加,訪問量增大,網路流量增大,資料庫連線增多,這都是將要面臨的問題

4.      維護困難:業務程式碼不斷加大,功能不斷加多,在這種垂直的架構中無法對已有的服務拆分,改一個地方,其它地方會有影響

2.      RPC架構

RPC架構可以讓遠端過程(服務)呼叫更加簡單、透明,RPC框架負責遮蔽底層的傳輸方式(TCP或者是UDP)、序列化方式(XML、JSON、二進位制)和一些通訊的細節,開發者不需要關心具體的通訊細節和呼叫過程

RPC架構的核心技術:

1.      遠端服務提供者需要以某種形式提供服務呼叫相關的資訊,包括但不侷限於服務介面定義、資料結構,或者中間態的服務定義檔案,服務呼叫者需要通過一定的途徑獲取遠端服務呼叫相關資訊。

2.      遠端代理物件:服務呼叫者呼叫的服務實際是遠端服務的本地代理,對於我們的java來說其實就是jdk的動態代理,通過動態代理的攔截機制,將本地呼叫封裝成遠端服務呼叫

3.      通訊:RPC框架與具體的協議無關

4.      序列化

RPC架構面臨的挑戰:

隨著服務越來越多的時候,服務間依賴關係變得錯綜複雜,服務的呼叫量越來越大,服務的容量問題就會暴露出來了,某個服務在那個機器上,什麼時候該增加節點,這都是問題

將業務服務化後,隨之而來的就是服務治理的問題,目前業界開源的RPC框架的服務治理能力都不是很健全,當應用大規模服務化後會面臨許多服務治理方面的挑戰,需要解決這些問題,必須通過服務框架+服務治理來完成,但憑RPC框架就比較吃力了

3.      SOA服務化架構

SOA是一種粗粒度,鬆耦合的以服務為中心的架構,介面間通過定義明確的協議和介面進行通訊。它可以更加從容地應對複雜企業系統整合和需求的快速變化

SOA面向服務的一般原則總結如下

1.      服務和複用

2.      服務共享一個標準的契約:比如說一個介面

3.      服務間是鬆耦合的

4.      服務是底層邏輯的抽象:只有經服務契約所暴露的服務對外部可見,契約外的底層邏輯實現是不可見的

5.      服務是可以組合的:多個服務可以被編排組合成一個新的服務

6.      服務是自治的不依賴其它服務

7.      服務是可以被自動發現的:服務釋出上線後,允許被其它消費者自動發現

SOA架構面臨的挑戰:

SOA架構解決了應用服務化的問題,隨著服務化實踐的不斷深入,服務規模越來越大,服務治理面臨的挑戰也是越來越多

4.      微服務架構

微服務架構是一種服務化架構風格,通過將功能分散到各個離散的服務中以實現對解決方案的解耦

微服務的主要特徵如下:

1.      原子服務,專注於做一件事情,與面向物件中的“單一職責原則”類似,實現高內聚,低耦合

2.      高密度部署:重要的服務可以獨立程序部署,非核心服務可以獨立打包,合設到統一程序中去,服務被高密度部署

3.      敏捷交付:服務由小研發團隊負責設計、開發、測試、部署、線上治理運維整個服務的生命週期

4.      微治理:服務足夠小,功能單一,可以獨立打包、部署、升級。不依賴其它的服務,實現了局部自治

這就是我們應用架構的演進,從耦合到微服務,便於管理和服務的治理

相關推薦

應用架構演進《一》

傳統的專案遺留額外難題: 程式碼重複率高; 需求變更(開發維護)困難; 部署效率低; 學習成本高; 團隊協作效率差,部分功能重複開發; 系

Web應用架構演進及系統性能、穩定性所需要解決的問題

Web應用架構演進 專案起步階段 在專案起步階段,系統訪問量不大,業務比較單一,且需求緊,需要快速上線,這個時候一般瀑布式開發,單系統、單庫、單快取叢集。 業務範圍擴大,根據業務邊界拆分

應用架構演進

1.      傳統的垂直應用的架構: 就是我們現在企業中最常用的MVC架構,它有一個主要的特點就是技術單一,開發上手快,測試,部署都是比較簡單的 MVC的三層結構: a.  最前端的是V(view),主要是用於前端頁面展示,使用jsp,js,html+css等 b.  中

分散式服務框架學習筆記1 應用架構演進

傳統垂直應用架構 業界曾比較流行的有: LAMP架構:Linux+Apache+PHP(前後端分離)+MySQL(讀寫分離) MVC架構:Spring+Struts+iBatis/Hibernate+Tomcat 在高併發、大流量的應用場景中,需要做叢集

應用架構演進--MVC,RPC,SOA,微服務架構

MVC架構:垂直應用架構 當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。 當業務規模很小時,將所有功能都部署在同一個程序中,通過雙機或者前置負載均衡器實現負載分流 此時,加速前端頁面開發,分離前後臺邏輯的mvc框架是關鍵。 代表技術:

大型網站架構演進(4)使用應用服務器集群

gin 常用 die 這一 html 散列 str 系統 com 原文:大型網站架構演進(4)使用應用服務器集群   使用應用服務器集群是解決高並發的常用手段,當一臺應用服務器的處理能力不足時,不要企圖更換配置更高的服務器,對於大型網站而言,不管多麽強大的服務器,都滿足不了

大型網站架構演進(2)數據庫與應用服務器分離

並發 www ref 使用 大型 spa 和數 logs 三臺 原文:大型網站架構演進(2)數據庫與應用服務器分離  隨著用戶量和並發數的增加,單臺服務器出現了性能問題,此時必須要將應用程序和數據庫分離,分離後整個網站變成三臺服務器了:應用服務器(或稱web服務器),數據庫

大型網站架構演進(4)使用應用伺服器叢集

原文: 大型網站架構演進(4)使用應用伺服器叢集    使用應用伺服器叢集是解決高併發的常用手段,當一臺應用伺服器的處理能力不足時,不要企圖更換配置更高的伺服器,對於大型網站而言,不管多麼強大的伺服器,都滿足不了持續增長的業務需求,在這種情況下,更好的做法是增加一臺應用伺服器去分擔原來伺服器的壓力

大型網站架構演進(2)資料庫與應用伺服器分離

原文: 大型網站架構演進(2)資料庫與應用伺服器分離   隨著使用者量和併發數的增加,單臺伺服器出現了效能問題,此時必須要將應用程式和資料庫分離,分離後整個網站變成三臺伺服器了:應用伺服器(或稱web伺服器),資料庫伺服器和檔案伺服器。這三臺伺服器對伺服器的配置要求是不一樣的,應用伺服器需要處理大量的業務邏

應用架構演進歷史 MVC、 RPC、SOA 和 微服務架構

本文摘自 李林峰著的《分散式服務框架原理與實踐》 MVC (Modle View Controller) 架構: 當業務規模很小時,將所有功能都部署在同一個程序中,通過雙機或者前置負載均衡器實現負載分流;此時,用於分離前後臺邏輯的 MVC 架構是關鍵。

關於Django Web應用架構設計開發的幾個問題

依賴 實際應用 解決辦法 會有 簡單的 upd 嵌套 有用 缺點 1、關於分層,做過傳統JEE應用的同學肯定知道JEE應用會分很多個設計層。根據傳統Web應用架構設計一般從上到下分這麽幾個層(太懶了,不畫圖了):Web前端層、Web後端交互層、業務層、基礎數據設施層,Web

Web API應用架構設計分析(2)

最好 factor 狀態 是否 沒有 dot sel nal std Web API應用架構設計分析(2) 在上篇隨筆《Web API應用架構設計分析(1)》,我對Web API的各種應用架構進行了概括性的分析和設計,Web API 是一種應用接口框架,它能夠構建HTT

Web API應用架構設計分析(1)

人員管理 門面 guid orm 和平 ide 額外 簡化 響應 Web API應用架構設計分析(1) Web API 是一種應用接口框架,它能夠構建HTTP服務以支撐更廣泛的客戶端(包括瀏覽器,手機和平板電腦等移動設備)的框架, ASP.NET Web API 是一種

Java應用架構的演化之路

當前 分析 c51 阻塞 發展 分布式緩存 如何 分布式 查詢 當我們架設一個系統的時候通常需要考慮到如何與其他系統交互,所以我們首先需要知道各種系統之間是如何交互的,使用何種技術實現。 1. 不同系統不同語言之間的交互 現在我們常見的不同系統不同語言之間的交互使用WebS

iOS應用架構談 view層的組織和調用方案(轉~地址)

title 組織 get hit asa lan targe architect arc 來自:iOS應用架構談 view層的組織和調用方案 http://www.devzhou.com/2017/07/19/casa-ios-architecture-view/iOS應用

適合雲計算開發者的企業級互聯網分布式系統應用架構學習

目標 均衡 http 支持 uid course 概覽 .com 異步處理 課程介紹 本課程主要講解當前網絡環境下互聯網應用架構設計,課程針對阿裏雲平臺所提供的分步式系統架構支持來分層說明如何搭建一個高可用的應用架構。 講師介紹: 石立勇,阿裏雲生態體系首席架構師,致力於阿

當前流行的J2EE WEB應用架構分析

自己 html 自身 ole 方案 應用開發 target wid gif 1. 架構概述 J2EE體系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技術。這些技術的出現給電子商務時代

我的物聯網項目(十二) 單體應用架構不行?

web 架構 簡單的 一個數 tom 要去 推廣 沈澱 tomcat 單體應用架構在創業型項目裏面是非常合適的,畢竟它主要的擔當還是在驗證創業模式以及迅速功能實現,所以它從開發到部署,在少量開發人員的基礎上能非常減少成本,主要是門檻低,開發效率也非常高。到目前為此,這個物聯

《企業級應用架構設計》3.軟件設計原則

原則 包含 設計 高內聚低耦合 選擇 註意 soc cnblogs 說明 3.1.軟件設計通用原則 3.1.1 內聚和耦合 內聚:建議創建專註類,少量方法表示邏輯操作。 耦合:衡量兩個軟件模塊(如類)之間的依賴程度。例如A類和B類,A類改變,必須改變B,說明它們耦合。 3.

騰訊技術工程 |騰訊海外計費系統架構演進

lin app https aqi 鏡像 靜態編譯 可能 快速發布 遠程代理 作者簡介:abllen,2008年加入騰訊,一直專註於騰訊計費平臺建設,主導參與了騰訊充值中心、計費開放平臺、統一計費米大師等項目,見證了米大師從0到1,業務營收從PC到移動多終端再到全球化的跨越