SOA 與 微服務的區別

2021-08-21 21:27:01 字數 1548 閱讀 5019

什麼是soa

soa(service-oriented architecture)面向服務架構,它可以根據需求通過網路對鬆散耦合的粗粒度應用元件進行分布式部署、組合和使用。服務層是soa的基礎,可以直接被應用呼叫,從而有效控制系統中與軟體**互動的人為依賴性。

soa是一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義介面進行通訊,不涉及底層程式設計介面和通訊模型。soa可以看作是b/s模型、xml(標準通用標記語言的子集)/web service技術之後的自然延伸。

soa將能夠幫助軟體工程師們站在乙個新的高度理解企業級架構中的各種元件的開發、部署形式,它將幫助企業系統架構者以更迅速、更可靠、更具重用性架構整個業務系統。較之以往,以soa架構的系統能夠更加從容地面對業務的急劇變化。

區別

soa

soa的提出是在企業計算領域,就是要將緊耦合的系統,劃分為面向業務的,粗粒度,松耦合,無狀態的服務。服務發布出來供其他服務呼叫,一組互相依賴的服務就構成了soa架構下的系統。

基於這些基礎的服務,可以將業務過程用類似bpel流程的方式編排起來,而bpel反映的是業務處理的過程,這些過程對於業務人員更為直觀,調整也比hardcode的**更容易。

當然企業還需要對服務治理,比如服務註冊庫,監控管理等。

我們知道企業計算領域,如果不是交易系統的話,併發量都不是很大的,所以大多數情況下,一台伺服器就容納將許許多多的服務,這些服務採用統一的基礎設施,可能都執行在乙個應用伺服器的程序中。雖然說是面向服務了,但還是單一的系統。

微服務

而微服務架構大體是從網際網路企業興起的,由於大規模使用者,對分布式系統的要求很高,如果像企業計算那樣的系統,伸縮就需要多個容納續續多多的服務的系統例項,前面通過負載均衡使得多個系統成為乙個集群。

但這是很不方便的,網際網路企業迭代的週期很短,一周可能發布乙個版本,甚至可能每天乙個版本,而不同的子系統的發布週期是不一樣的。

而且,不同的子系統也不像原來企業計算那樣採用集中式的儲存,使用昂貴的oracle儲存整個系統的資料,二是使用mongodb,hbase,cassandra等nosql資料庫和redis,memcache等分布式快取。

那麼就傾向採用以子系統為分割,不同的子系統採用自己的架構,那麼各個服務執行自己的web容器中,當需要增加計算能力的時候,只需要增加這個子系統或服務的例項就好了,當公升級的時候,可以不影響別的子系統。這種組織方式大體上就被稱作微服務架構。

微服務與soa相比,更強調分布式系統的特性,比如橫向伸縮性,服務發現,負載均衡,故障轉移,高可用。網際網路開發對服務治理提出了更多的要求,比如多版本,比如灰度公升級,比如服務降級,比如分布式跟蹤,這些都是在soa實踐中重視不夠的。

docker容器技術的出現,為微服務提供了更便利的條件,比如更小的部署單元,每個服務可以通過類似node.js或spring boot的技術跑在自己的程序中。可能在幾十台計算機中執行成千上萬個docker容器,每個容器都執行著服務的乙個例項。隨時可以增加某個服務的例項數,或者某個例項崩潰後,在其他的計算機上再建立該服務的新的例項。

SOA 與 微服務的區別

什麼是soa soa service oriented architecture 面向服務架構,它可以根據需求通過網路對鬆散耦合的粗粒度應用元件進行分布式部署 組合和使用。服務層是soa的基礎,可以直接被應用呼叫,從而有效控制系統中與軟體 互動的人為依賴性。soa是一種粗粒度 松耦合服務架構,服務之...

微服務與SOA

過去的幾年來,微服務 這個術語逐漸得到關注,它描述的是由一系列更小的服務所組成的架構。在qcon san francisco 2012上,thoughworks的james lewis針對這個概念發表了演講,同時還就這個話題與martin fowler合作撰寫了一篇文章。最近,steve jones...

微服務架構與SOA架構的區別與聯絡

如果我們開啟支付寶首頁,去看我們的餘額,它會展示你的總資產,昨日收益 累計收益等資訊。假如這個頁面所展示的資訊,都來自各個不同的系統 應用,我們通過各個介面把這些資料展示出來。如果我們現在要在前端頁面展示這幾項資料的話,我們應該怎麼去展示呢?在這種情況下,我們不可能讓客戶端與6個不同的應用 系統都一...