Nacos可以直接提供注册中心(Eureka)+配置中心(Config)比之前的Eureka更加方便,不需要在自己做配置。Nacos Discovery 帮助自动将服务注册到 Nacos 服务器,Nacos 服务器会跟踪服务并动态刷新服务列
Nacos可以直接提供注册中心(Eureka)+配置中心(Config)比之前的Eureka更加方便,不需要在自己做配置。Nacos Discovery 帮助自动将服务注册到 Nacos 服务器,Nacos 服务器会跟踪服务并动态刷新服务列表。此外,Nacos Discovery 将服务实例的一些元数据,如主机、端口、健康检查 URL、主页等注册到 Nacos。
使用Maven聚合项目进行创建
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
server: port: 8001spring: application: name: nacos-provider cloud: discovery: server-addr: 127.0.0.1:8848management: endpoint: WEB: exposure: include:'*'
@SpringBootApplication@EnableDiscoveryClient//加此注解public class CloudaNacos9001Application { public static void main(String[] args) { SpringApplication.run(CloudNacos9001Application.class, args); }}
端口号为8001的服务注册到了nacos中
配置文件
server: port: 8002spring: application: name: nacos-provider cloud: nacos: discovery: server-addr: 127.0.0.1:8848management: endpoint: web: exposure: include:'*'
启动项目,刷新nacos,可以看到有两台服务器注册
server: port: 8083spring: application: name: nacos-consumer cloud: discovery: server-addr: 127.0.0.1:8848
@SpringBootApplication@EnableDiscoveryClientpublic class CloudConsumerNacos8308Application { public static void main(String[] args) { SpringApplication.run(CloudConsumerNacos8308Application.class, args); }}
Nacos已整合Ribbon,Ribbon 是一个基于Http和tcp客户端负载均衡器,它虽然只是一个工具类库,它却是每一个微服务的基础设施,对于服务间调用、api网关请求转发都需要经过Ribbon负载均衡来实现。总体来说,Ribbon的主要作用是:从注册服务器端拿到对应服务列表后以负载均衡的方式访问对应服务。
在服务消费者中配置RestTemplate
@Bean@LoadBalancedpublic RestTemplate restTemplate(){ return new RestTemplate();}//访问restTemplate.getForObject(arg1,arg2,arg3...);
第一个参数url表示被调用的目标Rest接口位置
1. url的第一部分是在Nacos中注册的服务提供者名称,如果多个服务提供者注册相同名称,Ribbon会自动寻找其中一个服务提供者,并且调用接口方法。这个就是负载均衡功能。 2. url后半部是控制器的请求路径。
第二个参数是返回值类型
JavaBean类型或者JavaBean数组类型,如果控制器返回的是List集合,需要使用数组类型接收。
第三个参数是可变参数
是传递给url的动态参数,使用参数时候需要在url上需要使用{1}、{2}、{3}进行参数占位,这样传递的参数就会自动替换占位符。
@RestControllerpublic class DemoController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/test") public String getServerPort(){ return "Hello Nacos Discovery"+serverPort; }}
消费者配置文件添加 要访问的微服务名称
server: port: 8083spring: application: name: nacos-consumer cloud: discovery: server-addr: localhost:8848# 消费者将要去访问的微服务名称(注册成功的Nacos的微服务提供者)service-url: nacos-user-service: http://nacos-provider
2. 启动类上配置restTemplate-远程调用
@Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); }
3. 在8083的消费者上来通过Ribbon来自动的负载均衡调用9001或者9002的服务提供者
@RestControllerpublic class DemoController { @Resource private RestTemplate restTemplate; @Value("${service-url.nacos-user-service}") private String serverURL; @GetMapping(value = "consumer/nacos") public String getDiscovery(){ System.err.println(serverURL); return restTemplate.getForObject(serverURL+"/test",String.class); }}
4)访问http://localhost:8308/consumer/nacos
结果:Hello Nacos Discovery8001/8002(负载均衡切换显示)
服务端口号为3377
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
要注意的是这里我们要配置两个,因为Nacos同SpringCloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。
springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application
分别要配置的是,这里bootstrap.yml配置好了以后,作用是两个,第一个让服务注册到Nacos中,第二个作用就是去Nacos中去读取指定后缀为yaml的配置文件
# nacos配置server: port: 3377spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 #Nacos服务注册中心地址 config: server-addr: localhost:8848 #Nacos作为配置中心地址 file-extension: yaml #指定yaml格式的配置
spring: profiles: active: dev #表示开发环境
@SpringBootApplication@EnableDiscoveryClientpublic class CloudConfig3377Application { public static void main(String[] args) { SpringApplication.run(CloudConfig3377Application.class, args); }}
@RefreshScope实现配置自动更新,配置文件中的配置修改后不用重启项目即生效
@RestController@RefreshScope //支持Nacos的动态刷新功能public class ConfiGClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo(){ return configInfo; }}
Data ID配置格式为:${prefix}-${spring.profiles.active}.${file-extension}
`prefix` 默认为 `spring.application.name` 的值,也可以通过配置项 `spring.cloud.nacos.config.prefix`来配置。
2. `spring.profiles.active` 即为当前环境对应的 profile,注意:**当 `spring.profiles.active` 为空时,对应的连接符 `-` 也将不存在,dataId 的拼接格式变成 `${prefix}.${file-extension}`**(不能删除)
3. `file-exetension` 为配置内容的数据格式,可以通过配置项 `spring.cloud.nacos.config.file-extension` 来配置。目前只支持 `properties` 和 `yaml` 类型。
4. 通过 spring cloud 原生注解 `@RefreshScope` 实现配置自动更新:
5. 所以根据官方给出的规则我们最终需要在Nacos配置中心添加的配置文件的名字规则和名字为:
# ${spring.application.name}-${spring.profiles.active}.${file-extension}
# nacos-config-client-dev.yaml
# 微服务名称-当前环境-文件格式
访问 http://localhost:3377/config/info
修改Nacos配置,不需要重启项目即可自动刷新
测试访问
http://localhost:3377/config/info
来源地址:https://blog.csdn.net/chemmeng/article/details/128471814
--结束END--
本文标题: Nacos服务器注册及配置中心
本文链接: https://www.lsjlt.com/news/399476.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-13
2024-05-13
2024-05-11
2024-05-11
2024-05-10
2024-05-07
2024-04-30
2024-04-30
2024-04-30
2024-04-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0