SpringCloud study notes -Eureka basis

Spring Cloud Eureka is part of the Spring Cloud Netflix Micro suite of services, which is based Netflix Eureka made a second package, is responsible for complete service management function micro-micro services architecture.

Server

rely

settings.gradle

pluginManagement {
    resolutionStrategy {
    }
    repositories {
        maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
        gradlePluginPortal()
    }
}
rootProject.name = 'swb-infra-eureka'

build.gradle

buildscript {
    ext {
        //定义一个变量,统一规定springboot的版本
        springBootVersion = '2.0.1.RELEASE'
    }

}
plugins {
    id "idea"
    id "java"
    id 'org.springframework.boot' version "2.0.1.RELEASE"
    id 'io.spring.dependency-management' version "1.0.8.RELEASE"
}

group = 'com.swb'
version = '0.0.1-SNAPSHOT'

description = """swb-infra-eureka"""

sourceCompatibility = 1.8
targetCompatibility = 1.8
tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}
repositories {
    maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.boot:spring-boot-starter-parent:${springBootVersion}"
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Finchley.SR1'
    }
}

dependencies {
    compile "org.springframework.cloud:spring-cloud-starter-netflix-eureka-server"
}

Profiles

application.yml

spring:
  application:
    name: swb-infra-eureka
  profiles:
    active: ${ACTIVE_PROFILE:default}
  cloud:
    inetutils:
      # 首选的网络地址,支持JAVA正则表达式
      preferred-networks: ${CLOUD_INETUTILS_PREFERRED_NETWORKS:127.0.0.1}
      # 忽略的网卡名,支持JAVA正则表达式,这在使用docker启动时很有用,解决多网卡注册问题.
      ignored-interfaces: docker0, veth.*
server:
  port: 19100
  servlet:
    context-path: /
eureka:
  # lease-expiration-duration-in-seconds: 20
  # 生产环境中官方是不建议修改默认配置,因为那样会破坏 eureka server 的保护模式
  server:
    # 关闭保护模式(生产环境不建议修改)
    enable-self-preservation: false
    # 清理间隔(默认是60 * 1000 毫秒)(生产环境不建议修改)
    eviction-interval-timer-in-ms: 10000
    # Eureka 拉取服务列表时间(默认:30秒)(生产环境不建议修改)
    remote-region-registry-fetch-interval: 5
  client:
    # eureka server 没必要自己把自己注册上去,所以可以设置成 false
    register-with-eureka: false
    # 是否从Eureka Server上获取注册信息,默认为true,此处建议修改成 false (单机设置的意义不大,如果设置成 true 启动会去抓取一次注册表,获取不到更新缓存就会出错(该错误不影响 eureka 正常使用))
    fetch-registry: false
    service-url:
      # 默认注册地址 this.serviceUrl.put("defaultZone", "http://localhost:8761/eureka/");
      # 划重点:此处的 defaultZone 千万别写成 default-zone
      defaultZone: http://${EUREKA_IP:127.0.0.1}:${server.port}/eureka/
      # 从 Eureka 服务器端获取注册信息的间隔时间(默认:30秒)
    registry-fetch-interval-seconds: 5

Open registration services

Add annotations on the startup class @EnableEurekaServer.

Client

rely

settings.gradle

slightly

build.gradle

buildscript {
    ext {
        //定义一个变量,统一规定springboot的版本
        springBootVersion = '2.0.1.RELEASE'
    }
    repositories {
        maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
    }
}

plugins {
    id "org.springframework.boot" version "2.0.1.RELEASE"
    id "io.spring.dependency-management" version "1.0.8.RELEASE"
    id "idea"
    id "java"
}

group = 'com.XXX'
version = '0.0.1-SNAPSHOT'

description = """XXX"""

sourceCompatibility = 1.8
targetCompatibility = 1.8

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}
// 实时刷新依赖
configurations.all {
    resolutionStrategy {
        cacheChangingModulesFor 0, 'seconds'
        cacheDynamicVersionsFor 0, 'seconds'
    }
}

repositories {
    maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
}

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Finchley.SR1'
    }
}

dependencies {
    compile "org.springframework.cloud:spring-cloud-starter-netflix-eureka-client"
}

Configuration

application.yml

Show only configuration with eureka

eureka:
  instance:
    ip-address: ${EUREKA_INSTANCE_IP:${spring.cloud.client.ip-address:127.0.0.1}} #❶
    prefer-ip-address: true
    instance-id: ${eureka.instance.ip-address}:${server.port}:${spring.application.name}#❷
  client:
    serviceUrl:
      defaultZone: http://${EUREKA_IP:${spring.cloud.client.ip-address:127.0.0.1}}:19100/eureka/

start up

Start class add annotations @EnableDiscoveryClientor@EnableEurekaClient

Notes

❶ 1.5.X this version can be set ${spring.cloud.client.ipAddress}, 2.X corresponds ${spring.cloud.client.ip-address}here to set the default value 127.0.0.1for compatibility version thereof corresponding to the full path of the source classorg.springframework.cloud.client.HostInfoEnvironmentPostProcessor

eureka.instance.instance-idis on the eureka display data, IP access is real eureka.instance.ip-address, here to be consistent, so direct reference${eureka.instance.ip-address}

Tips

  • Spring Cloud is a suite, not a single project, so named using the version number of ways, which is why the use of plug-in gradle dependency-managementreasons. Refer SpringBoot and SpringCloud version management (Gradle version)
  • Under normal circumstances no configuration spring.cloud.inetutils, this is mainly to resolve when starting the service using a docker will be registered in docker0lead blocking communication between the service problem on the card.

reference

Together to learn Spring Cloud (F version) | First: recognize Eureka

SpringCloud version

https://plugins.gradle.org/plugin/io.spring.dependency-management

https://stackoverflow.com/questions/38221227/gradle-configuration-of-pluginrepository

https://www.coder4.com/archives/5884

Guess you like

Origin www.cnblogs.com/yw0219/p/11091506.html