1. 程式人生 > 其它 >第163天學習打卡(專案 穀粒商城5 SpringCloud Alibaba Feign Nacos)

第163天學習打卡(專案 穀粒商城5 SpringCloud Alibaba Feign Nacos)

SpringCloud Alibaba

1.簡介

Spring Cloud Alibaba致力於提供微服務開發的一站式解決方案。此專案包含開發分散式應用微服務的必需元件,方便開發者通過Spring Cloud程式設計模型輕鬆使用這些元件來開發分散式應用服務。

依託Spring Cloud Alibaba,只需要新增一些註解和少量配置,就可以將SpringCloud應用接入阿里微服務解決方案,通過阿里中介軟體來迅速搭建分散式應用系統。

地址:GitHub - alibaba/spring-cloud-alibaba: Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.

SpringCloud Alibaba-Nacos[作為註冊中心]

Nacos是阿里巴巴開源的一個更易於構建雲原生應用的動態服務發現,配置管理和服務管理平臺。他是使用java編寫,需要依賴java環境

如何使用 Nacos Discovery Starter 完成 Spring Cloud 應用的服務註冊與發現:spring-cloud-alibaba/readme-zh.md at master · alibaba/spring-cloud-alibaba · GitHub

需要在gulimall-common中的pom.xml下匯入的依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>gulimall1-ware</artifactId>
<groupId>com.doudou.gulimall1</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>gulimall-common</artifactId>
<description>每個微服務公共的依賴, bean,工具類等</description>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.14</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>io.renren</groupId>
<artifactId>renren-fast</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>

<!-- 匯入mysql驅動-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>


</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>


</project>

1.下載nacos-server

下載地址:Releases · alibaba/nacos · GitHub

2.啟動nacos-server

  • 雙擊bin中的startup.cmd檔案

  • 訪問localhost:8848/nacos/

  • 使用預設的nacos/nacos進行登入

3.註冊微服務

1.修改pom.xml檔案,引入Nacos Discovery Starter 這裡主要是在gulimall-common裡面進行配置

 <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.在應用的application.yml中配置Nacos Server地址

 cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: 模組名字

3.使用@EnableDiscoveryClient開啟服務註冊功能

4.啟動nacos,然後再啟動IDEA,觀察nacos服務列表是否已經註冊上服務。

注意:一定要啟動nacos,再啟動IDEA,每個應用都應該有名字,這樣才能註冊上去

註冊成功的顯示頁面:

Feign宣告式遠端呼叫

簡介

Feign是一個宣告式的HTTP客戶端,它的目的就是讓遠端呼叫更加簡單。Feign提供了HTTP請求的模板,通過編寫簡單的介面和插入註解,就可以定義好HTTP請求的引數、格式、地址等資訊。

Feign整合了Ribbon(負載均衡)和Hystric(服務熔斷),可以讓我們不再需要顯示地使用這兩個元件。

SpringCloudFeign在NetflixFeign的基礎上擴充套件了對SpringMVC註解的支援,在其實現下,我們只需要建立一個介面並用註解的方式來配置它,即完成對服務提供方的介面繫結。簡化了SpringCloudRibbon自行封裝服務呼叫客戶端的開發量。

遠端呼叫測試:

首先是要匯入feign的依賴包,因為建立模組的時候已經勾選了feign所有pom.xml中自動有依賴包

把下面這兩個進行啟動,然後訪問瀏覽器頁面:

瀏覽器訪問:localhost:8000/member/member/coupons

Nacos作為配置中心

把這個依賴包複製到gulimall-common中的pom.xml中

  <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

測試

瀏覽器中訪問的頁面:localhost:7000/coupon/coupon/test

動態獲取資料:

在這個頁面進行修改資料

檢視瀏覽器頁面,已經動態重新整理成功

名稱空間

用於進行租戶粒度的配置隔離。不同的名稱空間下,可以存在相同的Group或Data ID的配置。Namespace的常用場景之一是不同環境的配置的區分隔離,例如開發測試環境和生產環境的資源(如配置、服務)隔離等

可以用名稱空間做環境隔離

現在Nacos裡面建立名稱空間, 然後把生成的命令空間ID配置到bootstrap.properties中

這個時候訪問的就是名稱空間prop裡面的內容:

名稱空間基於微服務進行隔離

B站學習網址:全網最強電商教程《穀粒商城》對標阿里P6/P7,40-60萬年薪嗶哩嗶哩bilibili