• SpringCloudAlibaba-Nacos注册中心


    开发环境

    开发工具:IDEA 2021.3.2

    JDK版本:JDK1.8

    Maven版本:Maven3.8

    SpringCloud版本:Hoxton.SR12

    SpringCloudAlibaba版本:2.2.7.RELEASE

    SpringBoot版本:2.3.12.RELEASE

    Nacos版本:2.0.3

    Nacos

    Nacos 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

    Nacos 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,快速实现动态服务发现、服务配置、服务元数据及流量管理。

    Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

    搭建Nacos

    Nacos文档 里面有两种nacos-server下载方式:下载编译后压缩包源码

    下载编译后的压缩包(慢,不推荐)

    ①访问nacos官网,点击最新稳定版本跳转到下载页面

     ②点击左上角Releases选择版本,展开Assets,下载zip压缩包

    下载源码(推荐)

    ①根据Nacos文档,首先克隆源码(github太慢,使用gitee Nacos镜像)

    1. # -b 后面带的是nacos版本
    2. git clone -b 2.0.3 https://gitee.com/mirrors/Nacos.git

    ②克隆完之后,执行以下命令构建项目

    1. cd nacos/
    2. mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

    ③构建完项目之后,进入distribution\target目录下

     ④在该bin目录下打开cmd,执行 startup.cmd -m standalone 命令启动nacos-server

    ⑤浏览访问http://localhost:8848/nacos/index.html,登录客户端默认账号密码都是nacos 

    搭建Spring Cloud项目

    搭建父工程

    ①创建maven项目,命名为spring-cloud-alibaba-2022

    ②删除src目录

    ③导入依赖,进行依赖统一管理

    1. <dependencyManagement>
    2. <dependencies>
    3. <dependency>
    4. <groupId>com.alibaba.cloudgroupId>
    5. <artifactId>spring-cloud-alibaba-dependenciesartifactId>
    6. <version>2.2.7.RELEASEversion>
    7. <type>pomtype>
    8. <scope>importscope>
    9. dependency>
    10. <dependency>
    11. <groupId>org.springframework.cloudgroupId>
    12. <artifactId>spring-cloud-dependenciesartifactId>
    13. <version>Hoxton.SR12version>
    14. dependency>
    15. <dependency>
    16. <groupId>org.springframework.bootgroupId>
    17. <artifactId>spring-boot-dependenciesartifactId>
    18. <version>2.3.12.RELEASEversion>
    19. <type>pomtype>
    20. <scope>importscope>
    21. dependency>
    22. dependencies>
    23. dependencyManagement>

    搭建服务提供者

    ①创建maven子模块,命名为cloud-provider8001

    ②导入依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.alibaba.cloudgroupId>
    4. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>org.springframework.bootgroupId>
    8. <artifactId>spring-boot-starter-webartifactId>
    9. dependency>
    10. <dependency>
    11. <groupId>org.springframework.bootgroupId>
    12. <artifactId>spring-boot-starter-actuatorartifactId>
    13. dependency>
    14. dependencies>

    ③创建application.yml配置文件

    1. server:
    2. port: 8001
    3. spring:
    4. application:
    5. name: cloud-provider-nacos
    6. cloud:
    7. nacos:
    8. discovery:
    9. #注册中心地址,127.0.0.1不能写成localhost,不然会报错
    10. server-addr: 127.0.0.1:8848
    11. management:
    12. endpoints:
    13. web:
    14. exposure:
    15. include: "*"

    ④创建启动类,添加@EnableDiscoveryClient注解

    1. @EnableDiscoveryClient
    2. @SpringBootApplication
    3. public class ProviderNacos8001 {
    4. public static void main(String[] args) {
    5. SpringApplication.run(ProviderNacos8001.class, args);
    6. }
    7. }

    ⑤创建controller

    1. @RestController
    2. @RequestMapping("provider")
    3. public class ProviderController {
    4. @Value("${server.port}")
    5. private String port;
    6. @GetMapping("getUUID")
    7. public String getUUID() {
    8. return port + "\t:\t" + UUID.randomUUID();
    9. }
    10. }

    搭建服务消费者

    ①创建maven子模块,命名为cloud-consumer80

    ②导入依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>com.alibaba.cloudgroupId>
    4. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>org.springframework.bootgroupId>
    8. <artifactId>spring-boot-starter-webartifactId>
    9. dependency>
    10. <dependency>
    11. <groupId>org.springframework.bootgroupId>
    12. <artifactId>spring-boot-starter-actuatorartifactId>
    13. dependency>
    14. dependencies>

    ③创建application.yml配置文件

    1. server:
    2. port: 80
    3. spring:
    4. application:
    5. name: cloud-consumer-nacos
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 127.0.0.1:8848
    10. management:
    11. endpoints:
    12. web:
    13. exposure:
    14. include: "*"

    ④创建启动类,添加@EnableDiscoveryClient注解

    1. @EnableDiscoveryClient
    2. @SpringBootApplication
    3. public class ConsumerNacos80 {
    4. public static void main(String[] args) {
    5. SpringApplication.run(ConsumerNacos80.class, args);
    6. }
    7. }

    ⑤创建配置类,把RestTemplate注入到容器当中

    1. @Configuration
    2. public class ApplicationContextConfig {
    3. @Bean
    4. @LoadBalanced //nacos-discovery依赖自带ribbon,可以实现负载均衡
    5. public RestTemplate getRestTemplate() {
    6. return new RestTemplate();
    7. }
    8. }

    ⑥创建controller

    1. @RestController
    2. @RequestMapping("consumer")
    3. public class ConsumerController {
    4. // RestTemplate 方式
    5. // cloud-provider-nacos是服务提供者在注册中心的昵称
    6. private static final String URL = "http://cloud-provider-nacos/provider";
    7. @Autowired
    8. private RestTemplate restTemplate;
    9. @GetMapping("getUUID")
    10. public String getUUID() {
    11. String result = null;
    12. result = restTemplate.getForObject(URL + "/getUUID", String.class);
    13. return result;
    14. }
    15. }

    测试

    启动nacos注册中心,登录客户端

    启动cloud-provider8001服务提供者,cloud-consumer80服务消费者

    刷新nacos客户端

  • 相关阅读:
    netty系列之:在netty中实现线程和CPU绑定
    python继承
    测试用例的设计方法有哪些?
    真卷,隔壁半夜房间还亮着灯,原来在偷偷学习分布式服务框架
    R语言data.frame的用重名调用
    Java中关键字总结汇总
    前端培训丁鹿学堂:node使用http模块进行请求转发
    睿趣科技:抖音开通蓝V怎么操作的
    夯实思想根基:建行江门市分行持续加强党建工作
    硬件工程师有没有35岁危机?
  • 原文地址:https://blog.csdn.net/weixin_46899412/article/details/127698059