微服務(wù)?
微服務(wù)(Microservices)是一種分布式架構(gòu)設(shè)計(jì)理念吨拍,是多個(gè)功能明確胆建、單一的服務(wù)獨(dú)立部署并且協(xié)同工作的服務(wù)組,其中每個(gè)服務(wù)都是一個(gè)獨(dú)立的實(shí)體,可以獨(dú)立部署在PaaS平臺(tái)上隶校,也可以作為一個(gè)獨(dú)立的進(jìn)程在主機(jī)中運(yùn)行,服務(wù)與服務(wù)之間通過(guò)API訪問(wèn)蛹锰,其中一個(gè)服務(wù)變更不會(huì)影響其它服務(wù)深胳。
0b46f21fbe096b63144c31c406338744eaf8acc9.jpg
微服務(wù)不需要像普通服務(wù)那樣成為一種獨(dú)立的功能或者獨(dú)立的資源。定義中稱(chēng)铜犬,微服務(wù)是需要與業(yè)務(wù)能力相匹配舞终,這種說(shuō)法完全正確。不幸的是癣猾,仍然意味著敛劝,如果能力模型粒度的設(shè)計(jì)是錯(cuò)誤的,那么纷宇,我們就必須付出很多代價(jià)夸盟。如果你閱讀了Fowler的整篇文章,你會(huì)發(fā)現(xiàn)像捶,其中的指導(dǎo)建議是非常實(shí)用的上陕。在決定將所有組件組合到一起時(shí),開(kāi)發(fā)人員需要非常確信這些組件都會(huì)有所改變拓春,并且規(guī)模也會(huì)發(fā)生變化释簿。服務(wù)粒度越粗,就越難以符合規(guī)定原則痘儡。服務(wù)粒度越細(xì)辕万,就越能夠靈活地降低變化和負(fù)載所帶來(lái)的影響。然而沉删,利弊之間的權(quán)衡過(guò)程是非常復(fù)雜的,我們要在配置和資金模型的基礎(chǔ)上考慮到基礎(chǔ)設(shè)施的成本問(wèn)題醉途。
現(xiàn)狀
微服務(wù)作為一項(xiàng)在云中部署應(yīng)用和服務(wù)的新技術(shù)已成為當(dāng)下最新的熱門(mén)話(huà)題矾瑰。但大部分圍繞微服務(wù)的爭(zhēng)論都集中在容器或其他技術(shù)是否能很好的實(shí)施微服務(wù),而紅帽說(shuō)API應(yīng)該是重點(diǎn)隘擎。
34fae6cd7b899e5104e4ddaa4aa7d933c8950d21.png
企業(yè)和服務(wù)提供商正在尋找更好的方法將應(yīng)用程序部署在云環(huán)境中殴穴,微服務(wù)被認(rèn)為是未來(lái)的方向。通過(guò)將應(yīng)用和服務(wù)分解成更小的、松散耦合的組件采幌,它們可以更加容易升級(jí)和擴(kuò)展劲够,理論上是這樣。
微服務(wù)的好處
- 解決技術(shù)異構(gòu)問(wèn)題(服務(wù)和服務(wù)之間通過(guò)API網(wǎng)絡(luò)通信休傍,可以使用不同的語(yǔ)言和技術(shù)開(kāi)發(fā)不同的服務(wù))
- 快速迭代新技術(shù)(服務(wù)功能單一且獨(dú)立征绎,可以更新)
- 拓展方便
- 部署方便
- 服務(wù)復(fù)用度高
- 便于維護(hù)
服務(wù)建模
服務(wù)建模的兩個(gè)指導(dǎo)原則:
- 高內(nèi)聚:關(guān)鍵是找出問(wèn)題的邊界,把相關(guān)的問(wèn)題放在同一個(gè)服務(wù)中磨取。
- 松耦合:修改一個(gè)服務(wù)不需要修改另一個(gè)人柿。
過(guò)早的將一個(gè)系統(tǒng)劃分成微服務(wù)的代價(jià)非常高,尤其是在面對(duì)新領(lǐng)域時(shí)忙厌,將一個(gè)已有的代碼庫(kù)劃分成微服務(wù)會(huì)比蔥頭開(kāi)始建設(shè)微服務(wù)要簡(jiǎn)單的多凫岖。
分解單塊系統(tǒng)
分解巨大無(wú)比沒(méi)人感動(dòng)的單塊系統(tǒng),首先要做的是理清代碼庫(kù)逢净,找到接縫哥放。
分解系統(tǒng)帶來(lái)的好處:
- 加快以后系統(tǒng)開(kāi)發(fā)速度
- 劃清了團(tuán)隊(duì)結(jié)構(gòu)
- 增加安全審計(jì)功能后,保障安全性
- 利于開(kāi)展新技術(shù)