微服務開發模式和傳統的開發模式對比

2018-11-03 10:33:02 濟南網站建設

使用微服務有一段時間了,這種開發模式和傳統的開發模式對比,有很大的不同。

  • 分工不同,以前我們可能是一個一個模塊,現在可能是一人一個系統。

  • 架構不同,服務的拆分是一個技術含量很高的問題,拆分是否合理對以后發展影響巨大。

  • 部署方式不同,如果還像以前一樣部署估計累死了,自動化運維不可不上。

  • 容災不同,好的微服務可以隔離故障避免服務整體down掉,壞的微服務設計仍然可以因為一個子服務出現問題導致連鎖反應。

 

給數據庫帶來的挑戰

每個微服務都有自己獨立的數據庫,那么后臺管理的聯合查詢怎么處理?這應該是大家會普遍遇到的一個問題,有三種處理方案。

1)嚴格按照微服務的劃分來做,微服務相互獨立,各微服務數據庫也獨立,后臺需要展示數據時,調用各微服務的接口來獲取對應的數據,再進行數據處理后展示出來,這是標準的用法,也是最麻煩的用法。

2) 將業務高度相關的表放到一個庫中,將業務關系不是很緊密的表嚴格按照微服務模式來拆分,這樣既可以使用微服務,也避免了數據庫分散導致后臺系統統計功能難以實現,是一個折中的方案。

3)數據庫嚴格按照微服務的要求來切分,以滿足業務高并發,實時或者準實時將各微服務數據庫數據同步到NoSQL數據庫中,在同步的過程中進行數據清洗,用來滿足后臺業務系統的使用,推薦使用MongoDB、HBase等。

三種方案在不同的公司我都使用過,第一種方案適合業務較為簡單的小公司;第二種方案,適合在原有系統之上,慢慢演化為微服務架構的公司;第三種適合大型高并發的互聯網公司。

 

微服務的經驗和建議

1、建議盡量不要使用Jsp,頁面開發推薦使用Thymeleaf。Web項目建議獨立部署Tomcat,不要使用內嵌的Tomcat,內嵌Tomcat部署Jsp項目會偶現龜速訪問的情況。

2、服務編排是個好東西,主要的作用是減少項目中的相互依賴。比如現在有項目a調用項目b,項目b調用項目c...一直到h,是一個調用鏈,那么項目上線的時候需要先更新最底層的h再更新g...更新c更新b最后是更新項目a。這只是這一個調用鏈,在復雜的業務中有非常多的調用,如果要記住每一個調用鏈對開發運維人員來說就是災難。

有這樣一個好辦法可以盡量的減少項目的相互依賴,就是服務編排,一個核心的業務處理項目,負責和各個微服務打交道。比如之前是a調用b,b掉用c,c調用d,現在統一在一個核心項目W中來處理,W服務使用a的時候去調用b,使用b的時候W去調用c,舉個例子:在第三方支付業務中,有一個核心支付項目是服務編排,負責處理支付的業務邏輯,W項目使用商戶信息的時候就去調用“商戶系統”,需要校驗設備的時候就去調用“終端系統”,需要風控的時候就調用“風控系統”,各個項目需要的依賴參數都由W來做主控。以后項目部署的時候,只需要最后啟動服務編排項目即可。

3、不要為了追求技術而追求技術,確定進行微服務架構改造之前,需要考慮以下幾方面的因素:
1)團隊的技術人員是否已經具備相關技術基礎。
2)公司業務是否適合進行微服務化改造,并不是所有的平臺都適合進行微服務化改造,比如:傳統行業有很多復雜垂直的業務系統。
3)Spring Cloud生態的技術有很多,并不是每一種技術方案都需要用上,適合自己的才是最好的。

网络捕鱼有人赢钱吗
八码滚雪球计划 短期盈利计划书 麻将斗地主棋牌 时时彩单双科学投注法 老虎机app自助领取彩金38 单人怎么两平台对刷流水返利 万人炸金花最新版2016 彩神计划软件靠谱吗 超牛北京pk拾计划软件 网易时时彩走势图