新建Eureka-service模块
引入依赖、添加配置
org.springframework.boot spring-boot-starter-weborg.springframework.cloud spring-cloud-starter-netflix-eureka-serverorg.springframework.boot spring-boot-devtoolsruntime true org.projectlombok lomboktrue org.springframework.boot spring-boot-starter-testtest
server:
port: 9000 #该 Module 的端口号
eureka:
instance:
hostname: localhost #eureka服务端的实例名称,
client:
register-with-eureka: false #false表示不向注册中心注册自己。
fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机版服务注册中心
启动成功后访问http://localhost:9000/eureka/
1.2 gateway-server新建gateway-server模块
引入依赖
org.springframework.cloud spring-cloud-starter-gatewayorg.springframework.cloud spring-cloud-starter-netflix-eureka-client
将gateway服务注册到Eureka
server:
port: 8080
spring:
application:
name: space-gateway
eureka:
instance:
prefer-ip-address: true #是否使用ip地址注册
instance-id: ${spring.cloud.client.ip-address}:${server.port} #ip:port
client:
service-url:
defaultZone: http://localhost:9000/eureka/
二、服务路由
只记录了两种路由方式
2.1 ip路由修改yml文件
spring:
application:
name: space-gateway
cloud:
gateway:
routes:
- id: space-uploadfile # 路由ID 唯一
uri: http://localhost:8081/ # 目标URI,路由到微服务的地址
#路由规则
predicates: # 断言(判断条件)
- Path=/uploadFile
@Component
public class AccessFilter implements GlobalFilter, Ordered {
private Logger log = LoggerFactory.getLogger(AccessFilter.class);
@Override
public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
//获取请求头中的token
//getFirst()并不是获取第一个,不管是第几个都用getFirst()
String token = exchange.getRequest().getHeaders().getFirst("token");
if (token == null){
log.warn("token is null...");
ServerHttpResponse response = exchange.getResponse();
response.getHeaders().add("Content-Type","application/json;charset=utf-8");
response.setStatusCode(HttpStatus.UNAUTHORIZED);
String message = "{"message":"" + HttpStatus.UNAUTHORIZED.getReasonPhrase() + ""}";
DataBuffer buffer = response.bufferFactory().wrap(message.getBytes());
//返回错误信息
return response.writeWith(Mono.just(buffer));
}
log.info("token is ok...");
//通过放行
return chain.filter(exchange);
}
@Override
public int getOrder() {
return 0;
}
}



