傳統單體架構的缺陷


傳統的單體應用,將所有功能的表示層、業務邏輯層,數據訪問層,包括靜態資源等等全部糅合在一個工程里面,編譯,打包,部署在單臺服務器上上線,比如打成war包放在Tomcat的webapp目錄中部署項目。這樣的項目開發部署適合小型項目,系統功能不復雜,訪問量不大的情況下有絕對的優勢。開發速度快,運維方便。但是當業務越來越復雜,功能越來越多,參與的開發人員越來越多,就暴露出問題了:


業務變復雜,代碼量增大,代碼可讀性,可維護性,可擴展性下降。萬一要新同事接手代碼,理解起來花很多時間
測試難度增大
單體應用并發能力有限,訪問量高了用戶體驗差
單體應用容錯率低,萬一哪里出錯,可能導致整個項目就崩了


將單體應用做集群部署,添加負載均衡服務器(例如Nginx反向代理轉發請求)可稍微緩解以上3,4條缺點,但是還是不能完美解決問題。

何為微服務

微服務架構:就是將原來的單體應用按義務范圍來進行劃分,劃分為多個小model,每個微服務運行在自己的進程中,不相互影響,通過完全自動化部署來獨立部署。并使用輕量級機制通信,通常是HTTP RESTUFUL API。可對各個微服務進行集中管理。這些小model可以使用不同的編程語言,以及不同的存儲技術。微服務架構是分布式架構。


微服務架構的優點

 - 按業務劃分的微服務單元獨立部署,運行在獨立的進程中,服務與服務之間沒有任何耦合,有很好的擴展性和復用性
 - 服務與服務之間通常采用HTTP通信,這種通信機制與平臺和語言無關(可以使用不同的編程語言和存儲方法)。也可以采用輕量級的消息總線來通信,如RabbitMQ、Kafaka消息隊列等等,數據格式一般都采用JSON
 - 每個微服務有自己的數據庫,服務之間數據庫是獨立的
 - 微服務一般采用自動化部署工具部署。Docker容器技術是微服務最佳部署的容器。
 - 服務集中化管理(服務注冊與發現Eureka、Zookeeper、Consul),監控(服務運行狀況監控Spring-Boot-Admin-Server)
 - 微服務架構是分布式架構



快勝全業務人力資源管理系統


電話咨詢
產品詳情
案例專區
QQ客服
深圳风采中了3个号