1. 注意:
nacos服务器版本,springboot,springcloud 和springcloudAliibaba 版本一定要对应
否则项目报错或者注册不到nacos上
1. pom里加入cloud和cloudalibaba的 管理和 服务发现 的依赖
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.2.7.RELEASE
pom
import
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
jsr305
com.google.code.findbugs
HdrHistogram
org.hdrhistogram
2.启动类上加注解,开启服务发现
@EnableDiscoveryClient
3. 配置文件加nacos的注册地址
server.port=8092
spring.application.name=order-service
#nacos服务发现中心
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#spring.cloud.nacos.config.server-addr=127.0.0.1:8848
management.endpoints.web.exposure.include=*
#spring.cloud.nacos.config.file-extension=properties
# true为注册服务到nacos上,false为不注册
spring.cloud.service-registry.auto-registration.enabled=true
nacos 版本 2.0.3(windows)
默认是 集群启动
发现启动报错
改成单机模式启动
startup.cmd -m standalone
上面给出了nacos控制台地址:
http://192.168.60.84:8848/nacos/index.html
先启动子项目:
说明注册成功,
然后登入 nacos控制台 ,发现服务注册上了
全部的pom依赖如下:
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.9.RELEASE
com.authresourcs
order-service
0.0.1-SNAPSHOT
order-service
Demo project for Spring Boot
1.8
Hoxton.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.2.7.RELEASE
pom
import
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
jsr305
com.google.code.findbugs
HdrHistogram
org.hdrhistogram
spring-milestones
Spring Milestones
https://repo.spring.io/milestone
false
然后配置一个网关服务:
cloud版本和上面的一样:
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.9.RELEASE
com.cloudalibaba
gateway
0.0.1-SNAPSHOT
gateway
Demo project for Spring Boot
1.8
2.2.1.RELEASE
Hoxton.SR6
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-gateway
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.projectlombok
lombok
1.18.8
provided
org.springframework.cloud
spring-cloud-starter-gateway
org.springframework.cloud
spring-cloud-starter-openfeign
jsr305
com.google.code.findbugs
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
启动类代码如下:
package com.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class GatewayServiceApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayServiceApplication.class, args);
}
}
配置文件: application.yml
server:
port: 9999
spring:
application:
# 应用名称
name: gateway-service
main:
allow-bean-definition-overriding: true
profiles:
# 当前环境对应的 profile name-active 为读取的配置文件
active: develop
cloud:
nacos:
# true为注册服务到nacos上,false为不注册
discovery:
server-addr: localhost:8848
#此处的namespace是discovery服务对应的命名空间,与config不同
#namespace: b7d26021-28b5-42d1-b36d-737a818a2146
config:
# 如果不想使用 Nacos 进行配置管理,设置为 false 即可
enabled: false
# Nacos Server 地址
server-addr: 127.0.0.1:8848
# 组,默认为 DEFAULT_GROUP
group: DEFAULT_GROUP
# 配置内容的数据格式,默认为 properties
file-extension: yaml
# 指定命名空间,默认为public
namespace: dev_space
# 将网关也 注册到nacos 上
service-registry:
auto-registration:
enabled: true
gateway:
discovery:
locator:
#表示将请求路径的服务名配置改成小写 因为服务注册的时候,向注册中心注册时将服务名转成大写的了
lowerCaseServiceId: true
#表示gateway开启服务注册和发现功能,
#并且spring cloud gateway自动根据服务发现为每一个服务创建了一个router,这个router将以服务名开头的请求路径转发到对应的服务
enabled: true
httpclient:
response-timeout: 5000
connect-timeout: 5000
ribbon:
ReadTimeout: 120000
ConnectTimeout: 120000
然后进入nacos控制台进行查看:
网关的配置如下:
spring:
cloud:
gateway:
routes:
- id: nacos-server
uri: lb://nacos-server #代表从注册中心获取服务,且以lb(负载均衡)的方式转发
predicates: #断言
- Path=/nacos-server/** #表示将以/provider/**开头的请求转发到uri为lb://nacos-server的地址上
filters:
- StripPrefix=1 #1为去掉path的/provider
- id: pay-service
uri: lb://pay-service #代表从注册中心获取服务,且以lb(负载均衡)的方式转发
predicates: #断言
- Path=/pay-service/** #表示将以/provider/**开头的请求转发到uri为lb://pay-service的地址上
filters:
- StripPrefix=1 #1为去掉path的/pay-service
- id: order-service
uri: lb://order-service #代表从注册中心获取服务,且以lb(负载均衡)的方式转发
predicates: #断言
- Path=/order-service/** #表示将以/provider/**开头的请求转发到uri为lb://order-service的地址上
filters:
- StripPrefix=1 #1为去掉path的/order-service
在浏览器输入:
http://localhost:9999/order-service/order/hello
说明网关转发成功!