一、微服務比單體應用好在哪裏???tomcat
單體應用:微信
1)單體應用全部的功能都部署在一個tomcat裏面,不利於單個功能的吞吐量併發
2)單體應用部署方式是集羣方式,扛不住了就多部署幾個tomcat分佈式
3)單體應用不利於維護,可能其中某個模塊錯誤,就致使整個系統的流程沒有辦法正確走下去微服務
4)單體應用團隊開發時候,耦合度較高,可能須要瞭解其餘成員的代碼和功能工具
5)單體應用開發週期長,升級麻煩,難以維護開發工具
微服務:代理
1)微服務能夠更好的平滑擴展。根據併發量,功能點等等規劃服務,再根據實際場景平滑擴展,提供服務的吞吐量事務
2)微服務部署方式是分佈式部署,根據服務的狀況,決定服務節點的個數路由
3)微服務中服務劃分好後,那麼各自服務負責各自的業務點,就算某個服務出現錯誤,那麼也不會影響其餘服務的正常運轉
4)微服務更加適用於團隊開發,成員各自負責各自的業務功能
5)微服務更容易升級,快速開發,快速迭代,快速上線。同時支持獨立開發/獨立部署
二、公司爲何會開展微服務???
1)微信、人工客服這兩個項目,常常因爲瞬時併發量較大,並且用戶體量未知,致使系統常常掛
2)有些項目客戶反應響應較慢
3)現場同事升級和維護過程較麻煩,週期較長
三、微服務選型???
Spring Boot/Spring Cloud/Docker
Spring Boot:只不過是爲了讓咱們快速用Spring集成開發,是Spring體系微服務的起點
Spring Cloud:是一個基於Spring Boot實現的雲應用開發工具,它爲基於JVM的雲應用開發中的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等操做提供了一種簡單的開發方式
Docker:它能讓更多數量的應用程序在同一硬件上運行;它讓開發人員易於快速構建可隨時運行的容器化應用程序;它大大簡化了管理和部署應用程序的任務
注意:
1)微服務中服務與服務之間的事務很難控制
2)微服務中必需要有監控,否則出了問題,在服務較多的狀況下,短期比較難以排查
3)用微服務必需要運用Docker這種自動化部署,否則會比原先單體應用部署起來,更加複雜