SOA与微服务基本原则及对比
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
一、面向服務(wù)設(shè)計(jì)的原則
- 服務(wù)可復(fù)用:不管是否存在即時(shí)復(fù)用的機(jī)會(huì),服務(wù)均被設(shè)計(jì)為支持潛在的可復(fù)用
- 服務(wù)共享一個(gè)標(biāo)準(zhǔn)契約:為了與服務(wù)提供者交互,消費(fèi)者需要導(dǎo)入服務(wù)提供者的服務(wù)契約,這個(gè)契約可以是一個(gè)IDL文件,Java接口定義,WSDL文件,甚至是接口說明文檔
- 服務(wù)是松耦合的:服務(wù)被設(shè)計(jì)為功能相對獨(dú)立,盡量不依賴其他服務(wù)的獨(dú)立功能提供者
- 服務(wù)是底層邏輯的抽象:只有經(jīng)服務(wù)契約所暴露的服務(wù)隊(duì)外部世界可見,契約之外底層的實(shí)現(xiàn)邏輯是不可見的
- 服務(wù)是可組合、可編排的:多個(gè)服務(wù)可能被編排組合成一個(gè)新的服務(wù),這允許不同邏輯抽象的自由組合,促進(jìn)服務(wù)的復(fù)用
- 服務(wù)是自治的:邏輯由服務(wù)所控制,并位于一個(gè)清晰的邊界內(nèi),服務(wù)已經(jīng)在邊界內(nèi)被控制,不依賴其他服務(wù)
- 服務(wù)是無狀態(tài)的:服務(wù)應(yīng)當(dāng)不需要管理狀態(tài)信息,因此能夠維持送耦合性。服務(wù)應(yīng)該被盡可能設(shè)計(jì)成無狀態(tài),即便意味著要將狀態(tài)管理移至他處
- 服務(wù)是可被自動(dòng)發(fā)現(xiàn)的:服務(wù)發(fā)布上線后,允許被其他消費(fèi)者自動(dòng)發(fā)現(xiàn);當(dāng)服務(wù)提供者下線后,允許消費(fèi)者接收服務(wù)下線通知。
二、服務(wù)治理
SOA服務(wù)化之后,應(yīng)用服務(wù)化之后給系統(tǒng)運(yùn)維帶來很大挑戰(zhàn):
- 分布式框架下的服務(wù)調(diào)用性能
- 服務(wù)化架構(gòu)如何支持線性擴(kuò)展
- 如何實(shí)現(xiàn)高效、實(shí)時(shí)的服務(wù)多維度監(jiān)控
- 大規(guī)模分布式環(huán)境下的故障快速定界和定位
- 分布式環(huán)境下海量日志在線檢索、模糊查詢
- 服務(wù)的流控、超時(shí)控制、服務(wù)升降級等管控手段
- 服務(wù)的劃分原則,如何實(shí)現(xiàn)最大程度復(fù)用
此時(shí),SOA服務(wù)治理是關(guān)鍵。SOA服務(wù)治理主要包括如下幾個(gè)方面:
1、服務(wù)定義
SOA治理最基礎(chǔ)的方面就是監(jiān)視服務(wù)的創(chuàng)建過程。必須對服務(wù)進(jìn)行標(biāo)識,描述其功能,確定其行為范圍并設(shè)計(jì)其接口。創(chuàng)建服務(wù)時(shí)需要與使用這些服務(wù)的團(tuán)隊(duì)進(jìn)行協(xié)調(diào),以確保服務(wù)能夠滿足消費(fèi)者需求,避免重復(fù)工作。
2、服務(wù)生命周期管理
服務(wù)的生命周期通常有五個(gè)主要的階段。
- 計(jì)劃階段
- 測試階段
- 運(yùn)行階段
- 棄用階段
- 廢棄階段
3、服務(wù)版本治理
新版本的前向兼容性,灰度發(fā)布等需要按照統(tǒng)一的策略進(jìn)行管理。
4、服務(wù)注冊中心
需要統(tǒng)一的服務(wù)注冊中心支持服務(wù)的訂閱發(fā)布和動(dòng)態(tài)發(fā)現(xiàn)機(jī)制。
5、服務(wù)監(jiān)控
服務(wù)監(jiān)控中心需要對服務(wù)的調(diào)用時(shí)延、成功率、吞吐率等數(shù)據(jù)進(jìn)行實(shí)時(shí)采樣和匯總,通過圖形化報(bào)表的形式展示,以便運(yùn)維人員對服務(wù)的運(yùn)行質(zhì)量進(jìn)行實(shí)時(shí)分析和掌控。
6、運(yùn)行期服務(wù)質(zhì)量保障
包括服務(wù)限流、服務(wù)遷入遷出、服務(wù)升降級、服務(wù)權(quán)重調(diào)整和服務(wù)超時(shí)控制等,通過運(yùn)行期的動(dòng)態(tài)治理,可以在不重啟服務(wù)的前提下達(dá)到快速提升服務(wù)運(yùn)行質(zhì)量的目標(biāo)。
7、快速的故障定界定位手段
- 大規(guī)模分布式環(huán)境下海量業(yè)務(wù)/平臺日志的采集、匯總和實(shí)時(shí)在線檢索,支持多維度的條件檢索、模糊查詢,可以快速的在線查看各種系統(tǒng)運(yùn)行日志,方便問題定位;
- 分布式消息跟蹤,通過調(diào)用鏈打通業(yè)務(wù)、服務(wù)調(diào)用和異常,發(fā)現(xiàn)線上系統(tǒng)故障源;通過在線和離線調(diào)用鏈大數(shù)據(jù)分析,得到鏈路各個(gè)依賴的穩(wěn)定性指標(biāo),梳理依賴鏈路風(fēng)險(xiǎn)表,識別系統(tǒng)核心功能的服務(wù)調(diào)用依賴關(guān)系,評估可能的最大風(fēng)險(xiǎn)點(diǎn),針對性改進(jìn)以預(yù)防風(fēng)險(xiǎn),同時(shí)為容量規(guī)劃和擴(kuò)容提供數(shù)據(jù)決策依據(jù)。
8、服務(wù)安全
服務(wù)安全訪問策略有多種,例如可以通過動(dòng)態(tài)生成令牌token的方式做安全訪問授權(quán),服務(wù)提供者動(dòng)態(tài)生成token并告知服務(wù)注冊中心,由注冊中心告知是否告知消費(fèi)方,這樣就能在注冊中心頁面上做復(fù)雜的授權(quán)模型。
微服務(wù)架構(gòu)(MSA)是一種服務(wù)化架構(gòu)風(fēng)格,通過將功能分散到各個(gè)離散的服務(wù)中以實(shí)現(xiàn)對解決方案的解耦。
三、什么是微服務(wù)
微服務(wù)架構(gòu)的主要特征如下:
- 原子服務(wù):“高內(nèi)聚,松耦合”
- 高密度部署:重要的服務(wù)可以獨(dú)立進(jìn)程部署,非核心服務(wù)可以獨(dú)立打包,合設(shè)到同一個(gè)進(jìn)程中,服務(wù)被高密度部署。物理機(jī)部署,可在一臺服務(wù)器上部署多個(gè)服務(wù)實(shí)例進(jìn)程;如果是云端部署,則可以利用LXC實(shí)現(xiàn)容器級部署,以降低部署成本,提升資源利用率。
- 敏捷交付:真正的DevOps。
- 微自治:服務(wù)足夠小,功能單一,可以獨(dú)立打包、部署、升級、回滾和彈性伸縮,不依賴其他服務(wù),實(shí)現(xiàn)局部自治。
四、微服務(wù)架構(gòu)對比SOA
兩者的主要差異如下:
- 服務(wù)拆分粒度:SOA首先要解決的是異構(gòu)系統(tǒng)應(yīng)用的服務(wù)化;微服務(wù)強(qiáng)調(diào)的是服務(wù)拆分盡可能小,最好是獨(dú)立的原子服務(wù)。
- 服務(wù)依賴:傳統(tǒng)的SOA服務(wù),由于需要重用已有的資產(chǎn),存在大量的服務(wù)間依賴;微服務(wù)的設(shè)計(jì)理念是服務(wù)自治、功能單一獨(dú)立,避免依賴其他服務(wù)產(chǎn)生耦合,耦合會(huì)帶來更高的復(fù)雜度。
- 服務(wù)規(guī)模:傳統(tǒng)SOA服務(wù)粒度比較大,多數(shù)會(huì)采用將多個(gè)服務(wù)合并打成war包的方案,因此服務(wù)實(shí)例數(shù)比較有限;微服務(wù)強(qiáng)調(diào)盡可能拆分,同時(shí)很多服務(wù)會(huì)獨(dú)立部署,這將導(dǎo)致服務(wù)規(guī)模急劇膨脹,對服務(wù)治理和運(yùn)維帶來新的挑戰(zhàn)。
- 架構(gòu)差異:微服務(wù)化之后,服務(wù)數(shù)量的激增會(huì)引起架構(gòu)質(zhì)量屬性的變化,例如企業(yè)集成總線ESB逐漸被P2P的虛擬總線替代;為了保證高性能、低時(shí)延,需要高性能的分布式服務(wù)框架保證微服務(wù)架構(gòu)的實(shí)施。
- 服務(wù)治理:傳統(tǒng)基于SOA Governance的靜態(tài)治理轉(zhuǎn)型為服務(wù)運(yùn)行態(tài)微治理、實(shí)時(shí)生效。
- 敏捷交付:服務(wù)由小研發(fā)團(tuán)隊(duì)負(fù)責(zé)微服務(wù)設(shè)計(jì)、開發(fā)、測試、部署、線上治理、灰度發(fā)布和下線,運(yùn)維整個(gè)生命周期支撐,實(shí)現(xiàn)真正的DevOps。
總結(jié):量變引起質(zhì)變,這就是微服務(wù)架構(gòu)和SOA服務(wù)化架構(gòu)的最大差異。
轉(zhuǎn)載于:https://my.oschina.net/nuaazhaofeng/blog/1517697
總結(jié)
以上是生活随笔為你收集整理的SOA与微服务基本原则及对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ELK集群的搭建和Elasticsear
- 下一篇: “5W1H”带你来学习JavaScrip