1、什么是微服務
在開發項目之前,我們有必要了解一下,什么是微服務?簡單來說:微服務是一種架構風格,一個大型復雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表着一個小的業務能力。
2、Spring Cloud是什么
Spring Cloud是一個微服務框架的規范,並不是任何具體的框架。而Spring Cloud Netflix 和 Spring Cloud Alibaba 是 Spring Cloud 的實現方案。本項目中我們將對兩種實現方案中的組件進行實戰開發。Spring Cloud Netflix(https://spring.io/projects/spring-cloud/) 和 Spring Cloud Alibaba(https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md) 的最新動態可到相應官網進行了解。
3、服務注冊中心
服務注冊中心是微服務的另外一個必備組件,用來協調服務提供者和調用者的相互發現。
Spring Cloud Netflix默認的注冊中心是Eureka,而Spring Cloud Alibaba推薦使用的注冊中心是Nacos。當然,還有很多組件都實現了微服務注冊中心的功能。比較常用的有consul、eureka、nacos。
下面對這幾個組件進行一個比較:
配置中心:
- eureka 不支持
- consul 支持 但用起來偏麻煩,不太符合springBoot框架的命名風格,支持動態刷新
- nacos 支持 用起來簡單,符合springBoot的命名風格,支持動態刷新
注冊中心:
-
eureka
-
應用內/外:直接集成到應用中,依賴於應用自身完成服務的注冊與發現。
-
ACP原則:遵循AP(可用性+分離容忍)原則,有較強的可用性,服務注冊快,但犧牲了一定的一致性。
-
版本迭代:目前已經不進行升級。
-
集成支持:只支持SpringCloud集成。
-
訪問協議:HTTP。
-
雪崩保護:支持雪崩保護。
-
上手:容易。
-
consul
-
應用內/外:屬於外部應用,侵入性小。
-
ACP原則:遵循CP原則(一致性+分離容忍) 服務注冊稍慢,由於其一致性導致了在Leader掛掉時重新選舉期間真個consul不可用。
-
版本迭代:目前仍然進行版本迭代
-
集成支持:支持SpringCloud K8S集成。
-
訪問協議:HTTP/DNS。
-
雪崩保護:不支持雪崩保護。
-
上手:復雜。
-
nacos
-
應用內/外:屬於外部應用,侵入性小。
-
ACP原則:通知遵循CP原則(一致性+分離容忍) 和AP原則(可用性+分離容忍)。
-
版本迭代:目前仍然進行版本迭代。
-
集成支持:支持Dubbo 、SpringCloud、K8S集成。
-
訪問協議:HTTP/動態DNS/UDP。
-
雪崩保護:支持雪崩保護。
-
上手:極易,中文文檔,案例,社區活躍。
本教程重點學習Spring Cloud Alibaba,推薦使用Spring Cloud Alibaba的生態組件。在之前的項目中,使用過Eureka作為注冊中心,而配置中心需要使用其他解決方案,比如Apollo。而Nacos實現了配置中心和注冊中心的功能,在使用起來比較方便。下面了解一下官方對Nacos的介紹:
Nacos 能夠快速實現動態服務發現、服務配置、服務元數據及流量管理。包括服務發現和服務健康監測、動態配置服務、動態 DNS 服務、服務及其元數據管理。Nacos 無縫支持 Spring Cloud,為 Spring Cloud 用戶其提供更簡便的配置中心和注冊中心的解決方案。