柴中宏
摘要:隨著以信息技術為代表的新技術的出現和電子商務的高速發展,本文闡述了傳統單體架構、分布式架構、SOA架構及微服務架構的技術演變過程,對大型網站的建設有參考價值。
關鍵字:網站架構單體架構SOA微服務
引言
隨著計算機技術和通信技術在實踐中的深入應用,大數據已經深入各行各業。網站已經成為人們信息交流、交互和發布的重要方式。而大型網站的特點是高并發,大流量,高可用,海量數據等,如何設計合理的網站架構方便用戶信息交互,滿足數以億計的用戶需求,顯得尤為重要。本文主要通過對現有傳統網站架構、分布式網站架構和SOA架構的分析和比較,引出目前理念先進的微服務架構,對互聯網不斷發展的今天有參考價值。
1傳統架構演變
傳統網站架構是在單體架構的基礎上演化而來,單體架構是將web應用服務和數據庫服務集成在一臺服務器上發布,隨著業務量、訪問量和并發性的需求不斷增加,將web應用和數據服務分置在兩臺相對獨立的服務器上。Web應用服務器負責網站信息的發布,數據庫服務器負責數據庫服務的發布。在web服務發布中通過緩存技術、服務器集群技術和負載均衡等技術滿足高并發,大訪問量的要求。在數據庫服務器方面采用數據庫緩存技術(CND、反向代理、本地緩存、分布式緩存),讀寫分離、分庫等技術來滿足高并發,大業務量和海量訪問,這就演變為分布式架構。通過以上技術對網站架構改進能滿足網站可用性、伸縮性、擴展性和安全性方面的要求。但隨著業務復雜度增加、技術團隊規模擴大,系統維護量陡增,開發效率大大降低,即使處理小需求,也需要全部重新部署,增加用運維的復雜度,降低了網站的伸縮性和擴展性。
2 SOA{面向服務架構)
SOA(S e r v i c e-O r i e n t e d Architecture)的思想是將緊耦合系統劃分為面向業務,粗粒度,松耦合,無狀態的服務。服務發布為其他服務所調用,一組相互依賴的服務就構成了SOA架構系統。SOA面向服務架構的核心是服務組件模型,優點是將多種應用服務以接口和契約相聯系起來,并以通用的方式進行交互。減少了服務間的依賴達到了松耦合,也為實現企業IT閑置資產的重用、降低了企業的IT投資成本,實現企業動態的變革提供了便利。
SOA體系結構中的角色包括:服務請求者、服務提供者和服務注冊中心。服務請求者是一個應用程序、一個軟件模塊、另一個服務。他發起對注冊中心的服務的查詢通過傳輸綁定服務并且執行服務功能,服務請求者根據接口契約來執行服務。服務提供者是一個可通過網絡尋址的實體,他接受和執行來自請求者的請求,他將自己的服務和接口契約發布到服務注冊中心。
SOA是一種架構風格,重點在原則、理念、方法論等高思維層次上,對于工具、框架、解決方案沒有做強制限制,ESB(服務總線體系架構)是傳統中間件技術、XML和Web服務等技術結合的產物,它旨在為內部系統與內部系統間,內部系統與外部系統之間構建有效的信息交互服務體系,通過ESB建立,實現IT能力的服務化。
SOA優點:第一為企業與其業務伙伴直接建立新渠道,并且成本得以降低。第二SOA與平臺無關,減少了業務應用實現的限制。具有低耦合性特點,業務伙伴對整個業務系統的影響較低。在企業與各業務伙伴關系不斷發生變化的情況下,節省的費用會越來越多。 第三SOA具有可按模塊分階段進行實施的優勢可以成功一步再做下一步,將實施對企業的沖擊減少到最小,但SOA的實施可能并不具有成本顯著性。
SOA的缺點:第一系統與服務的界限模糊,不利于開發及維護。第二雖然使用了ESB,但是服務的接口協議不固定,種類繁多,不利于系統維護。第三抽取的服務的粒度過大,系統與服務之間耦合性高。
3微服務架構
3.1微服務概念
微服務(MicroService)的概念出自馬丁,福勒(MartinFlowler),他對為服務的定義是微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務與服務間采用輕量級的通信機制互相協作(通常是基于HTTP協議的RESTful API)。每個服務都圍繞著具體業務進行構建,并且能夠被獨立的部署到生產環境、類生產環境等。另外,對具體的服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。在SOA中主要是研究應用系統之間如何集成和互通,而在微服務架構中主要是進一步探討一個應用系統該如何設計才能更好的開發,管理更加靈活高效。微服務架構的基本思想就是“圍繞業務領域組件來創建應用,讓應用可以獨立的開發、管理和加速”。
3.2微服務架構的優點
微服務簡單靈活,能夠獨立部署,相對傳統架構需要牽一發而動全身,微服務架構由于是由多個相互獨立的微服務組成,因此僅需要對獨立單元進行部署,不需要重新構建,相應的就更高效更可靠。微服務之間是松耦合的,微服務內部是高內聚的,每個微服務很容易按需擴展。微服務架構技術選型靈活,設計者可以根據自身實際情況合理選擇合理技術高效完成業務目標。
3.3微服務應用設計原則應遵行AKF拆分原則、前后端分離、無狀態服務和無狀態通信原則。微服務拆分時要低耦合、高內聚,一個服務完成一個獨立的功能。按團隊結構,應小規模團隊維護,快速迭代。
3.4在微服務架構中的核心問題是服務注冊和路由、安全認證、集中配置、分布式事務和同步調用等問題如何解決和實現。
3.5微服務架構帶來的問題
依賴服務變更很難跟蹤,服務接口如何管理,依賴服務調試比較麻煩。部分模塊重復構建,跨團隊、跨系統、跨語言會有很多的重復建設。微服務放大了分布式架構的系列問題運維復雜度陡增面對以上問題,一般用以下方式解決,提供文檔管理、服務治理、服務模擬的工具和框架;統一認證、統一配置、統一日志、分布式匯總分析;全局事務、異步模式同步;搭建持續平臺、統一監控平臺等。
4結束語
大型網站系統采用什么樣的架構,受業務復雜性、技術復雜性等多種因素,業務復雜性是企業發展不同階段對應不同的業務。技術復雜性是IT技術發展階段和內部技術人員水平。業務復雜性必然帶來技術復雜性應用架構目標是解決業務復雜性的同時避免技術太復雜,確保業務架構落地。因此在選取網站架構時要基于實際業務,而不是選最新的技術。
參考文獻
[1]易可可汪潮王威分布式大型鋼鐵電商網站架構模式的研究和實現
[2]周強謝靖趙華茗大型網站的架構研究及解決方案
[3]佟敏徐鳳全SOA技術的發展及研究
[4]https://blog.csdn.net/fuhanghang/article/details/83961606
[5]https.//blog.csdn.net/oschina_41740LOO/article/details/8063090L
[6] https://www.ibm.com/developerworks/cn/webservices/wsgoodbad/
[7]https://kuaibao.qrl.com/s/20180623G1H02400?refer-cp_1026
[8]https:∥wenku.baidu.com/view/2ccdd64844361 0661ed9ad5l fO1 dc28le43a5604.html