教程倉庫:github Spring-Cloud-Alibaba-Learning
教程索引頁:
本章爲教程的概述部分
文章目錄
學習提綱
隨教程進度更新,學習提綱也會相應更新。
1-Nacos
要將一個單體項目拆分爲微服務,首先就要能夠做到服務註冊和發現,否則不同的微服務間是無法互相調用的。而Nacos就是由阿里巴巴開源的一款優秀的服務發現組件。
2-Ribbon
繼微服務間能夠互相發現與調用之後,我們緊接着要考慮的就是如何均衡對每個微服務節點的負載。
如果某個服務有若干個硬件性能相同的節點,也許我們會考慮爲它們儘可能平均分配負載;
如果某個服務有個硬件資源較好的節點A,還有個硬件資源不太好的節點B,也許我們會考慮把負載往A那裏傾斜一些,讓B少一些負載。
Ribbon是Netflix開源的負載均衡器,它內置了許多負載均衡算法,並且能夠非常方便地集成RestTemplate、Feign等服務調用組件。
3-Feign
RestTemplate是編程式服務調用組件,而Feign是聲明式服務調用組件,能夠使遠程服務調用與其他業務邏輯解耦,提升代碼的可讀性、可維護性。在本節中,我們將使用Feign來替代RestTemplate,並實踐一種面向契約編程解決方案——使用Feign繼承,以簡化我們的代碼。
前置知識
比較熟練的SpringBoot開發經驗
Spring-Cloud-Alibaba是什麼
以下簡介參考自Spring Cloud Alibaba 新一代微服務解決方案
Spring Cloud Alibaba是阿里巴巴提供的微服務開發一站式解決方案,是阿里巴巴開源中間件與Spring Cloud體系的結合。
Spring-Cloud
SpringCloud 是若干個框架的集合,包括 spring-cloud-config、spring-cloud-bus 等近 20 個子項目,提供了服務治理、服務網關、智能路由、負載均衡、斷路器、監控跟蹤、分佈式消息隊列、配置管理等領域的解決方案。
Spring Cloud 通過 Spring Boot 風格的封裝,屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、容易部署的分佈式系統開發工具包。
一般來說,Spring Cloud 包含以下組件,主要以 Netflix 開源爲主:
Spring-Cloud-Alibaba
同 Spring Cloud 一樣,Spring Cloud Alibaba 也是一套微服務解決方案,包含開發分佈式應用微服務的必需組件,方便開發者通過 Spring Cloud 編程模型輕鬆使用這些組件來開發分佈式應用服務。
依託 Spring Cloud Alibaba,您只需要添加一些註解和少量配置,就可以將 Spring Cloud 應用接入阿里微服務解決方案,通過阿里中間件來迅速搭建分佈式應用系統。
作爲 Spring Cloud 體系下的新實現,Spring Cloud Alibaba 跟官方的組件或其它的第三方實現如 Netflix, Consul,Zookeeper 等對比,具備了更多的功能:
Spring-Cloud-Alibaba主要組件
這幅圖是 Spring Cloud Alibaba 系列組件,其中包含了阿里開源組件,阿里雲商業化組件,以及集成Spring Cloud 組件。
本教程中主要使用的組件
如下:
組件 | 實現 |
---|---|
分佈式配置 | Nacos |
服務註冊/發現 | Nacos |
服務熔斷 | Sentinel |
服務調用 | Feign |
服務路由 | Spring Cloud Gateway |
分佈式消息 | RocketMQ |
負載均衡 | Ribbon |
開發環境/生產環境
ARTIFACT | VERSION |
---|---|
JDK | 8 |
SpringBoot | 2.1.5 |
SpringCloud | Greenwich.SR1 |
SpringCloudAlibaba | 0.9.0 |