目录
1.1.1 springcloud集成nacos服务注册中心
1.服务注册中心
1.1 nacos服务注册与发现
服务中集成nacos的方式有多种,常用的有springboot和springcloud两种,官网也有很多示例,这里只记录springcloud方式
1.1.1 springcloud集成nacos服务注册中心
1. 引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
2. 配置
springboot一般使用application.yml文件
springcloud需要使用 bootstrap.yml文件
server:
port: 9001
spring:
application:
name: nacos-base
main:
allow-bean-definition-overriding: true
cloud:
nacos:
discovery:
server-addr: nacos_ip:port # nacos 服务ip和端口
namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
group: huachun
config:
server-addr: nacos_ip:port # nacos 服务ip和端口
file-extension: yaml
namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
group: huachun
启动服务后查看nacos 服务管理,此时nacos-base已经被注册
2.服务配置中心
2.1 nacos服务配置中心
3.远程调用
3.1 openfeign远程调用
1. 引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
2. 配置
server:
port: 9005
spring:
application:
name: feign-base
main:
allow-bean-definition-overriding: true
cloud:
nacos:
discovery:
server-addr: nacos_ip:port # nacos 服务ip和端口
namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
group: huachun
config:
server-addr: nacos_ip:port # nacos 服务ip和端口
file-extension: yaml
namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
group: huachun
3.启动注解
@SpringBootApplication
@EnableFeignClients
public class FeignBaseApplicationStart {
public static void main(String[] args) {
SpringApplication.run(FeignBaseApplicationStart.class, args);
}
}
说明:需要添加@EnableFeignClients注解启动feign
4.定义接口
@FeignClient(value = "nacos-base", path = "/nb")
public interface FeignBaseService {
@GetMapping("/hello/{str}")
String hello(@PathVariable("str") String str);
}
说明:
@FeignClient: value 指定访问服务 path 指定接口路径
nacos-base服务中接口
@RestController
@RequestMapping("/nb")
public class NacosBaseController {
@Autowired
private NacosBaseService nacosBaseService;
@GetMapping("/hello/{str}")
public String hello(@PathVariable("str") String str) {
return nacosBaseService.hello(str);
}
}
5.编写控制器
@RestController
@RequestMapping("/fb")
public class FeignBaseController {
@Autowired
private FeignBaseService feignBaseService;
@GetMapping("/hello/{str}")
public String hello(@PathVariable("str") String str) {
return feignBaseService.hello(str);
}
}
4.网关服务
4.1 gateway网关服务
4.1.1 引入依赖
<!-- 配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 注册中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 网关依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- bootstrap依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- 负载均衡依赖 nacos兼容feign,feign集成ribbon,默认实现负载均衡;nacos不兼容springcloud gateway自带的ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
版本信息
<alibaba-cloud.version>2021.1</alibaba-cloud.version>
<lombok.version>1.18.8</lombok.version>
<!-- 注意版本冲突,如果使用3.1.0版本不能使用lb://service_name方式路由 -->
<spring-cloud.version>3.0.0</spring-cloud.version>
4.1.2 配置
spring:
cloud:
nacos:
discovery:
server-addr: nacos_ip:port # 自己nacos服务的ip和端口号
namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
group: huachun
config:
server-addr: nacos_ip:port # 自己nacos服务的ip和端口号
file-extension: yaml
namespace: 0af8ec8f-2345-4ade-9bd4-3ffa26c7023a
group: huachun
enabled: true
nacos配置中心配置
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: abc #当前路由标识,要求唯一 (默认值uuid,一般不用,需要自定义)
uri: lb://nacos-base #请求最终要被转发的地址
#uri: http://127.0.0.1:9001
order: 1 #路由优先级,数字越小,优先级越高
predicates: #断言 判断条件,返回值是boolean 转发请求要返回的条件 (可以写多个)、
- Path=/nb/** #当请求路径满足path指定的规则时,此路由信息才会正常转发
# filters: #过滤器(在请求传递过程中,对请求做一些手脚)
# - StripPrefix=1 # 在请求转发之前去掉一层路径
说明:
uri:
lb: 表示用负载均衡方式访问服务
nacos-base: 表示目标访问服务的服务名
predicates:断言 (可以参考官网,示例太多)
原文参考 :Spring Cloud Alibaba入门十二:Spring Cloud Gateway的使用_清风雪的技术博客_51CTO博客g
官网参考:Spring Cloud Gateway
4.1.3 注意事项
1.注意版本信息
2.新手可以参考我的依赖信息搭建
4.1.4 常见问题
1. 503 Service Unavailable
请注意查看是否版本冲突,我出现这个问题原因就是版本冲突,另外查看是否少了依赖