更新時間:2020-03-23 10:11:10 來源:動力節點 瀏覽5462次
SOA架構
SOA全稱(ServiceOrientedArchitecture)中文意思為面相服務的架構,他是一種設計方法,輕重包含多個服務,服務之間通過相互依賴最終提供一系列的功能,一個服務通常以獨立的形式存在與操作系統進程中,各個服務之間通過網絡調用,
跟SOA相提并論的還有ESB(企業服務總線),簡單來說ESB就是管道,鏈接各個服務節點,為了集成不同系統和不同協議,ESB做消息的轉化解釋和路由的工作。讓不同的服務連通。
系統初期
系統后期
SOA架構,使用ESB
SOA解決的問題
1.系統集成,站在系統的角度,解決企業系統間的通信問題,把原先散亂無規劃的系統間的網狀結構,梳理成規劃,可治理的系統間星型結構。這一步需要引入一些產品,例如ESB,以及技術規范,服務管理規范,這一步解決的核心問題是有序
2,系統的服務化,站在功能的角度,把業務邏輯抽象成可復用可組裝的服務,通過服務的編排和實現業務的快速再生,目的:把原先固有的業務功能變為通用的業務服務,實現業務邏輯的快速復用,這步解決的核心問題是復用
3,業務的服務化,站在企業的角度,把企業只能抽象成可復用可組裝的服務,把原先職能化的企業架構轉為變為服務花的企業架構,進一步提升企業的對外服務能力,前兩步都是技術層面來解決系統調用,系統功能復用的問題,第三步則是以業務驅動把一個業務單元封裝成一項服務,這一步解決的核心問題是高效。
微服務架構
微服務架構和SOA架構類似,微服務架構是在SOA上做的升華,微服務架構強調的一個重點是“業務需要徹底的組件化和服務化”,原有的單個業務系統會拆分為多個可以獨立開發設計運行的小應用。這些小應用之間通過服務完成交互和集成。
組件表示一個可以獨立更換和升級的單元,像PC機中的CPU內存,顯卡等獨立且可以更換升級而不影響其他單元,如果我們把PC機作為組件以服務的方式構建,那么這臺PC只需要維護主板和一些必要的外部設備,CPU,內存,硬盤都是以組件方式提供服務,PC需要調用CPU做計算機處理,只需要知道CPU這個組件的地址即可。
微服務特征
1.通過服務實現組件化
2.按業務能力來劃分服務和開發團隊
3.去中心化
4,基礎設施自動化(devops,自動化部署)
SOA架構和微服務架構的區別
1,微服務不在強調傳統的SOA架構里面比較重的ESB企業服務總線,同時SOA的思想進入到單個業務系統內部實現真正的組件化。
2,Docker容器技術的出現,為微服務提供了便利的條件,比如更小的部署單元,每個服務都可以通過類似的Node或者Springboot等技術跑在自己的進程中,
3,SOA注重的系統集成方面,而微服務關注的是完全分離
首先了解下一致性的問題
強一致性:
以客戶端的角度來看,多并發訪問時更新過的數據,要求數據能被后續的訪問看到,就是強一致性,例如數據庫的事務
弱一致性:
以客戶端的角度來看,多并發訪問時更新過的數據,如果能容忍后續的訪問可以看到部分或者全部看不到,這就是弱一致性,例如:銀行轉賬(一般是兩小時或者24小時內到賬)
最終一致性
以客戶端的角度來看,多并發訪問時更新過的數據,如果經過一段時間后要求能訪問到更新后的數據,這就是最終一致性,例如:銀行轉賬(一般是兩小時或者24小時內到賬)
最終一致性是弱一致性的一個特例,是若一致性中非常推崇的一種一致性模型,也是業界在大型分布式系統的數據一致性上比較用的多的模型
cap原理中,有三個要素
一致性(Consistency)
可用性(Availability)
分區容忍性(Partitiontolerance)
CAP原理指的是這三個要素最多只能同時實現兩點,不能三者兼顧,因此在設計分布式系統架構時,必須做出取舍,而對于分布式系統分區容忍性是最基本要求,否則就失去價值,因此設計分布式系統,就是在一致性C和可用性A中去一個平衡,對于大多數web應用,其實并不需要強一致性,因此犧牲一致性而換取高可用性,是目前多數分布式系統設計的方向。
一致性:所有節點上的數據時刻保持同步
可用性:每個請求都能接受一個相應,無論響應成功或失敗
分區容錯:系統應該持續提供服務,即使系統內部(某個節點分區)有消息丟失。比如交換機失敗,網址網絡被分成幾個子網,形成腦裂,服務器發生網絡延遲或死機,導致某些server與集群中的其他機器失去聯系。
CAP并不是一個普適性的原理和知道思想,他僅僅使用于原子讀寫的NoSql場景中,并不適用于數據庫系統。
BASE理論
從前面的分析中知道,在分布式系統下,CAP并不適合數據庫事務(因為更新一些錯誤的數據而導致失敗,無論使用什么樣的高可用方案都是徒勞,因為數據發生了無法修正的錯誤)。此外XA事務()雖然保證了數據庫在分布式系統下的ACID(原子性,一致性,隔離性,持久性)特性,但也帶來了性能的代價,對于并發和響應時間要求比較高的電商平臺來說,很難接受的。
eBay嘗試了另外一條完全不同的路,放寬了數據庫事務的ACID的要求,提出一套名為BASE的新準則。BASE全稱是Basicallyavailablesoft-stateEventuallyConsistent系統基本可用軟狀態數據最終一致性,相對CAP來說,他大大的降低了我們對系統的要求。
Basicallyavailable(基本可用),在分布式系統出現不可預知的故障時,允許瞬時部分可用性
1.比如我們在淘寶上搜索商品,正常情況下是在0.5s內返回查詢結果,但是由于后端的系統故障導致查詢響應時間變成了2s
2.再比如數據庫采用分片模式,100W個用戶數據分在5個數據庫實例上,如果破壞了一個實例,那么可用性還有80%,也就是80%的用戶都可以登錄,系統仍然可用做技術人的指路明燈,做職場生涯的精神導師
3.電商大促時,為了應對訪問量激增,部分用戶可能會被引導到降級頁面,服務層也可能只提供降級服務。這就是損失部分可用性的體現
soft-state(軟狀態).表示系統中的數據存在中間狀態,并且這個中間狀態的存在不會影響系統的整體可用性,也就是表示系統允許在不同節點的數據副本之間進行數據同步過程中存在延時;比如訂單狀態,有一個待支付、支付中、支付成功、支付失敗,那么支付中就是一個中間狀態,這個中間狀態在支付成功以后,在支付表中的狀態同步給訂單狀態之前,中間會存在一個時間內的不一致。
Eventuallyconsistent(數據的最終一致性),表示的是所有數據副本在一段時間的同步后最終都能達到一個一直的狀態,因此最終一致性的本質是要保證數據最終達到一直,而不需要實時保證系統數據的強一致
BASE理論的核心思想是:即使無法做到強一致性,但每個應用都可以根據自身業務特點,采用適當的方式來使系統達到最終一致性
什么是分布式架構下的高可用設計
1,避免單點故障
a。負載均衡技術(failover,選址,硬件負載,軟件負載,去中心化負載(gossip(redis-cluster))
b。熱備linuxHA
c。多機房(同城災備,異地災備)
2,應用的高可用
a。故障監控(系統監控(cpu,內存)、鏈路監控、日志監控)自動預警
b。應用的容錯設計(服務降級,限流)自我保護能力
c。數據量(數據分片,讀寫分離)
分布式架構下的可伸縮設計
垂直伸縮提升硬件能力
水平伸縮增加服務節點(服務器)
加速靜態內容訪問速度的CDN
cdn是ContentDeliveryNetwork的縮寫,表示的事內容的分發網絡,CDN的作用是把用戶需要的內容分發到離用戶最近的地方,這樣可以是用戶能夠快速獲取所需要的內容。CDN其實就是一種網絡緩存技術,能夠把一些相對穩定的資源放到距離用戶最近的地方,一方面節省整個廣域網的帶寬消耗,另一方面可以提升用戶的訪問速度,改進用戶的體驗,一般會把靜態資源文件(圖片,腳本,靜態頁面等)存放在CDN中
1.當用戶訪問網站時,URL經過本地DNS解析,DNS系統會最終將域名的解析權交割CNAME指向的CDN專用DNS服務器
2.CDN的DNS服務器將CDN的全局負載均衡設備ip地址放回用戶
3,用戶想CDN的全局負載均衡設備泛起內容URL訪問請求
4,CDN全局負載均衡設備根據用戶IP地址,以及用戶請求的內容URL選在一臺用戶所屬區域的區域負載均衡設備,告訴用戶向這臺設備發起請求
5.區域負載均衡設備為用戶選擇一臺合適的緩存服務器提供服務,選擇的依據包括:根據IP地址,判斷一臺服務器距離用戶最近
根據用戶所請求的URL中攜帶的內容名稱,判斷那一臺服務器上有用戶所需要的內容,查詢各個服務器當前的負載狀況,判斷那一臺服務器尚有服務能力,基于上述條件綜合分析之后,區域負載均衡設備會向全局負載均衡設備返回一臺緩存服務器的IP地址
6.全局負載均衡設備會把服務器的IP返回給用戶
用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需內容傳送到用戶終端,如果這臺緩存服務器上并沒有用戶想要的內容,而區域均衡設備依然將他分配給用戶,那么這臺服務器就要向她的上一級緩存服務器請求內容,直至追溯到網站的源服務器將內容拉到本地。
什么情況下使用CDN
最適合那些不會經常變化的內容,比如圖片js文件css
以上就是動力節點Java培訓機構小編介紹的“Java分布式系統框架教程,架構設計”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習