SpringCloud Nacos服务注册和配置中心

您所在的位置:网站首页 springcloud最新注册中心 SpringCloud Nacos服务注册和配置中心

SpringCloud Nacos服务注册和配置中心

2023-04-20 02:13| 来源: 网络整理| 查看: 265

SpringCloud Nacos服务注册和配置中心

在这里插入图片描述

简介 1. 为什么叫Nacos :

前四个字母分别是Naming 和 Configuration 的前两个字母,最后的s为Service。

Nacos 就是注册中心 + 配置中心的组合

Nacos 官网 :https://nacos.io/zh-cn/

GitHub:https://github.com/alibaba/Naco

Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。 Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。在这里插入图片描述 安装并运行nacos

在docker上安装nacos

拉取nacos镜像:

docker pull nacos/nacos-server

运行nacos:

docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

在浏览器输入:http://ip地址:8848/nacos/账号和密码都是nacos。

在这里插入图片描述在这里插入图片描述

Nacos作为服务注册中心演示

官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html

提供者 新建模块cloudalibaba-provider-payment9001 pom com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test yml server: port: 9001 spring: application: name: nacos-payment-provider cloud: nacos: discovery: server-addr: 120.92.164.250:8848 #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址) management: endpoints: web: exposure: include: '*' 主启动类 @EnableDiscoveryClient @SpringBootApplication public class PaymentMain9001 { public static void main(String[] args) { SpringApplication.run(PaymentMain9001.class, args); } } 新建controller包,包下新建PaymentController @RestController public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping("/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id){ return "nacos registry, serverPort: " + serverPort + "\t id: " + id; } } 启动9001

在这里插入图片描述

消费者 (整合Feign) 新建 cloudalibaba-consumer-nacos-order83 pom com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.angenin.springcloud cloud-api-commons ${project.version} org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-starter-openfeign 建yml server: port: 83 spring: application: name: nacos-order-consumer cloud: nacos: discovery: server-addr: 120.92.164.250:8848 #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址) #消费者要访问的微服务名称(成功注册进nacos的服务提供者) service-url: nacos-user-service: http://nacos-payment-provider 主启动类 @EnableDiscoveryClient @EnableFeignClients @SpringBootApplication public class OrderNacosMain83 { public static void main(String[] args) { SpringApplication.run(OrderNacosMain83.class, args); } } 新建 feign包 ,包下新增接口 PaymentFeignService @Component @FeignClient(value = "nacos-payment-provider") public interface PaymentFeignService { @GetMapping("/payment/nacos/{id}") public String getPayment(@PathVariable("id") Integer id); } 新建controller @RestController public class OrderNacosController { @Resource private PaymentFeignService paymentFeignService; @GetMapping("/consumer/payment/feign/nacos/{id}") public String paymentInfo2(@PathVariable("id") Integer id){ return paymentFeignService.getPayment(id); } } 启动在这里插入图片描述 服务注册中心对比

Nacos全景图在这里插入图片描述Nacos和CAP(同时支持 cp + ap)在这里插入图片描述在这里插入图片描述

AP 和 CP的切换

A : 可用性 B:一致性 C: 分区容错性

C是所有节点在统一时间看到的数据是一致的;而A的定义是所有的请求都会收到响应

如何选择模式:

一般来说,如果不需要存储服务级别的信息且服务实例都是通过 nacos-client 注册,并且能够保持心跳上报,那么就可以选择AP 模式,当前主流的服务如 SpringCloud 和 Dubbo 服务,都适用与AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下支持注册临时节点 如果需要在服务界别编辑 或者存储配置信息,那么CP是必须,K8S服务和DNS服务则适用于CP模式,CP模式下则支持持久化实例,此时则是以Raft 协议为集群模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误

Nacos默认AP。

切换CP在这里插入图片描述

Nacos作为服务配置中心演示 新建cloudalibaba-config-nacos-client3377 pom com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config org.springframework.cloud spring-cloud-starter-openfeign com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test yml

bootstrap.yml:

server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: 120.92.164.250:8848 #Nacos服务注册中心地址(本机的写localhost) config: server-addr: 120.92.164.250:8848 #Nacos作为配置中心地址(本机的写localhost) file-extension: yml #指定yml格式配置

application.yml

spring: profiles: active: dev #表示开发环境 启动类 @EnableDiscoveryClient @SpringBootApplication public class NacosConfigClientMain3377 { public static void main(String[] args) { SpringApplication.run(NacosConfigClientMain3377.class, args); } } 新建controller 包,ConfigClientController类 @RefreshScope //支持Nacos的动态刷新功能 @RestController public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo(){ return configInfo; } } 在Nacos中添加配置信息

官网:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

`

在这里插入图片描述在这里插入图片描述在这里插入图片描述

启动3377浏览器输入:http://localhost:3377/config/info

在这里插入图片描述实时刷新

在这里插入图片描述

Nacos作为配置中心——分类配置

实际开发中,通常一个系统会准备

dev开发环境 test测试环境 prod生产环境

在这里插入图片描述

Namespace+Group+DataID三者的关系 介绍

类似Java里面的package名和类名最外层的nameSpace是可以用于区分部署环境的,Group和DataID逻辑是那个区分两个目标对象

在这里插入图片描述

Data ID 区分

在这里插入图片描述

Group 区分

在这里插入图片描述在这里插入图片描述Namespace方案

在这里插入图片描述在这里插入图片描述在这里插入图片描述

个人博客: http://blog.yanxiaolong.cn/


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3