SpringCloud学习笔记-Eureka基础

Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的微服务治理功能.

服务端

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"
}

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

在启动类上添加注解 @EnableEurekaServer.

客户端

settings.gradle

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"
}

application.yml

只展示与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/

启动类添加注解 @EnableDiscoveryClient@EnableEurekaClient

Notes

❶ 1.5.X版本可以将此设置为 ${spring.cloud.client.ipAddress},2.X对应的是 ${spring.cloud.client.ip-address},此处设置默认值 127.0.0.1是为了兼容版本.它们对应的源码类全路径是 org.springframework.cloud.client.HostInfoEnvironmentPostProcessor

eureka.instance.instance-id是在eureka上 展示的数据,真实访问的IP为 eureka.instance.ip-address,此处为了保持一致,因此直接引用了 ${eureka.instance.ip-address}

  • Spring Cloud 是套件,不是单独的一个项目,因此版本号采用命名的方式,这也是为什么gradle中使用插件 dependency-management的原因.可以参考SpringBoot及SpringCloud版本管理(Gradle版本)
  • 一般情况下不用配置 spring.cloud.inetutils,这个主要是解决在使用docker启动时将服务注册在 docker0网卡上导致服务间通信阻塞问题.

Original: https://www.cnblogs.com/yw0219/p/11091506.html
Author: 舒山
Title: SpringCloud学习笔记-Eureka基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/541416/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • nginx 伪静态跳转

    301跳转要带着 permanent; 302 不带permanent rewrite ^.*$ https://www.hahaha.com/$1 permanent; Orig…

    Java 2023年5月30日
    075
  • spring接收json字符串的两种方式

    一、前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到。自己测试接口时使用pos…

    Java 2023年6月5日
    089
  • SpringCloud微服务实战——搭建企业级开发框架(三十三):整合Skywalking实现链路追踪

    Skywalking是由国内开源爱好者吴晟(原OneAPM工程师)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋…

    Java 2023年6月9日
    076
  • CORS(跨域资源共享)笔记

    0.前言 CORS(Cross-Origin Resource Sharing)是一个用于处理跨域问题的W3C标准,本文将介绍什么是跨域,引起跨域的同源策略,什么是CORS,COR…

    Java 2023年6月9日
    090
  • SpringBoot整合Redis–RedisTemplate

    1、导入依赖 org.springframework.boot spring-boot-starter-data-redis 2、编写配置文件 spring: redis: hos…

    Java 2023年6月8日
    085
  • 神秘的backlog参数与TCP连接队列

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介 这要从一次压测项目说起,那是我们公司的系统与另几家同行公司的系统做性能比拼,性能数据会直接影响…

    Java 2023年6月7日
    098
  • 20年5月面试汇总

    redis: 数据结构 redis的五种基本数据结构: string、hash、set、zset、list、HyperLogLog…. 补充:BloomFilter等 …

    Java 2023年6月8日
    079
  • 经典实验–电话号码薄

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月15日
    076
  • axios二次封装

    查看代码 import axiox from ‘axios’ import store from "@/store"; import utils from &q…

    Java 2023年6月8日
    098
  • 腾讯茹炳晟:你可能对研发效能的度量有误解

    作者|茹炳晟 来源|InfoQ 一、度量失败的案例 1. 历史上度量失败的案例 这张是英国街头房子的照片,这个房子非常有意思,它的窗户都被石头封掉了。这就是非常典型的由于度量指标选…

    Java 2023年5月30日
    091
  • 一种简洁的Spring Bean选择器模式

    在日常开发中,我们常常会遇到一个接口有多个实现类时,需要选择合适的实现类的情况。 最简单的方法是写一个选择器,用if-else来判断使用哪个实现类的实例,比如: if(条件1){ …

    Java 2023年6月15日
    077
  • 线程中的sleep方法

    线程中的sleep方法 线程中的sleep方法 一、关于线程的sleep方法 二、sleep让当前线程进入休眠 三、终止线程的休眠interrupt() 一、关于线程的sleep方…

    Java 2023年6月9日
    0100
  • 从零开始实现放置游戏(五)——实现后台管理系统(3)实现切面日志

    上一章,我们初步实现了后台管理系统的增删查改功能。然而还有很多功能不完善。这一章,我们先把系统日志搭建起来,不管是生产问题排查,还是方便开发调试,日志都是必不可少的核心功能。所谓切…

    Java 2023年6月5日
    093
  • [IDEA]Java:“程序包XXX不存在”问题的三种解决方案

    三种方案 01 出现jar包找不到的问题,首先有可能是项目依赖中有些jar没有下载完整而mvn idea:idea这个命令可以检查并继续下载未下载完整的依赖jar。在命令行输入mv…

    Java 2023年5月29日
    095
  • 在OAuth 2.0模式下使用Spring Cloud Gateway

    Spring Cloud Gateway主要用于以下角色之一: OAuth Client *OAuth Resource Server 1 Spring Cloud Gateway…

    Java 2023年6月7日
    091
  • java中如何将函数作为参数传递呢?

    函数简介: 函数(function)的定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同,传统定义是从运动变化的观点出发,而近代定义是从集合、映射…

    Java 2023年6月15日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球