(36 명의) 봄 구름 마이크로 서비스 아키텍처 b2b2c 전자 상거래 플랫폼 -SpringCloud 게이트웨이의 자바 버전

SpringCloud 게이트웨이에서 라우팅 로케이터 역할은 우리가 SpringCloud 게이트웨이, 어떻게 작동하는지 라우팅 로케이터에있는 소스 코드를 보면, 연결 요청을 찾는 것입니다.

A, RouteLocator
CachingRouteLocator, CompositeRouteLocator, RouteDefinitionRouteLocator 포함 SpringCloud 게이트웨이 로케이터 행은, 그들의 관계, GatewayAutoConfiguration 코드에서 알 수

public RouteLocator routeDefinitionRouteLocator(GatewayProperties properties,
                                   List<GatewayFilterFactory> GatewayFilters,
                                   List<RoutePredicateFactory> predicates,
                                   RouteDefinitionLocator routeDefinitionLocator) {
  return new RouteDefinitionRouteLocator(routeDefinitionLocator, predicates, GatewayFilters, properties);
}
@Bean
@Primary
//TODO: property to disable composite?
public RouteLocator cachedCompositeRouteLocator(List<RouteLocator> routeLocators) {
  return new CachingRouteLocator(new CompositeRouteLocator(Flux.fromIterable(routeLocators)));
}

CachingRouteLocator는 CompositeRouteLocator는 CachingRouteLocator의 getRoutes 방법입니다 요청이 루트 항목 유형을 통해 획득, RouteDefinitionRouteLocator 유형을 포함, CompositeRouteLocator 포함되어 있습니다. 이 유형은 또한 ZK 노드 변경 이벤트를 듣고 지원하는 동시에, 캐시를 플러시

二, RouteDefinitionLocator

RouteDefinitionRouteLocator 위치 데이터 RouteDefinition RouteDefinitionLocator 로케이터의 정의에 의해 획득된다.

DiscoveryClientRouteDefinitionLocator, DiscoveryClientRoutDefinitionRepository, PropertiesRouteDefinitionLocator : RouteDefinitionLocator의 세 가지 유형이 있습니다.

DiscoveryClientRoutDefinitionRepository가 DiscoveryClientRouteDefinitionLocator 로케이터를 사용하며,,, PropertiesRouteDefinitionLocator 구성 파일에서 정보를 라우팅하는 레지스트리에서 라우팅 정보를 얻는 것입니다.

추천

출처blog.csdn.net/vvx0206/article/details/93965417