当前位置: 代码迷 >> 综合 >> Spring Boot + Eureka 微服务搭建
  详细解决方案

Spring Boot + Eureka 微服务搭建

热度:98   发布时间:2023-09-28 22:37:13.0

什么是Eureka,什么是服务注册与发现

  • Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。
  • Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。
  • Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。
  • Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

搭建Eureka-Server服务注册中心
Spring Boot + Eureka 微服务搭建

开发工具使用 IDEA 这个不做解释,点击 File > new > Project… 创建一个新的项目。
Spring Boot + Eureka 微服务搭建
选择 Gradle 构建工具,不习惯的可以使用其他的方式, SDK 选择的 java 1.8 下面的语言选择的Kotlin/JVM ,因为我使用 Kotlin 开发,然后下一步。
Spring Boot + Eureka 微服务搭建
填写相关信息,然后点击 Finish 完成创建。
Spring Boot + Eureka 微服务搭建
配置 Gradle 需要加载的依赖项,以及映射地址

buildscript {
    repositories {
    // 阿里镜像maven{
     url "http://maven.aliyun.com/nexus/content/groups/public/"}mavenCentral()jcenter()}dependencies {
    classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: SPRING_BOOT_VERSIONclasspath group: 'org.jetbrains.kotlin', name: 'kotlin-gradle-plugin', version: KOTLIN_VERSIONclasspath group: 'org.jetbrains.dokka', name: 'dokka-gradle-plugin', version: DOKKA_VERSIONclasspath group: 'com.google.protobuf', name: 'protobuf-gradle-plugin', version: PROTOBUF_GRADLE_VERSION// ssh插件, 用于部署classpath 'org.hidetake:gradle-ssh-plugin:2.10.1'}
}apply plugin: 'kotlin'
apply plugin: 'org.jetbrains.dokka'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'group 'org.example'
version '1.0-SNAPSHOT'sourceCompatibility = 1.8repositories {
    maven{
     url "http://maven.aliyun.com/nexus/content/groups/public/"}mavenCentral()jcenter()
}dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"testCompile group: 'junit', name: 'junit', version: '4.12'// kotlin 依赖compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8',  version: KOTLIN_VERSIONcompile group: 'org.jetbrains.kotlin', name: 'kotlin-reflect',      version: KOTLIN_VERSION//// spring boot 依赖providedCompile group:'org.springframework.boot',   name:'spring-boot-starter-tomcat',      version: SPRING_BOOT_VERSION// spring cloud 依赖compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka-server',     version: SPRING_CLOUD_VERSION
}compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}dependencyManagement {
    imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${
      SPRING_CLOUD_DEPENDENCIES}"}
}

按照上面的配置发现没有版本号,版本号统一配置在 gradle.properties 文件中。
Spring Boot + Eureka 微服务搭建

# https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
SPRING_BOOT_VERSION = 2.2.2.RELEASE
# https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-jdk8
KOTLIN_VERSION = 1.3.61
# https://mvnrepository.com/artifact/org.jetbrains.dokka/dokka-gradle-plugin
DOKKA_VERSION=0.9.16
# https://mvnrepository.com/artifact/com.google.protobuf/protobuf-gradle-plugin
PROTOBUF_GRADLE_VERSION = 0.8.10
# https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server
SPRING_CLOUD_VERSION = 1.4.7.RELEASE
# https://repo.spring.io/milestone
SPRING_CLOUD_DEPENDENCIES = Hoxton.RELEASE

Spring Boot + Eureka 微服务搭建


import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.runApplication
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer/*** 配置用用** @author wx*/
@EnableEurekaServer
@SpringBootApplication
open class CloudEurekaApp : SpringBootServletInitializer() {
    /*** 配置应用** @param builder 应用builder对象* @return 配置好的应用builder对象*/override fun configure(builder: SpringApplicationBuilder): SpringApplicationBuilder {
    return builder.sources(CloudEurekaApp::class.java)}} // Class CloudEurekaApp/*** Web应用入口** @param args 命令行参数*/
fun main(args: Array<String>) {
    runApplication<CloudEurekaApp>(*args)return
}

创建一个主程序入口,配置 @EnableEurekaServer 注解声明 是 EurekaServer 服务。
Spring Boot + Eureka 微服务搭建

添加 yml 配置文件,发现我建了三个 yml 文件,我这里区分了开发环境和生产环境,如果你那里不需要,只建立一个就可以了

主yml:

eureka:client:# 仅作为服务器,不作为客户端register-with-eureka:                   false# 无需注册自身fetch-registry:                         falsespring:application:name:                                   cloud-centerjmx:default-domain:                         cloud-centerserver:servlet:application-display-name:               云中心(服务注册)

开发 dev :

eureka:client:service-url:defaultZone:                          http://127.0.0.1:${server.port}/eureka/#开发环境
server:port:                                     8761

生产环境 prod:

eureka:client:service-url:defaultZone:                          http://127.0.0.1:${server.port}/${spring.application.name}/eureka/#开发环境
server:port:                                     8080

准备运行:
Spring Boot + Eureka 微服务搭建
打开设置要运行的环境 dev :
Spring Boot + Eureka 微服务搭建

右键点击程序入口主类选择运行:
Spring Boot + Eureka 微服务搭建

开发环境的端口号为8761 运行在本机上 ,地址: http://localhost:8761

Spring Boot + Eureka 微服务搭建

只是运行起来了还没有加入服务,下一篇介绍怎么加入服务完成负载均衡。下一篇见。

源码下载

  相关解决方案