It is a memo when studying the contents written on the following site.
Eureka Client
Basically, almost no settings are required.
If spring-cloud-starter-netflix-eureka-client
is included in the dependency in gradle etc.
AutoConfigure works and sets it up
build.gradle(Excerpt from dependencies only)
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')
}
Specify the Eureka server
application.yml
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
Also, the application name is spring.application.name
.
Other than the above, basically default is OK
If you want to change it, the default value is set below, so customization is required (specify in ʻeureka.instance. * `When setting in application.yml)
Eureka Server
Added spring-cloud-starter-netflix-eureka-server
to dependencies
AutoConfigure works by specifying @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
When started, the management console is opened by accessing http: // localhost: 8761
.
I have a client that specifies this server in ʻeureka.client.serviceUrl.defaultZone` in application.yml
Shown on the console if it is running
Ribbon
Client load balancer running over HTTP and TCP
Used when the client calls the client, etc.
Each Ribbon has a name and is set in RibbonClientConfiguration
Ribbon allows you to specify the service name directly in the URL, such as http: // hoge-service / api.
By introducing Ribbon, it is possible to describe the URL of the service name in RestTemplate, which is the REST API of Spring.
ʻOrg.springframework.cloud: spring-cloud-starter-netflix-ribbon` added to dependency
If you want to set RibbonClient, do as follows
@Configuration
@RibbonClient(name = "custom", configuration = CustomConfiguration.class )
public class RibbonConfiguration {
}
The contents of Custom Configuration will be overwritten with the contents set in RibbonClientConfiguration
Other settings related to Ribbon can be overwritten by setting the following beans.
↓ It looks like the following
@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();
}
}
If you want to set default for all Ribbon Clients Use 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 manages Client information using Ribbon which overrides the above settings **
Zuul Zuul is a library positioned as an edge service that stands between each service and the client and acts like a gatekeeper of the system. There are various uses such as security check before calling a service, data conversion, single sign-on, URL rewriting, etc. Since it can be used as a reverse proxy role, by exposing only the service to which Zuul is applied to the outside You can prevent direct access to other services
ʻOrg.springframework.cloud: spring-cloud-starter-netflix-zuul` added to dependency Enabled by applying @EnableZuulProxy to the SpringBoot main class
@EnableDiscoveryClient
@EnableZuulProxy
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Can be routed with application.yml The following example specifies to forward requests coming in XXX / apples / ** to apple
application.yml
zuul:
routes:
apple: /apples/**
Spring Cloud Netflix with Spring Boot 2.0 -Hystrix- Spring Special Study Group Report (Part 2)
Recommended Posts