問題
我研究過微服務(wù)架構(gòu)岔擂,嘗試找出它與SOA(服務(wù)分離并獨(dú)立部署)的不同臂外。誰(shuí)能告訴我它們的區(qū)別侦锯,還有微服務(wù)的優(yōu)劣更舞?
回答(投票第一)
我想你可以把微服務(wù)的架構(gòu)風(fēng)格看成SOA的一種特例。一個(gè)普遍被接受的觀點(diǎn)(維基百科 面向服務(wù))是共苛,所有的SOA滿足四點(diǎn):
- 界限明確
- 服務(wù)獨(dú)立自主
- 服務(wù)間共享schema和協(xié)議轨域,而不是共享類
- 服務(wù)的兼容性是基于策略
- Don Box, Microsoft (pre-.Net 3.0)
Lewis/Fowler帶來(lái)了規(guī)范的定義(microservices):
簡(jiǎn)單來(lái)說(shuō)侠坎,微服務(wù)的架構(gòu)風(fēng)格是把單一應(yīng)用的開發(fā)催首,換成一系列小型的服務(wù)的方法扶踊,每個(gè)小服務(wù)運(yùn)行在自己的進(jìn)程上,它們之間通過輕量的機(jī)制進(jìn)行通信郎任,通常是HTTP API秧耗。這些服務(wù)圍繞業(yè)務(wù)能力構(gòu)建,可通過完全自動(dòng)化的部署機(jī)制來(lái)獨(dú)立部署舶治。這些服務(wù)需要一個(gè)最低限度的集中管理分井,它可以用不用的編程語(yǔ)言和不同的數(shù)據(jù)存儲(chǔ)技術(shù)。
從這個(gè)定義明顯看出霉猛,微服務(wù)至少滿足前兩點(diǎn)(尤其是第二點(diǎn))尺锚,值得討論的是第三點(diǎn)是否滿足(我不理解第四點(diǎn)所以不對(duì)它做評(píng)論)。
微服務(wù)中的一個(gè)特點(diǎn):他們一般暴露一個(gè)RESTful的API而不是暴露協(xié)議和schema(超過了正常HTTP的長(zhǎng)度)韩脏,所以微服務(wù)可能不滿足第三點(diǎn)缩麸,F(xiàn)owler在上面也提到了:
換成一系列小型的服務(wù)的方法铸磅,......它們之間通過輕量的機(jī)制進(jìn)行通信赡矢,通常是HTTP API杭朱。
從下面這句話可以看出另一個(gè)微服務(wù)風(fēng)格不同于SOA的方面:
這些服務(wù)圍繞業(yè)務(wù)能力構(gòu)建,可通過完全自動(dòng)化的部署機(jī)制來(lái)獨(dú)立部署吹散。
根據(jù)SOA本來(lái)的原則弧械,我可以手動(dòng)拷貝服務(wù)的二進(jìn)制包到生產(chǎn)環(huán)境,但是在微服務(wù)里空民,服務(wù)的部署和管理都是全自動(dòng)化的刃唐。