nacos(中介)
用于服务注册,作为中介、注册中心
- 服务消费者:调用服务(客户端)
- 服务提供者:提供服务(提供调用接口)(服务器端)
nacos下载
github下载后解压,由于是windows系统使用,更改配置文件:standup.cmd
set MODE="standalone"
运行stand.cmd,显示如下:
上图显示端口为8848
访问:localhost:8848/nacos
用户名密码默认都是nacos
登陆成功:
将应用注册到注册中心
服务提供者端:
pom.xml中引入:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
application.yml中引入
cloud:
nacos:
server-addr: localhost:8848 #注册中心的地址,注意不要以协议开头
注意下面是服务名称:
application:
name: product-service
发现:控制台显示如下,表示服务注册成功
nacos registry, DEFAULT_GROUP product-service 192.168.253.1:8010 register finished
运行,网站中显示:
java程序内测试
package com.neutech.shopserver.order.controller;
import com.neutech.shopserver.commons.vo.ResultVO;
import com.neutech.shopserver.order.form.OrderForm;
import com.neutech.shopserver.order.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private OrderService orderService;
@Autowired
private DiscoveryClient discoveryClient;
@GetMapping("/test")
public List<ServiceInstance> test() {
discoveryClient.getInstances("product-service").get(0).getHost();
return discoveryClient.getInstances("product-service");
}
}
运行order-service和product-service
postman调试如下显示证明两者链接成功
nacos的心跳检测机制
注册中心会定时地向服务发送一个请求,目的就是看服务是否还能相应。
注册多个服务
在product-service中配置多个服务
勾选allow parallel run,配置如下:
运行product-service,运行成功后更改product-service服务端口号:
server:
port: 8020
注册中心显示如下:
点进product-service详情: