SpringCloudAlibaba-Nacos

119 阅读1分钟

Nacos核心功能

  1. 服务注册:
  2. 服务心跳:客户端向注册中心发送请求,默认5秒发一次
  3. 服务同步:Nacos集群会自动同步服务列表
  4. 服务发现:客户端发送请求时会获取新的服务列表,并且缓存在本地,同时客户端会有定时任务自动获取服务端服务列表
  5. 服务健康检查:15s没收到客户端心跳请求,会吧healthy改为false不健康状态,30s没收到心跳包,直接下线服务,收到心跳后再重新上线服务

启动nacos(windows)

百度云下载地址 pan.baidu.com/s/1db-KDJ_Y…

  1. 进入nacos\bin 目录下
  2. 打开cmd,执行startup.cmd -m standalone,这是单机模式
  3. 启动后访问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();
    }
}