Spring Boot + Eureka 微服务搭建

4 篇文章 0 订阅
2 篇文章 0 订阅

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

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

搭建Eureka-Server服务注册中心
在这里插入图片描述

开发工具使用 IDEA 这个不做解释,点击 File > new > Project… 创建一个新的项目。
在这里插入图片描述
选择 Gradle 构建工具,不习惯的可以使用其他的方式, SDK 选择的 java 1.8 下面的语言选择的Kotlin/JVM ,因为我使用 Kotlin 开发,然后下一步。
在这里插入图片描述
填写相关信息,然后点击 Finish 完成创建。
在这里插入图片描述
配置 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_VERSION
        classpath group: 'org.jetbrains.kotlin', name: 'kotlin-gradle-plugin', version: KOTLIN_VERSION
        classpath group: 'org.jetbrains.dokka', name: 'dokka-gradle-plugin', version: DOKKA_VERSION
        classpath 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.8

repositories {
    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_VERSION
    compile 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 文件中。
在这里插入图片描述

# 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

在这里插入图片描述


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 服务。
在这里插入图片描述

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

主yml:

eureka:
  client:
    # 仅作为服务器,不作为客户端
    register-with-eureka:                   false
    # 无需注册自身
    fetch-registry:                         false

spring:
  application:
    name:                                   cloud-center
  jmx:
    default-domain:                         cloud-center

server:
  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

准备运行:
在这里插入图片描述
打开设置要运行的环境 dev :
在这里插入图片描述

右键点击程序入口主类选择运行:
在这里插入图片描述

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

在这里插入图片描述

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

源码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值