成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Cloud 快速上手之 Nacos 篇!

開發 前端
Nacos 作為 Spring Cloud Alibaba 的核心組件之一,提供了兩個非常重要的功能:注冊中心和配置中心。

Spring Cloud Alibaba 是阿里巴巴提供的一站式微服務開發解決方案,目前已被 Spring Cloud 官方收錄。而 Nacos 作為 Spring Cloud Alibaba 的核心組件之一,提供了兩個非常重要的功能:注冊中心和配置中心,我們今天來了解和實現一下二者。

1.Nacos 簡介

Nacos 致力于幫助開發者發現、配置和管理微服務。它提供了一組簡單易用的特性集,幫助開發者快速實現動態服務發現、服務配置、服務元數據及流量管理。

Nacos 特性介紹

Nacos 具有以下特性:

  • 服務發現和服務健康監測:支持基于DNS和基于RPC的服務發現,支持對服務的實時的健康檢查,阻止向不健康的主機或服務實例發送請求。
  • 動態配置服務:動態配置服務可以讓您以中心化、外部化和動態化的方式管理所有環境的應用配置和服務配置。
  • 動態 DNS 服務:動態 DNS 服務支持權重路由,讓您更容易地實現中間層負載均衡、更靈活的路由策略、流量控制以及數據中心內網的簡單 DNS 解析服務。
  • 服務及其元數據管理:支持從微服務平臺建設的視角管理數據中心的所有服務及元數據。

2.注冊中心實現

注冊中心有兩個重要的功能:服務注冊和服務發現,它解決了微服務集群中,調用者和服務提供者連接管理和請求轉發的功能,讓程序的開發者無需過多的關注服務提供者的穩定性和健康程度以及調用地址,因為這些都可以依靠 Nacos 進行監測、管理和自動轉發。

注冊中心中有兩個角色:一個是服務提供者 Provider,另一個是服務調用者 Consumer,接下來我們分別來創建二者。

2.1 創建服務提供者

2.1.1 新建項目并添加依賴

新建一個 Spring Boot 項目,使用阿里云地址 http://start.aliyun.com 來創建 Spring Cloud Alibaba Nacos 項目,如下圖所示:

圖片

點擊 Next 下一步,如下圖所示:

圖片

增加 Nacos Service Discovery 框架支持,如下圖所示:

圖片

對應的依賴框架如下:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

PS:添加 Spring Web(Spring MVC)框架主要是為了方便后面測試。

2.1.2 配置 Nacos 連接信息

在配置文件 application.properties 中要填寫 Nacos 的相關連接信息,具體信息如下:

# 應用名稱(也是 Nacos 中的服務名)
spring.application.name=spring-cloud-nacos-producer
# 應用服務 WEB 訪問端口
server.port=8082
# Nacos認證信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服務發現與注冊配置,其中子屬性 server-addr 指定 Nacos 服務器主機和端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 注冊到 nacos 的指定 namespace,默認為 public
spring.cloud.nacos.discovery.namespace=public

2.1.3 添加服務提供方法

新建一個控制器 Controller,添加一個 sayhi 方法,此方法可以使用 HTTP 協議進行訪問,它是為后面的服務消費者提供的調用方法,具體實現如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class SpringCloudNacosProducerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudNacosProducerApplication.class, args);
}
@RequestMapping("/sayhi/{name}")
public String sayHi(@PathVariable String name) {
return "Hi Nacos Discovery " + name;
}
}

編寫完代碼之后,運行項目就可以在 Nacos 的服務列表中看到它了,如下圖所示:

圖片

經過以上步驟,我們的服務提供者就創建好了,接下來我們創建一個服務消費者 Consumer。

2.2 創建服務消費者

2.2.1 新建項目并添加依賴

此步驟和上面的服務提供者類似,也是添加 nacos discovery 和 web 依賴,具體實現如下:

圖片

圖片

2.2.2 配置 Nacos 連接信息

# 應用名稱
spring.application.name=springcloud-nacos-consumer
# 應用服務 WEB 訪問端口
server.port=8082
# Nacos認證信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服務發現與注冊配置,其中子屬性 server-addr 指定 Nacos 服務器主機和端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 注冊到 nacos 的指定 namespace,默認為 public
spring.cloud.nacos.discovery.namespace=public

2.2.3 添加服務調用代碼

服務消費者的實現有兩個關鍵點,第一,先 new 一個 RestTemplate 對象,此對象是 Spring 框架提供用于進行 HTTP 請求的類,實現代碼如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudNacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudNacosConsumerApplication.class, args);
}
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
// 用于進行 HTTP 請求的對象
return new RestTemplate();
}
}

第二,新建一個控制器,注入 RestTemplate 對象,并調用 Nacos 中的服務提供者接口,實現代碼如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class TestController {
@Autowired
private RestTemplate restTemplate;

@RequestMapping("/hi")
public String hi(String name) {
// 調用生產者 sayhi 方法,并返回結果
return restTemplate.getForObject("http://spring-cloud-nacos-producer/sayhi/" + name,
String.class);
}
}

其中 spring-cloud-nacos-producer 是服務提供者的 ID,而 sayhi 是服務提供者提供的接口地址。

通過以上配置,我們的服務消費者也創建好了,啟動項目,執行結果如下圖所示:

圖片

從上述結果可以看出,服務消費者通過 Nacos 已經成功調用到服務提供者了,這就是 Nacos 中注冊中心的基本使用。

3.配置中心實現

配置中心的作用是將本地配置文件云端話,所謂的云端也就是 Nacos 的服務器端,這樣既能保證配置文件中的敏感數據不會暴露,同時又提供了實時的修改、查看、回滾和動態刷新配置文件的功能,非常實用。

但是需要注意的是配置中心和注冊中心的依賴包是不同的,注冊中心的依賴包是 nacos discovery,而配置中心的依賴包是 nacos config,它的具體如下。

3.1 新建項目并添加依賴

創建一個 Spring Boot 項目,添加 nacos config 和 web 依賴包,如下圖所示:

圖片

PS:添加 web 依賴主要是為了方便后面測試。

對應的配置依賴信息如下:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

3.2 配置 Nacos Config 信息

在應用的 /src/main/resources/ 目錄下,創建引導配置文件 bootstrap.yml(或 bootstrap.properties),添加以下 Nacos Config 配置:

spring:
application:
name: nacosconfig # 項目名稱和 nacos DataId 相匹配
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # nacos 地址和端口
file-extension: yaml # 獲取配置文件的格式:yaml
username: nacos # nacos 認證用戶名
password: nacos # nacos 認證
server:
port: 9001 # 項目啟動端口

3.3 編寫代碼讀取配置文件

新建控制器,使用 @Value 注解讀取配置信息,實現代碼如下:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
// 從 nacos 中讀取配置項 config.info
@Value("${config.info}")
private String configInfo;

@GetMapping("/getconfig")
public String getConfigInfo(){
return configInfo;
}
}

3.4 Nacos 控制臺添加配置信息

在 Nacos 控制臺創建并設置配置文件,執行步驟如下所示。首先,在配置列表中點擊“添加”按鈕,如下圖所示:

圖片

進入配置頁面,新建 YAML 或 Properties 配置文件,如下圖所示:

圖片

以上關鍵參數的含義和規則說明如下。

3.4.1 Data ID

Data ID 的拼接格式如下:

${prefix} - ${spring.profiles.active} . ${file-extension}

其中

  • prefix 默認為 spring.application.name 的值,也可以通過配置項 spring.cloud.nacos.config.prefix 來配置。
  • spring.profiles.active 即為當前環境對應的 profile,當 active profile 為空時,對應的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
  • file-extension 為配置內容的數據格式,可以通過配置項 spring.cloud.nacos.config.file-extension 來配置。目前只支持 properties 類型。

3.4.2 Group

Group 分組選項,主要是用來隔離不同的配置項目的,它的默認值為 DEFAULT_GROUP,可以通過 spring.cloud.nacos.config.group 配置。

配置好相應的內容之后,點擊底部的“發布”按鈕即可,添加成功之后會自動返回配置列表,如下圖所示:

圖片

經過以上步驟,Nacos 配置中心的功能就實現完了,接下來啟動項目,程序的執行結果如下圖所示:

圖片

3.5 動態刷新功能

動態刷新功能是指,在 Nacos 配置中心修改了配置文件,在不重啟項目的前提下,可以實時讀取到最新的配置內置。

Nacos 默認會為所有獲取數據成功的 Nacos 的配置項添加了監聽功能,在監聽到服務端配置發生變化時會實時觸發 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法。

但如果需要對 Bean 進行動態刷新,需要參照 Spring 和 Spring Cloud 規范,推薦給類添加 @RefreshScope 或 @ConfigurationProperties 注解,就可以實現配置中心的動態刷新功能了。

4.項目源碼

??https://gitee.com/mydb/spring-cloud-alibaba-example??

小結

Nacos 作為 Spring Cloud Alibaba 的核心組件之一,提供了兩個非常重要的功能:注冊中心和配置中心。注冊中心有兩個重要的功能:服務注冊和服務發現,它解決了微服務集群中,調用者和服務提供者連接管理和請求轉發的功能,保證了服務調用者能夠穩定的調用到健康的服務。而注冊中心的本質是將項目中的本地配置文件云端化,解決了配置文件的安全性與統一性的問題,并且提供了配置文件歷史版本回滾和配置文件動態刷新的功能。

參考文檔

Nacos 官方文檔:https://nacos.io/zh-cn/docs/what-is-nacos.html

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2009-11-09 16:06:53

WCF自定義集合

2022-02-14 07:02:04

Spring閾值Nacos

2022-02-24 07:56:42

開發Viteesbuild

2025-01-17 07:00:00

2022-08-30 22:12:19

Nacos組件服務注冊

2023-09-12 13:12:23

服務器系統

2025-03-04 08:53:10

2011-07-26 13:58:17

LINQ

2015-10-20 15:57:48

ReactiveCociOS

2022-02-07 07:10:32

服務注冊功能

2023-02-28 08:57:06

Spring上下線緩存

2021-12-10 08:13:02

MatplotlibpythonAPI

2013-11-19 12:53:33

OA信息化

2022-08-19 07:13:45

SQL方法編程

2021-03-23 08:12:13

SpringDIIoC

2021-03-16 08:22:49

SpringIoCAOP

2022-08-21 07:17:16

LinkerdKubernetes服務網格

2025-02-21 08:00:00

事務管理SpringBootJava

2021-06-07 12:06:19

SpringCloud Sleuth微服務

2021-01-14 07:54:19

Spring Clou應用路由
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品日韩一区二区 | 欧美男人的天堂 | 久久国内精品 | 国产成人在线播放 | 青青久久久 | 成人av播放 | 91精品91久久久 | 国内在线视频 | 免费看黄色视屏 | 日日操操 | 国产精品久久久久久久久久妞妞 | 亚洲精品久久久一区二区三区 | 罗宾被扒开腿做同人网站 | 自拍偷拍第一页 | 91精品国产91久久久久久 | 中文字幕一级 | 久久久久黑人 | 免费毛片网站 | 女人精96xxx免费网站p | 超碰97免费在线 | 日韩国产黄色片 | 国产精品日产欧美久久久久 | 欧美日韩电影一区二区 | www.五月天婷婷.com | 色综合久久久久 | 久久精品国产亚洲 | 欧美a免费 | 日本不卡一区 | 91一区二区在线观看 | 黑人精品 | 91av视频在线播放 | 午夜寂寞影院列表 | 伦理午夜电影免费观看 | 国产黄色网址在线观看 | 羞羞的视频网站 | www.亚洲一区二区 | 日本偷偷操 | 天堂久久一区 | 精品在线视频播放 | 中文字幕在线国产 | 一区二区精品 |