J2EE企業級應用架構


一、企業級應用架構解析

應用特點

  多環境多系統的交互

  海量數據、高並發【用戶訪問量】、高TPS【每秒吞吐量】

  安全等級高

  自動化集群管理

架構原則

  CAP原則(一致性【數據變動要同步】、可用性【隨着數據訪問量增長保證性能,數據庫性能管理】、分區容錯性)

  復雜的事情簡單化 

架構的目標

  高速緩存 【redis、Memcached等技術】

  並行計算

  負載均衡

  數據備份【主備份,線上庫到離線庫備份】

  異地容災【備用多個機房存儲數據庫】

  業務分離【拆分大應用為多個小應用,以服務化的方式暴露接口,簡化應用】

二、架構發展:

2.1 原始版:

  用戶+服務器【單台虛擬機】+數據庫【mysql或者oracle】,用戶訪問量比較少,該企業架構特點:單節點【只有一台機器】,幾乎無容災【如果機器掛了只能重啟】,負載能力低【訪問量比較少】,維護簡單【只有一台服務器,所以對應用監控比較簡單,數據庫管理比較簡單,企業部署成本比較低】

2.2 動靜分離版

  加入Nginx,通過Nginx來訪問靜態資源,用戶通過REST API來訪問Web應用,通過ajax獲取數據,提交數據,極大減少了和用戶交互的流量, html、js、css大資源通過Nginx傳送給用戶,降低交互流量,Nginx還負責均衡,同時增加服務器部署,可以提高訪問量。使用了框架spring,Struts,mybatis,節省開發時間。該架構特點:Nginx訪問靜態資源,Nginx負載均衡,應用分離,依賴框架,安全性低【暴露REST API】,Session 持久化問題【部署了多台服務器,Session持久化成為問題】。

2.3 緩存版

  加入高速緩存,支持key-value形式的查詢,可以達到6w/s查詢量。基於請求的緩存,當http請求發起,先去查詢高速是否有結果,沒有的話,查詢數據庫,寫入高速緩存,返回給用戶;基於查詢結構緩存,先根據相應條件查詢高速緩存,沒有的話則查詢數據庫,寫入緩存返回給用戶;將Session存於高速緩存里頭,當多台機器訪問應用時,將session的id在高速緩存進行查詢。該架構特點:大量使用緩存、Nginx接收Https、Session 持久化、一致性問題【數據同步問題】、緩存失效問題【設置session失效時間】,雖然還存在后兩者的問題,但是極大提高企業負載能力。

 2.4 分布式服務

 

  分布式架構,拆分業務功能,保證功能不變的情況下,將應用拆分前端web應用和后端服務,后端服務又拆分多個小應用,共同提供服務,將服務封裝起來,提供邏輯。web如何將多個應用提供給遠程調用,這時候就要提供服務總線\注冊中心進行應用管理,例如分布式框架dubbo。該架構特點:小型機虛擬化【將服務器部署在虛擬機中】、請求處理與業務拆分、應用服務化、同步異步拆分、數據庫讀寫分離【查詢映射到讀庫上】、運維難度大大增加。消息中間件:例如mq、Metaq中間件,將大量異步操作發送到中間件,后台均勻消費這些請求,同步異步拆分提升吞吐量。調度中間件:ScheduleX。該架構缺點:當出現高並發的時候,對於小型機壓力很大。

2.5 彈性計算

  采用Docker容器級虛擬化,使得服務器資源實時分配。當負載大時候,docker虛擬並啟動應用。新增Hadoop日志搜集平台,將日志寫入日志平台。通過與Docker配合極大提高負載性能。該架構特點:容器級虛擬化、應用資源動態分配、離線數據采集分析系統、數據庫讀寫分離、硬件成本下降、異地容災。數據庫新增了於hadoop進行交互,極大提升了性能。

三、常見的服務治理的方式

3.1 多域名分配 

  每個應用專屬域名

  Http做進程通信

  硬件負載或者Nginx

  多語言

  安全性較低

  無法編輯檢查

3.2 企業服務總線

  支持多種方式路由以及注冊

  工作流的集成 高效、

  容易維護

  過度依賴於中心

  軟件成本高

3.3 分布式服務框架

  無中心也可以工作

  基於接口編譯檢查

  Java環境中開發學習成本低

  高效、高可用

  多語言支持不足

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM