微服務這幾年很火,作後端開發的,若是沒聽過微服務,出去見同行都有點很差意思的。那麼大部分後端開發人員都應該據說過了,但真正用過的,可能就少一些,這也多是由於公司的舊系統一直能正常工做,沒有推翻改造的必要,也多是團隊人員對微服務不熟悉,不敢嘗試新的技術架構。無論怎樣,咱們通常提倡,合適的就是最好的,別管它是否時髦。後端
最近微信羣裏有關於微服務相關的討論,主要圍繞是否應該使用微服務、什麼時候應該採用微服務架構。有人以爲是看人數,所以會問通常團隊裏有多少人了能夠開始使用微服務,好比曾聽到有些架構師說大概100人以上的團隊適合採用微服務,另一些人以爲是看業務,就是怎樣的業務適合採用微服務。服務器
而在咱們看來,單純從人數或業務的角度去看是否該採用微服務架構,都不太理想,而若是着眼於整個系統的業務特色、部署方式、協做模式,相對會好一些。微信
好比你的業務模塊種類比較多,若是採用微服務的話,只要定義好服務間的接口,就能夠作到團隊裏不一樣的人同時進行不一樣模塊的開發,也就是並行開發。若是你的系統在一段時間內須要進行擴展,好比一個服務須要部署多份,而且分佈到不一樣的機器上面,這樣採用微服務也彷佛更合理。若是是單體架構,這個時候的擴展,就須要對整個單體進行擴展,而微服務架構,只須要對其中某個小服務進行擴展,能夠節省CPU和內存資源。從協做角度來看的話,也跟團隊規模有關,確實是團隊規模越大,採用微服務好處也越明顯一些。若是是幾我的的團隊,模塊劃分粒度又比較大,這個時候的微服務架構,跟單體架構也沒有太大的區別,不過採用微服務架構,仍然能夠起到爲從此擴展而設計的目的。架構
微服務架構中的服務發現和治理、服務監控、配置管理等,不一樣框架都有不一樣的組件來完成,稍微學習一下也能夠用上了,並無過高的門檻,固然若是想特別深刻,仍是須要花不少時間。以個人親身經歷舉個例子吧,我曾經在沒有使用Java作過任何項目的狀況下,去幫忙一個小公司搭建他們的後端技術架構。由於他們據說Java技術棧比較成熟,後端但願採用Java開發,而我也爲了可以在Java方面多一些實戰經驗,因而就是用三天的時間去熟悉了Spring Cloud框架,而後給他們搭建了後端的微服務系統,用到的組件大概有Spring Cloud Config、Eureka、Feign、Zuul、Ribbon、Hystrix、Sleuth、Zipkin等。團隊裏也只有幾個開發人員,基於我搭建的技術框架,進行應用服務的開發。這些框架組件和應用服務都是用Docker進行部署,部署到阿里雲的容器服務上,目前運行起來各方面都良好。併發
我採用Spring Cloud爲他們搭建後端開發框架,一方面就是剛纔提到的也是爲了讓本身多熟悉Java和Spring Cloud框架,另外一方面是他們的業務特色屬於可能短時間內流量暴增的類型。而我以爲微服務架構在可擴展方面有較大的優點,能夠較好地應對這種問題,而後基於Docker的部署方式,能夠實現服務的彈性伸縮,所以整個系統從基礎設施層IAAS到應用層,均可以進行擴容和縮容,既知足業務上高併發可擴展的需求,又能達到合理使用服務器資源、節省公司開支的目的。框架
總的來講,就是咱們傾向於從業務特色、部署方式、協做模式角度去考慮是否採用微服務,而不是跟風,看到別人使用了新技術,本身也非要去用纔不顯得落伍。何況微服務也並不算什麼很新的技術,它只是之前的應用架構發展到必定階段天然衍生而成的,而後也具備了以前應該架構不具有的一些特色。若是你的舊系統運行得很好,或者準備開發的新系統不須要我前面提到的那些特性,那可能維持現狀或者採用單體架構就挺好,遇到確實比較適合微服務的項目,再採用也不遲呢。微服務
原文地址:大家項目微服務了嗎?高併發