1.概况

  服务提供者9001和9002,他们是同一个服务,服务消费者83

2.创建服务提供者

  9001和9002除了端口是一样的,这里只演示一个

2.1项目结构

2.2依赖

nacos依赖

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

完整的

<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
</dependencies>

2.3配置文件

server:
port: 9001 spring:
application:
name: nacos-payment-provider #将会作为注册到注册中心的服务名称
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址 management:
endpoints:
web:
exposure:
include: '*'

2.4主启动类

  注解使用的是@EnableDiscoveryClient

package com.atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /**
* @Classname PaymentMain9001
* @Description TODO
* @Date 2021/6/18 0018 下午 2:20
* @Created by jcc
*/
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain9001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain9001.class,args);
}
}

2.5业务类

package com.atguigu.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController; /**
* @Classname PaymentController
* @Description TODO
* @Date 2021/6/18 0018 下午 2:21
* @Created by jcc
*/
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort; @GetMapping(value = "/payment/nacos/{id}")
public String getPayment(@PathVariable("id") Integer id)
{
return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
}
}

3.创建服务消费者

3.1项目结构

 3.2依赖

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

完整

<dependencies>

        <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> <dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency> <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
</dependencies>

3.3配置文件

server:
port: 83 spring:
application:
name: nacos-payment-consumer #将会作为注册到注册中心的服务名称
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址 service-url:
nacos-user-service: http://nacos-payment-provider

3.4主启动类

package com.atguigu.springcloud.alibaba.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; /**
* @Classname OrderNacosController
* @Description TODO
* @Date 2021/6/18 0018 下午 2:58
* @Created by jcc
*/ @RestController
@Slf4j
public class OrderNacosController { @Resource
private RestTemplate restTemplate; @Value("${service-url.nacos-user-service}")
private String serverURL; @GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id) { return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class); }
}

3.5配置类和业务类

nacos集成了Ribbon
package com.atguigu.springcloud.alibaba.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate; /**
* @Classname ApplicationContextConfig
* @Description TODO
* @Date 2021/6/18 0018 下午 2:56
* @Created by jcc
*/
@Configuration
public class ApplicationContextConfig { @Bean
@LoadBalanced //nacos集成了Ribbon,这里是开启ribbon负载均衡
public RestTemplate getRestTemplate()
{
return new RestTemplate();
}
}
package com.atguigu.springcloud.alibaba.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; /**
* @Classname OrderNacosController
* @Description TODO
* @Date 2021/6/18 0018 下午 2:58
* @Created by jcc
*/ @RestController
@Slf4j
public class OrderNacosController { @Resource
private RestTemplate restTemplate; @Value("${service-url.nacos-user-service}")
private String serverURL; @GetMapping(value = "/consumer/payment/nacos/{id}")
public String paymentInfo(@PathVariable("id") Long id) { return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class); }
}

4.启动三个服务

  启动后,查看nacos管理页面,可以看到三个服务

  

  此时,访问服务消费者83,连续访问

  http://localhost:83/consumer/payment/nacos/13

  

  连续访问,发现 9001和9002轮询提供服务,因为Ribbon默认的策略是轮询

  关于ribbon的介绍:https://www.cnblogs.com/jthr/p/14694632.html

最新文章

  1. 【转载】debian上快速搭建ftp
  2. 根据域名获取IP地址,并探测是否可达
  3. Qt动画效果的实现,QPropertyAnimation
  4. bzoj 1064【noi2008】假面舞会
  5. ORACLE 毫秒与日期的相互转换
  6. TCP/IP协议原理与应用笔记09:数据通信---封装
  7. Strategic game(POJ 1463 树形DP)
  8. hdu 5627 Clarke and MST(最大 生成树)
  9. Directx11学习笔记【二】 将HelloWin封装成类
  10. ThinkPHP 框架执行流程分析
  11. 如何play billard
  12. 删除 vim 命令
  13. HTTP 报文格式
  14. RF运行脚本报错:WebDriverException: Message: unknown error: call function result missing
  15. Http Header 之 Requests Header 和 Responses Header
  16. 练习angularjs的ng-click的应用
  17. Revit API根据链接文件开洞
  18. openstack cloud init set password
  19. Qt: 记事本源代码
  20. 58VIP账号发贴器

热门文章

  1. Day11.2:标签的使用
  2. Perl读取Excel中的数据
  3. 更换K8S证书可用期
  4. Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建
  5. windows安装wsl,在windows中使用ubuntu
  6. 【项目案例】配置小型网络WLAN基本业务示例
  7. Python3.9.5安装
  8. 【离线数仓】Day02-用户行为数据仓库:分层介绍、环境搭建(hive、tez)、LZO压缩、建表查询导入加索引、编写脚本
  9. HMS Core 6.8.0版本发布公告
  10. 【机器学习】李宏毅——Adversarial Attack(对抗攻击)