淺談傳統架構與微服務架構:
傳統架構是單一架構模式,就是將項目整體打包部署,比如java語言的項目會打成war包,部署在tomcat或者jetty應用服務器上,如果使用springboot還可以打成jar包
微服務架構是將整體項目分割成項目關聯的獨立服務,一個服務通常會實現一組獨立的功能,包含自己的邏輯,各個微服務之間關聯通過暴露api來實現,這些獨立的微服務可以部署在不同的服務器,虛擬機或系統中
為何要使用微服務架構:
單一架構模式在項目初期的時候開發,測試,部署方便,但是隨着項目逐步開發,項目工程會很大,最終互相之間會有繁瑣的jar包
1.不再適用於敏捷開發,任何開發人員都不能完全理解,在修復漏洞和添加新功能時候變得復雜
2.項目模塊越大,啟動越慢,很小的改動也需要重新部署整個項目
3.任何模塊的漏洞,都會降低系統的可靠性
4.如果想整體使用新的技術,新的框架,那是不可能的
如果采用微服務,解決了單一系統的復雜性,主要有以下優點
1.可采用敏捷開發模式,選擇合適的技術
2.每一個微服務是獨立部署的,可以快速迭代部署
3.一些需要負載均衡的服務可以使用ngix同一反向代理分發請求,這樣不需要整個系統負載均衡了
微服務的缺點:
1.微服務作為分布式系統時候帶來了復雜性,當應用是整體應用時,模塊之間可以內部調用,但微服務是多個獨一的應用,調用起來增加了一定的復雜性
2.多個數據庫,事物的實現會頭痛
3.測試微服務變得復雜,當一個服務依賴於另一個服務時候,測試時需要另一個服務的支持
4.整體系統只需要部署在一組相同的服務器上,而微服務需要更高的自動化形似