一、企業級應用架構解析
應用特點
多環境多系統的交互
海量數據、高並發【用戶訪問量】、高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環境中開發學習成本低
高效、高可用
多語言支持不足
