文章28 | 阅读 9312 | 点赞0
前言:
前四个字母分别为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
改好启动项目测试
nacos 集群 见一篇
https://blog.csdn.net/weixin_44520739/article/details/109842478
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_44520739/article/details/109811171
内容来源于网络,如有侵权,请联系作者删除!