一、微服務和微服務架構
1.1)什麼是微服務
把一個單一的應用程序劃分爲一組小 的服務,每個小的服務都會運行在自己的進程中,服務之間通過輕量級的通信機制(http的rest api)進行通信,那麼 一個個的小服務就是微服務。傳統的的單一電商應用來說,訂單,支付,用戶,商品,庫存等模塊都在一個項目中,若某一個模塊出 現線上bug,會導致整個版本發佈回退. 若把單一應用拆分爲一個一微服務,比如訂單微服務,用戶微服務,商品微服務,積分微服務等,若某 一個微服務出錯不會導致整個版本回退。
1.2)什麼是微服務架構
微服務架構是一種架構模式(用於服務管理微服務的),它把一組小的服務互相協調、互相配合,並且 完成功能。每個服務運行在其獨立的進程中,服務與服務間採用輕量級的通信機制互相協作(通常是基 於HTTP 協議的RESTfulAPI )。每個服務都圍繞着具體業務進行構建,並且能夠被獨立的部署到生產環境
1.3)微服務的優點
①:每個服務足夠內聚,足夠小,代碼容易理解這樣能聚焦一個指定的業務功能或業務需求(職責單 一)
②:開發簡單、開發效率提高,一個服務可能就是專一的只幹一件事,微服務能夠被小團隊單獨開發,這 個小團隊是 2 到 5 人的開發人員組成。
③:微服務能使用不同的語言開發。
④:易於和第三方集成,微服務允許容易且靈活的方式集成自動部署,通過持續集成工具,如 Jenkins,Hudson,bamboo。
⑤:微服務只是業務邏輯的代碼,不會和 HTML,CSS或其他界面組件混合。
⑥:每個微服務都有自己的存儲能力,可以有自己的數據庫。也可以有統一數據庫。
1.4)微服務的缺點
①開發人員要處理分佈式系統的複雜性(分佈式事物)
②:多服務運維難度,隨着服務的增加,運維的壓力也在增大
③:系統部署依賴
④:服務間通信成本
⑤:數據一致性
二、springboot的認識
2.1)優點
①、springboot 能在最小的阻力下,自動配置消除了傳統Spring應用程序裏的很多樣板配置,不用在spring的配置上花更多的功夫,甚至完全不用配置,更加專注於應用程序的功能,spring雖然在2.5加入了註解掃描,但是還是需要少量的spring的配置。
②、起步依賴,需要什麼功能,自動引入相關的類庫。提供衆多的起步依賴,降低了項目依賴的複雜度。根據依賴的傳遞,面對版本衝突和兼容的問題,方便管理
③、內嵌tomcat,jetty容器,不用打war包,放到容器裏執行,直接java -jar xx.jar可啓動項目
④、Actuator 檢視應用程序狀態(健康檢查)
2.2)缺點
①、springboot內部對jsp的支持並不是特別理想,而springboot推薦的視圖是Thymeleaf
②、雖然springboot減少了一些配置,但實際上是使用了更多的註解在相應的配置類上,這樣導致相對於之前更難的理解出組件的依賴關係和加載的原理
③、starter類似一個可拔插的插件,對maven的依賴做了封裝,對版本做了控制,對於初學者想要了解原理提升了難度
三、springboot構建項目需要引入的依賴
3.1)引入spring-boot-starter-parent,spring-boot-starter-parent中的spring-boot-dependencies是來控制版本的,我們引入裏面有的依賴不需要寫版本號,如果沒有自然要寫版本號
3.2)spring-boot-starter-web 裏面依賴了spring-web和webmvc等web開發需要的一些依賴