微服务注册中心nacos学习:先尝试使用它,然后撸它源码搞懂它。

在这里整理一下自己之前集成nacos的内容。

我的github地址:https://github.com/mrxiaobai-wen/springcloud_study.git

前置条件:下载nacos并安装启动。

服务提供者集成

创建一个Spring Cloud项目,即nacos-server-spring-cloud。

引入Nacos的依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

配置nacos连接

bootstrap.yml配置内容:

server:
port: 8021 spring:
application:
name: nacos-server-spring-cloud
cloud:
nacos:
discovery:
server-addr: http://localhost:8848
config:
server-addr: http://localhost:8848
file-extension: yaml

在application.yml中添加一个ceshi.version配置,用于后面测试nacos配置中心:

ceshi:
version: dev

创建启动类

@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigurationProperties
public class NacosServerSpringCloudApplication { @Resource
private ConfigBean configBean; public static void main(String[] args) {
SpringApplication.run(NacosServerSpringCloudApplication.class, args);
} @RestController
class EchoController {
@RequestMapping(value = "/server/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string + " 当前版本:" + configBean.getVersion();
}
} }
@ConfigurationProperties("ceshi")
@Component
public class ConfigBean { public String version; public String getVersion() {
return version;
} public void setVersion(String version) {
this.version = version;
}
}

就这样,启动上面的NacosServerSpringCloudApplication后,就可以在本地nacos服务列表中查看到当前服务了,然后在nacos配置中心里面新建一个nacos-server-spring-cloud.yml文件,变更发布ceshi.version的值,然后访问localhost:8021/server/echo/{string}就可以看到变更的内容了。

这样就简单的完成了服务注册和配置动态管理。

采坑

我在最开始的时候,将bootstrap.yml的内容放在application.yml中,然后在配置中心一起发布,但是配置变更一直没有生效。然后经过一番摸索后,拆成了bootstrap.yml和application.yml两个配置文件后,配置动态变更生效了。

Spring Cloud获取数据的时候,其dataId的拼接格式为:${prefix} - ${spring.profiles.active} . ${file-extension}。其中prefix默认为spring.application.name的值,如果配置了多环境,spring.profiles.active即为配置的环境的值。

服务消费者集成

创建一个Spring Cloud项目,即nacos-consumer-spring-cloud。

依赖与上面一致。application.yml配置也与上面一致。

创建启动类

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerSpringCloudApplication { public static void main(String[] args) {
SpringApplication.run(NacosConsumerSpringCloudApplication.class, args);
} @LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
} @RestController
public class TestController { private final RestTemplate restTemplate; @Autowired
public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;} @RequestMapping(value = "/consumer/echo/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
return restTemplate.getForObject("http://nacos-server-spring-cloud/server/echo/" + str, String.class);
}
}
}

然后将上面的nacos-server-spring-cloud和这个消费服务一起启动。然后访问当前的消费服务,访问/consumer/echo/{str}接口,可以看到请求最终转到了上面的那个服务中。

而我们的请求地址是http://nacos-server-spring-cloud/server/echo/,这就是注册中心的作用,我们不用关注server服务的具体地址,只是请求nacos-server-spring-cloud即可。

最新文章

  1. 洛谷 1004 dp或最大费用流
  2. ibatis 批量插入oracle总结
  3. MVC3在IIS7.5发布(部署)报403.14错误的解决办法
  4. JS - Constructor还可以这样用
  5. Saltstack-自动化部署
  6. win7系统中ftp服务器搭建方法(多图)
  7. 适配6 、6P 来源互联网
  8. 2.1孙鑫C++
  9. RollPagerView的用法:
  10. Swift实现糗事百科Demo(实战项目)
  11. linux tomcat部署含有matlab画图打包的java web程序
  12. SQL truncate 、delete与drop区别
  13. 中间自适应,左右定宽的两种经典布局 ---- 圣杯布局 VS 双飞翼布局
  14. 【杂】poj2482 Stars in Your Windows 题面的翻译
  15. C语言_第二讲_规范以及常用数据类型
  16. uva10410 栈
  17. Python 爬虫基础知识
  18. Cocos2Dv3.4在AppDelegate中不返回的情况及解决
  19. android 资源文字ids的作用
  20. java基础 lang包 详细介绍

热门文章

  1. vue 事件基本用法
  2. js上 二.JavaScript基本语法
  3. 推荐系统实践 0x12 什么是Embedding
  4. 记一次真实的webpack优化经历
  5. python一键搭建ftp服务
  6. Python进阶学习_连接操作Redis数据库
  7. oracle 19c dataguard silent install (oracle 19c dataguard 静默安装)
  8. Failed to process, please exclude the tableName or statementId.--Mybatis-Plus
  9. python对离散数据进行编码
  10. javascript中如何截取字符串?