1. 你了解微服務(wù)嗎?SOA和微服務(wù)有何差異? 每個人對微服務(wù)都可以有自己的理解,不過大概的標準還是有一些的。 (1)分布式服務(wù)組成的系統(tǒng) (2)按照業(yè)務(wù)而不是技術(shù)來劃分組織 (3)做有生命的產(chǎn)品而不是項目 (4)Smart endpoints and dumb pipes (5)自動化運維 (6)容錯 (7)快速演化 看了以上幾個方面,相信很多人都會問一個問題,這是不是就是SOA換了個概念,掛羊頭賣狗肉。有說法把微服務(wù)叫成Lightway SOA。也有很多傳統(tǒng)專家說微服務(wù)就是SOA。其實微服務(wù)創(chuàng)始人Martin也沒否認SOA和Microservice的關(guān)系。個人理解,微服務(wù)是SOA的傳承,但一個最本質(zhì)的區(qū)別在Smart endpoints and dumb pipes,或者說是真正的分布式的、去中心化。Smart endpoints and dumb pipes本質(zhì)就是去ESB,把所有的“思考”邏輯包括路由、消息解析等放在服務(wù)內(nèi)部(Smart endpoints),去掉一個大一統(tǒng)的ESB,服務(wù)間輕(dumb pipes)通信,是比SOA更徹底的拆分。 2. 到底在什么樣的情況才適合使用微服務(wù)架構(gòu)? 隨著更多的應(yīng)用被部署到云平臺,人們的挫敗感漸增。更新周期被緊緊綁定——即便是應(yīng)用中一個很小部分的改變,也需要整個應(yīng)用的重構(gòu)和部署。隨著時間推移,保持一個良好的模塊化架構(gòu)也日益困難,牽一發(fā)而動全身。一旦要進行擴展,就必須整體擴展,而不能僅僅擴展其中到一部分模塊,也就需要更多的資源 這種情況最后進化為微服務(wù)架構(gòu):把應(yīng)用作為一組服務(wù)來構(gòu)建。這些服務(wù)能夠獨立部署和擴展,每個服務(wù)提供一個堅實的模型邊界,甚至可以用不同的程序語言來寫這些服務(wù)。當然他們也能被不同的團隊來管理。 3. 為什么有人說“玩不起”?較比普通架構(gòu)需要多做那些工作? 微服務(wù)應(yīng)用是分布式系統(tǒng),由此會帶來固有的復(fù)雜性。開發(fā)者需要在RPC或者消息傳遞之間選擇并完成進程間通訊機制。更甚于,他們必須寫代碼來處理消息傳遞中速度過慢或者不可用等局部失效問題。當然這并不是什么難事,但相對于單體式應(yīng)用中通過語言層級的方法或者進程調(diào)用,微服務(wù)下這種技術(shù)顯得更復(fù)雜一些。 微服務(wù)架構(gòu)模式應(yīng)用的改變將會波及多個服務(wù)。 部署一個微服務(wù)應(yīng)用也很復(fù)雜。
|