Nacos核心功能
- 服务注册:
- 服务心跳:客户端向注册中心发送请求,默认5秒发一次
- 服务同步:Nacos集群会自动同步服务列表
- 服务发现:客户端发送请求时会获取新的服务列表,并且缓存在本地,同时客户端会有定时任务自动获取服务端服务列表
- 服务健康检查:15s没收到客户端心跳请求,会吧healthy改为false不健康状态,30s没收到心跳包,直接下线服务,收到心跳后再重新上线服务
启动nacos(windows)
百度云下载地址 pan.baidu.com/s/1db-KDJ_Y…
- 进入nacos\bin 目录下
- 打开cmd,执行
startup.cmd -m standalone,这是单机模式 - 启动后访问http://localhost:8848/nacos/index.html ,账号和密码都是nacos
测试nacos是否正常
测试代码
gitee:https://gitee.com/qin_jingtao/spring-demo-1.git
这里只写1个,订单服务和生产者服务都这样配置即可
1、引入pom文件
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
2、添加application.yml
server:
port: 9091
spring:
application:
name: order
cloud:
nacos:
discovery:
server-addr: localhost:8848
3、进行简单远程调用
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@GetMapping("hello")
public String getOrder() {
List<ServiceInstance> product = discoveryClient.getInstances("product");
ServiceInstance serviceInstance = product.get(0);//第一个服务
String host = serviceInstance.getHost();
int port = serviceInstance.getPort();
String url = "http://" + host + ":" + port + "/product/hello";
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);
return forEntity.getBody().toString();
}
}