垂直系統VS微服務
垂直系統的弊端:
1、 隨著業務量的增加,復雜性逐漸變高、代碼耦合太深,不利于開發和維護
2、技術債務逐漸積累加劇,很多代碼都是為了解決問題兒開發
3、阻礙新技術的引入和使用,只能依賴于原有舊的技術框架開發
4、無法進行高可用、負載均衡、水平擴展和合理的伸縮
5、部署的服務速度會隨著代碼累積逐漸變慢、性能降低、隨著數據量增大而下降
微服務框架
一個微服務要有清晰的業務邊界、高度的模塊化服務化解耦。每個模塊都完成自己的功能,并且每個模塊都可以靈活的使用自己本身所需要的技術,他們是分而治之,獨立部署運行,又可以相互進行數據通信,可以使用Rest方式,也可以使用rpc方式,更可以使用消息中間件進行消息總線處理。
微服務的優缺點
優點:
1、擴展性強、便于開放和維護,局部修改簡單
2、啟動較快、性能、壓力測試更有針對性。調節cpu、內存、磁盤IO性能等參數指標方便
3、技術棧不受限制,可以使用任何技術框架、也可以選擇其它編程語言實現
4、可伸縮、擴展性、高可用性都可控可調
缺點:
1、運維要求比較高,需要分布式監控、自動化部署測試等
2、分布式的復雜性、邏輯復雜、以及分布式事務等問題
3、接口調試、模塊與模塊之間聯調測試比較復雜
Spring Cloud 相關組件
Spring Cloud Config:配置管理開發工具包,可以讓你把配置放到遠程服務器,目前支持本地存儲、Git以及Subversion。
Spring Cloud Bus:事件、消息總線,用于在集群(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。
Spring Cloud Netflix:針對多種Netflix組件提供的開發工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
Netflix Eureka:云端負載均衡,一個基于 REST 的服務,用于定位服務,以實現云端的負載均衡和中間層服務器的故障轉移。
Netflix Hystrix:容錯管理工具,旨在通過控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。
Netflix Zuul:邊緣服務工具,是提供動態路由,監控,彈性,安全等的邊緣服務。
Netflix Archaius:配置管理API,包含一系列配置管理API,提供動態類型化屬性、線程安全配置操作、輪詢框架、回調機制等功能。
Spring Cloud for Cloud Foundry:通過Oauth2協議綁定服務到CloudFoundry,CloudFoundry是VMware推出的開源PaaS云平臺。
Spring Cloud Sleuth:日志收集工具包,封裝了Dapper,Zipkin和HTrace操作。
Spring Cloud Data Flow:大數據操作工具,通過命令行方式操作數據流。
Spring Cloud Security:安全工具包,為你的應用程序添加安全控制,主要是指OAuth2。
Spring Cloud Consul:封裝了Consul操作,consul是一個服務發現與配置工具,與Docker容器可以無縫集成。
Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服務注冊和發現。
Spring Cloud Stream:數據流操作開發包,封裝了與Redis,Rabbit、Kafka等發送接收消息。
Spring Cloud CLI:基于 Spring Boot CLI,可以讓你以命令行方式快速建立云組件。