SpringCloud-Nacos/OpenFien/Gateway的基本介紹及快速上手

Spring-Cloud-Alibaba-Nacos 註冊中心

下載、安裝 Nacos

下載地址:https://github.com/alibaba/nacos/releaseshtml

下載後解壓,打開 bin 目錄,雙擊 startup.cmd 便可運行,出現錯誤可參考:http://www.javashuo.com/article/p-umsecpik-kh.htmljava

引入 spring-cloud-alibaba、alibaba-nacos-discovery

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

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

配置服務名、註冊中心地址

spring:
  application:
    name: gulimall-coupon # 服務名稱
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # nacos地址

四、運行須要註冊的服務、打開瀏覽器輸入http://127.0.0.1:8848/nacos ,用戶名密碼默認是 nacos,進入後點擊服務列表就能夠看到全部註冊的服務了mysql

Spring-Cloud-OpenFeign 遠程調用

引入 openfeign 依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

編寫遠程調用接口

告訴 SpringCloud 這個接口須要調用的遠程服務,接口方法的請求地址、名稱、返回值要與被調用的方法一致git

//指定調用的遠程服務名
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
    @RequestMapping("/coupon/coupon/member/list")
    public R memberCoupons();
}

開啓遠程調用服務

@SpringBootApplication
@EnableDiscoveryClient
//指定本身建立的遠程接口的位置
@EnableFeignClients(basePackages = "com.sjl.gulimall.member.feign")
public class GulimallMemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }
}

Spring-Cloud-Alibaba-Nacos 配置中心

引入alibaba-nacos-config

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

添加配置文件bootstrap.properties

# 服務名
spring.application.name=gulimall-coupon 
# nacos地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

開啓動態刷新

完成上述兩步後,應用會從 Nacos Config 中獲取相應的配置,並添加在 Spring Environment 的 PropertySources 中。要想打開動態刷新,還須要在當前類加上 @RefreshScope 註解github

@RefreshScope //開啓動態刷新
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
    @Value("${coupon.user.name}")
    private String name; //coupon.user.name=張三
    @Value("${coupon.user.age}")
    private Integer age; //coupon.user.age=18

    @RequestMapping("/test")
    public R test(){
        return R.ok().put("name", name).put("age", age);
    }
}

在Nacos新建配置文件

進入 Nacos 控制檯,新建一個配置文件,命名爲服務名.propertiesspring

動態的修改配置文件

當咱們將配置文件的值修改後,訪問的數據也會 更新,若是配置中心和當前應用都配置了相同的項,優先使用配置中心的配置sql

Nacos 配置中心的一些概念與細節

命名空間

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

Nacos 中默認有一個 public 保留空間,默認全部新增的配置都放在這個空間中api

咱們能夠在 Nacos 可視化界面建立本身的命名空間瀏覽器

新建一個配置文件,併發布,命名規則爲服務名.properties

bootstrap.properties 文件中指定命名空間的惟一標識,重啓該服務,便可訪問

spring.cloud.nacos.config.namespace=5a8f07f8-9fc0-480e-9d31-1a1800b7530b

配置集

一組相關或者不相關的配置項的集合稱爲配置集。在系統中,一個配置文件一般就是一個配
置集,包含了系統各個方面的配置。例如,一個配置集可能包含了數據源、線程池、日誌級
別等配置項。

配置集ID

Nacos中的某個配置集的 ID。 配置集ID是組織劃分配置的維度之一。DataID 一般用於組織劃分系統的配置集。一個系統或者應用能夠包含多個配置集,每一個配置集均可以被一個有意義的名稱標識。DataID 一般採用類Java 包(如com.taobao.tc.refund.log.level) 的命名規則保證全局惟一性。 此命名規則非強制。

相似配置文件名

配置分組

Nacos 中的一組配置集,是組織配置的維度之一。經過一個有意義的字符串(如 Buy 或 Trade )對配置集進行分組,從而區分DataID 相同的配置集。當您在 Nacos 上建立一個配置時,若是未填寫配置分組的名稱,則配置分組的名稱默認採用DEFAULT_ GROUP。

在 Nacos 中新建一個分組後,須要在 bootstrap.properties 中指定本身要使用的分組

spring.cloud.nacos.config.group=dev

一般將每一個微服務建立本身的命名空間,使用dev、prod、test等名稱做爲配置分組,區分環境

同時加載多個配置集

有了 Nacos 配置中心,咱們就能夠將全部的配置文件都放在配置中內心管理,項目裏只保留一個bootstrap.properties,很是便於管理

好比,如今將咱們本來的配置文件 application.yml 拆分爲幾個部分放到配置中心

  • 數據源配置:datasource.yml

    spring:
      datasource:
        url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: root
  • mybatis 配置:mybatis.yml

    mybatis-plus:
      mapper-locations: classpath:/mapper/**/*.xml
      global-config:
        db-config:
          id-type: auto
  • 其餘配置:other.yml

    server:
      port: 7000
    spring:
      application:
        name: gulimall-coupon
      datasource:
        url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: root
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848

咱們還須要在 bootstrap.properties 中配置以下信息

  • data-id:配置文件名

  • group:分組名

  • refresh:自動刷新(默認是false),即 修改了配置中心的值後是否刷新

spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true

spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true

spring.cloud.nacos.config.ext-config[2].data-id=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true

點進源碼可發現此配置是個 List 集合,所以能夠配置多個

配置完成後,能夠訪問相關接口測試一下


更多配置請參考 Nacos 官方文檔https://nacos.io/zh-cn/docs/what-is-nacos.html

Spring-Cloud-Gatway API網關

簡介

網關做爲流量的入口,經常使用功能包括路由轉發、權限校驗、限流控制等。而 springcloud gateway 做爲 SpringCloud 官方推出的第二代網關框架,取代了 Zuul 網關。

幾種網關的性能對比

使用

開啓服務註冊發現、配置 Nacos 註冊中心、配置中心地址、端口

server:
  port: 88
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=24b9f0bf-ac39-431e-80f0-4daa0b923b7a

配置路由,使咱們輸入localhost:88?query=baidu能夠跳轉到百度官網,輸入localhost:88?query=qq能夠跳轉到qq官網

spring:
  cloud:
    gateway:
      routes:
        - id: test_baidu
          uri: https://www.baidu.com
          predicates:
            - Query=query,baidu
        - id: test_qq
          uri: https://www.qq.com
          predicates:
            - Query=query,qq


官方文檔:https://cloud.spring.io/spring-cloud-gateway/2.1.x/single/spring-cloud-gateway.html

相關文章
相關標籤/搜索