springboot框架项目实践应用十七(springcloud整合nacos)

1.引言

上一篇文章,我们搭建好了nacos管理控制台。本篇文章来体验一下nacos作为服务注册与发现组件,这里我选择了通过springcloud alibaba整合nacos的方式,但是你需要注意,并不是说使用nacos一定要与springcloud alibaba框架整合,事实上,nacos可以与任何服务进行整合,提供了丰富的客户端支持能力,比如

  • java
  • spring
  • springboot
  • springcloud

就是说,nacos提供了客户端支持任何java项目,甚至计划提供其它异构服务的的客户端

  • node.js
  • c++
  • shell
  • python

控制面板截图

从图上看,还提供了各种应用接入的示例代码,很贴心!对不对。

下面我们创建两个服务,一个服务提供者,一个服务消费者,体验一下nacos作为服务注册发现组件的强大之处。

2.搭建服务提供者

2.1.导入依赖

springcloud alibaba整合使用nacos服务注册发现组件,需要引入依赖

xml 复制代码
<!--nacos discovery依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.2.编写配置

yaml 复制代码
server:
  port: ${server.port:8080}
spring:
  application:
    name: follow-me-springloud-nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

2.3.编写应用

2.3.1.启动类

java 复制代码
/**
 * <p>
 * 启动类
 * </p>
 *
 * @author yanghouhua@edu.com.cn
 */
@SpringBootApplication
public class FollowMeNacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(FollowMeNacosProviderApplication.class, args);
    }
}

2.3.2.rest接口

java 复制代码
/**
 * <p>
 * 提供者controller
 * </p>
 *
 * @author yanghouhua@edu.com.cn
 */
@RestController
@RequestMapping("provider")
@Slf4j
public class ProviderController {

    @Value("${server.port}")
    private String serverPort;

    @RequestMapping("test")
    public String test(){
       log.info("当前服务实例接收到请求,端口:{}", serverPort);
        return "ProviderController---test.ok.port=" + serverPort;
    }
}

2.3.3.启动服务

启动时,分别通过端口:8080、8081启动两个实例,从nacos控制台上,可以看到注册上来的服务提供者。

访问8080:http://127.0.0.1:8080/provider/test

访问8081:http://127.0.0.1:8081/provider/test

3.搭建服务消费者

3.1.导入依赖

xml 复制代码
<!--nacos discovery依赖-->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3.2.编写配置

yaml 复制代码
server:
  port: 8090
spring:
  application:
    name: follow-me-springloud-nacos-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3.3.编写应用

3.3.1.启动类

java 复制代码
/**
 * <p>
 * 启动类
 * </p>
 *
 * @author yanghouhua@edu.com.cn
 */
@SpringBootApplication
public class FollowMeNacosConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(FollowMeNacosConsumerApplication.class, args);
    }
}

3.3.2.配置类

使用RestTemplate实现远程调用,且配合Ribbon组件实现负载均衡。

java 复制代码
/**
 * <p>
 * 消费者配置类
 * </p>
 *
 * @author yanghouhua@edu.com.cn
 */
@Configuration
public class ConsumerConfiguration {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

3.3.3.rest接口

需要注意,在RestTemplate远程调用时,是通过服务提供者的服务名称:follow-me-springloud-nacos-provider,即通过nacos服务发现获取服务实例,完成应用处理。

java 复制代码
/**
 * <p>
 * 消费者controller
 * </p>
 *
 * @author yanghouhua@edu.com.cn
 */
@RestController
@RequestMapping("consumer")
@Slf4j
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("test")
    public String test(){
        log.info("准备调用服务提供者api:follow-me-springloud-nacos-provider");
        String result = restTemplate.getForObject("http://follow-me-springloud-nacos-provider/provider/test", String.class);

3.3.4.启动服务

启动消费者服务,从nacos管理控制台看到消费者服务已经注册上来。

3.3.5.验证

访问消费者端点:http://127.0.0.1:8090/consumer/test,观察两个provider实例控制台输出,实现了负载均衡,刷新六次,观察是否两个提供者实例控制台各输出3次

消费者控制台

服务提供者8080控制台

服务提供者8081控制台

到此,我们通过springcloud alibaba整合nacos完成了一个有代表意义的服务注册与发现,体验还不错吧!

本文源码:gitee.com/yanghouhua/...

相关推荐
JohnYan8 分钟前
Bun技术评估 - 26 Abort
javascript·后端·bun
逛逛GitHub11 分钟前
国产首个开源 AI 原生后端平台,这次是真起飞了。
后端·github
Python私教12 分钟前
Rust 编程语言基础知识全面介绍
开发语言·后端·rust
鬼火儿13 分钟前
网卡驱动架构以及源码分析
java·后端
老华带你飞21 分钟前
房屋租赁|房屋出租|房屋租赁系统|基于Springboot的房屋租赁系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·vue·论文·毕设·房屋租赁系统
123461611 小时前
互联网大厂Java面试:从Spring Boot到微服务的探索
java·数据库·spring boot·微服务·面试·mybatis·orm
一 乐1 小时前
农产品销售系统|农产品电商|基于SprinBoot+vue的农产品销售系统(源码+数据库+文档)
java·javascript·数据库·vue.js·spring boot·后端·农产品销售系统
蒲公英源码1 小时前
java企业OA自动化办公源码
java·spring boot·后端
go4it1 小时前
聊聊spring-boot-autoconfigure的模块化
后端
陈果然DeepVersion1 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(一)
spring boot·微服务·kafka·消息队列·java面试·rag·ai智能客服