前言:
前四個字母分別為Naming和Configuration的前兩個字母,最后的s為Service
一個更易于構建云原生應用的動態服務發現,配置管理和服務管理中心
Nacos 有自己獨立的,注冊和配置 服務端,不像Eureka我還得去起服務端才能注冊,
Nacos支持AP和CP模式切換
如果不需要存盤服務級別的資訊且服務示例是通過 nacos-clien注冊并且能夠保持心跳上報,那么就可以選擇AP模式,當前主流的cloud和dubbo服務,都適用與AP模式,AP模式為了服務的可能性減弱了一致性,因此AP模式下只支持注冊臨時的實體
如果需要在服務級別編輯或者存盤資訊那么是CP,K8S,DNS服務則適用CP模式,CP模式下則支持注冊持久化實體,此時則是以Raft協議為集群運行模式,該模式下注冊實體之前必須注冊服務,如果不存在,則回傳 錯誤
切換
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
Nacos = Eureka+Config+Bus


下載地址:https://nacos.io/zh-cn/index.html

我下載的win版的

下載解壓:

啟動前小插曲:
下載下來的nacos-server使用的時cluster集群模式,這個模式是要求使用mysql的
啟動
所以需要改一下配置改成單機的

修改啟動檔案 standalone

D:\work\nacos\nacos\bin
雙擊startup.cmd


啟動成功訪問
http://localhost:8848/nacos
賬號密碼都是:nacos

登入后頁面

使用示例:
pom 依賴
使用Nacos首先有cloud-alibaba的依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.1.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Nacos的依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
YML
server:
port: 8089
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
management:
endpoints:
web:
exposure:
include: '*'
啟動類
package com.tang.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class NacosPaymentProvider8089 {
public static void main(String[] args) {
SpringApplication.run(NacosPaymentProvider8089.class,args);
}
}
啟動專案測驗注冊
重繪nacos 看到我悶得服務已經注冊進去了

創建消費工程
nacos 再帶負載均衡
pom:
消費專案
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
yml
server:
port: 84
spring:
application:
name: nacos-order-consumer
cloud:
nacos:
discovery:
server-addr: localhost:8848
service-url:
nacos-user-service: http://nacos-payment-provider
主啟動類和以上一樣
呼叫要借助RestTemplate
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate()
{
return new RestTemplate();
}
}
controller
package com.tang.cloud.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
@Slf4j
public class OrderNacosController
{
@Resource
private RestTemplate restTemplate;
@Value("${service-url.nacos-user-service}")
private String serverURL;
@GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id)
{
return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
}
}
測驗
nacos自帶的父子均衡就是Ribbon


nacos配置中心

示例:
首先pom
nacos-config依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
bootstrap.yml
# nacos配置
server:
port: 8091
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務注冊中心地址
config:
server-addr: localhost:8848 #Nacos作為配置中心地址
file-extension: yml
controller
@RefreshScope自動重繪配置
package com.tang.cloud.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope //支持Nacos的動態重繪功能,
public class ConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
配置nacos的配置yml


啟動專案 訪問 能讀到配置就可以了

分組就可以切換配置

改yml
添加:group: tang
# nacos配置
server:
port: 8091
spring:
application:
name: test
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務注冊中心地址
config:
server-addr: localhost:8848 #Nacos作為配置中心地址
file-extension: yml
group: tang

空間:

新建


此時就多出一個空間

在新空間 創建組態檔測驗:

當然要修改yml檔案
增加namespace: tang 就是創建空的唯一ID 讓組態檔找到它
# nacos配置
server:
port: 8091
spring:
application:
name: test
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服務注冊中心地址
config:
server-addr: localhost:8848 #Nacos作為配置中心地址
file-extension: yml
group: tang
namespace: tang
改好啟動專案測驗
到此…沒完有空補上
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/225889.html
標籤:其他
上一篇:java開發 京東復試二面 7分鐘結束?面試官不講武德!
下一篇:(二) RabbitMQ快速入門, 一篇文章教會你使用RabbitMQ并理解訊息發布模型(SpringBoot版)
