创建一个nacos客户端并注册
新建一个Maven项目命名nacos,在建一个Spring Boot项目,修改Custom内的值为https://start.aliyun.com
小插曲:直接换成https://start.aliyun.com后下一步中导入依赖时候依然搜不到nacos等,要退出创建页面重新进一下就好了
选择Spring Web和Nacos Service Discovery依赖
修改boot和alibaba版本
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
</properties>
将插件删除
修改properties为yml,进行配置
server:
port: 8080
spring:
application:
name: nacos-client-a
cloud:
nacos:
server-addr: localhost:8848
username: nacos
password: nacos
删除自动创建的类,修改启动类,跟之前eureka一样
开启服务发现客户端@EnableDiscoveryClient
启动,不指定命名空间默认注册到public里面,不指定分组会注册到DEFAULT_GROUP里面去
再创建一个nacos客户端,注册到另一个命名空间中另一个组去,并修改注册名称
步骤同上,在yml文件中添加属性,namespace后面是命名空间的id,service: user-service #值为注册列表的名字,若不写则默认${spring.application.name}
server:
port: 8081
spring:
application:
name: nacos-client-b
cloud:
nacos:
server-addr: localhost:8848
username: nacos
password: nacos
discovery:
namespace: 582ecb25-d166-4c5f-8802-58171bd6a250
group: A_Group
service: user-service
在a中找b
在a中创建一个Controller
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.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class TestController {
@Autowired
public DiscoveryClient discoveryClient;
@GetMapping("test")
public String doDiscovery(String serviceName){
List<ServiceInstance> instances=discoveryClient.getInstances(serviceName);
System.out.println(instances);
return "OK";
}
}
测试发现,值为空,说明跨命名空间是无法找到的,经测试,跨组也不不能找到
集成openFeign
在b中写好一个方法
在a中添加OpenFeign依赖以及Cloud依赖,Cloud依赖管理
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version> <type>pom</type>
<scope>import</scope>
</dependency>
添加Feign的注解
创建一个接口,添加Feign注解填写value值,对b方法做接口
回到a的Controller,使用testFeign,进行测试
集成gateway(网关)
创建一个spring boot项目,选择以下依赖
修改pom,xml中版本,删除build
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
</properties>
修改properties为yml,输入配置,gateway是开启动态路由,lower是服务名称小写
server:
port: 80
spring:
application:
name: gateway
cloud:
nacos:
server-addr: localhost:8848
username: nacos
password: nacos
discovery:
group: A_Group
namespace: 582ecb25-d166-4c5f-8802-58171bd6a250
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
添加开启服务发现客户端注解
测试