[JAVA] Mémo Spring Cloud Netflix

introduction

Ceci est un mémo lorsque j'ai étudié le contenu écrit sur le site suivant.

Spring Cloud Netflix

Eureka Client

Éléments de réglage

Fondamentalement, presque aucun paramètre n'est requis. Si spring-cloud-starter-netflix-eureka-client est inclus dans la dépendance dans gradle etc. AutoConfigure fonctionne et le configure

build.gradle(Extrait de dépendances uniquement)


dependencies {
	implementation('org.springframework.boot:spring-boot-starter-web')
	implementation('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
	testImplementation('org.springframework.boot:spring-boot-starter-test')
}

Spécifiez le serveur Eureka

application.yml


eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

De plus, le nom de l'application est «spring.application.name». Autre que ce qui précède, la valeur par défaut est OK Si vous souhaitez la modifier, la valeur par défaut est définie ci-dessous, donc une personnalisation est requise (spécifiez dans ʻeureka.instance. * `Lors de la définition dans application.yml)

Eureka Server

Ajout de spring-cloud-starter-netflix-eureka-server aux dépendances AutoConfigure fonctionne en spécifiant @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}

application.yml


server:
  port: 8761

Au démarrage, la console de gestion s'ouvre en accédant à http: // localhost: 8761. Il existe un client qui spécifie ce serveur dans ʻeureka.client.serviceUrl.defaultZone` dans application.yml S'affiche sur la console si elle est en cours d'exécution

ass.JPG

Ribbon Équilibreur de charge client fonctionnant sur HTTP et TCP Utilisé lorsque le client appelle le client, etc. Chaque ruban a un nom et est défini dans RibbonClientConfiguration Le ruban vous permet de spécifier le nom du service directement dans l'URL, tel que http: // hoge-service / api. En introduisant Ribbon, il est possible de décrire l'URL du nom du service dans RestTemplate, qui est l'API REST de Spring.

comment utiliser

ʻOrg.springframework.cloud: spring-cloud-starter-netflix-ribbon` ajouté à la dépendance

Si vous souhaitez définir RibbonClient, procédez comme suit

@Configuration
@RibbonClient(name = "custom", configuration = CustomConfiguration.class )
public class RibbonConfiguration {

}

Le contenu de la configuration personnalisée sera écrasé par le contenu défini dans RibbonClientConfiguration D'autres paramètres liés au ruban peuvent être écrasés en définissant les beans suivants.

sample.jpg

↓ Cela ressemble à ce qui suit

@Configuration
protected static class FooConfiguration {
	@Bean
	public ZonePreferenceServerListFilter serverListFilter() {
		ZonePreferenceServerListFilter filter = new ZonePreferenceServerListFilter();
		filter.setZone("myTestZone");
		return filter;
	}

	@Bean
	public IPing ribbonPing() {
		return new PingUrl();
	}
}

Si vous souhaitez définir la valeur par défaut pour tous les clients de ruban Utiliser defaultConfiguration


@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class)
public class RibbonClientDefaultConfigurationTestsConfig {

	public static class BazServiceList extends ConfigurationBasedServerList {
		public BazServiceList(IClientConfig config) {
			super.initWithNiwsConfig(config);
		}
	}
}

@Configuration
class DefaultRibbonConfig {

	@Bean
	public IRule ribbonRule() {
		return new BestAvailableRule();
	}

	@Bean
	public IPing ribbonPing() {
		return new PingUrl();
	}

	@Bean
	public ServerList<Server> ribbonServerList(IClientConfig config) {
		return new RibbonClientDefaultConfigurationTestsConfig.BazServiceList(config);
	}

	@Bean
	public ServerListSubsetFilter serverListFilter() {
		ServerListSubsetFilter filter = new ServerListSubsetFilter();
		return filter;
	}

}

** Eureka gère les informations du client à l'aide du ruban, qui remplace les paramètres ci-dessus **

Zuul Zuul est une bibliothèque positionnée comme un service de périphérie qui se situe entre chaque service et le client et agit comme un gardien du système. Il existe diverses utilisations telles que le contrôle de sécurité avant d'appeler le service, la conversion de données, l'authentification unique, la réécriture d'URL, etc. Puisqu'il peut être utilisé comme rôle de proxy inverse, en exposant uniquement le service auquel Zuul est appliqué à l'extérieur Peut empêcher l'accès direct à d'autres services

Comment utiliser

ʻOrg.springframework.cloud: spring-cloud-starter-netflix-zuul` ajouté à la dépendance Activé en appliquant @EnableZuulProxy à la classe principale SpringBoot

@EnableDiscoveryClient
@EnableZuulProxy
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

Peut être acheminé avec application.yml L'exemple suivant spécifie de transférer les demandes provenant de XXX / apples / ** vers apple

application.yml


zuul:
  routes:
    apple: /apples/**

Site de référence

Spring Cloud Netflix avec Spring Boot 2.0 -Hystrix- Rapport du groupe d'étude spécial du printemps (partie 2)

Recommended Posts

Mémo Spring Cloud Netflix
Microservices dans Spring Cloud
Sortie de la démo Spring Cloud Stream
[Java] [Spring] Spring Boot 1.4-> 1.2 Note de rétrogradation
Note
Note
Authentification Oauth2 avec Spring Cloud Gateway
Google Cloud Platform avec Spring Boot 2.0.0
Intégration du serveur de configuration dans Spring Cloud Config
Expliquons en détail Spring Cloud Gateway
Prise en charge des tampons de protocole pour Spring Cloud Stream
Configurer des microservices avec Spring Cloud (4): API Gateway