(1)服務發現-- Netflix Eureka
由兩個組件組成:Eureka服務端和Eureka客戶端
Eureka服務端用作服務注冊中心,支持集群部署
工作原理: 在應用啟動時,Eureka客戶端向服務端注冊自己的服務信息,同時將服務端的服務信息緩存到本地。客戶端會和服務端進行周期性的進行心跳交互進行更新服務信息。
(2) 客戶端負載均衡 -- Netflix Ribbon
提供客戶端的軟件負載均衡算法。它基於Http和Tcp的客戶端負載均衡,使得面向REST請求時變換為客戶端的負載服務調用。
(3) 熔斷器 -- Netflix Hystrix
作用:斷路器,保護系統,控制故障范圍。為了保證高可用,單個服務通常會集群部署。當網絡或者其他原因導致單個服務出現問題,調用這個服務就會出現線程阻塞,此時如果大量請求進入,Servlet容器的線程資源就會消耗完畢,最終導致服務癱瘓。服務與服務之間的依賴,故障會傳播,對整個微服務框架造成災難性的嚴重后果,這個就是服務故障的“雪崩”效應。
(4)服務網關--Netflix Zuul
作用:api網關,路由,負載均衡等作用
類型Nginx 和F5,可以實現反向代理。
在微服務架構中,后端服務往往不直接暴露給前端,而是通過一個Api網關根據請求的Url,路由到響應的服務(MVC機制)。當添加Api網關后,在第三方調用端和服務提供方之間就創建了一面牆,這面牆直接與調用方進行通信進行權限控制。后將請求均衡分發給后台服務端。
(5) 分布式配置 -- Spring Cloud Config
作用:配置管理
提供服務端和客戶端,服務器存儲后端的默認實現使用git,因此它輕松支持標簽版本的配置環境。Config是靜態配置的。
如果需要動態配置,可以使用spring cloud bus進行動態配置更新。