SpringCloud组件:搭建Eureka服务注册中心

简介

Eureka服务注册中心是netflix开源组织提供的一个服务高可用的解决方案,在前端时间一直在疯传的2.0开源流产的问题,其实并不影响我们的使用,netflix只不过是不再维护2.0分支的开源代码,所以做出了免责声明,不过对于我们使用者来说确实比较担心这一点,还有不少人更换服务注册中心,比如:zookeeperconsul

当然对于Eureka 2.0 流产这件事情就当做一场闹剧来对待吧,因为SpringCloud.Finchley.SR1版本依赖的Eureka1.9.3,根本不需要考虑到这一点了。 我们还是来关心我们的分布式微服务架构系统该怎么去设计。

构建项目

跟我们之前构建项目一样, 使用idea工具直接创建一个新的SpringBoot项目,在选择依赖的界面勾选Cloud Discovert -> Eureka Server依赖,创建完成后的pom.xml配置文件内容如下:

...//省略部分
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!--SpringCloud最新稳定版本-->
        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
    </properties>

    <dependencies>

        <!--Netflix Eureka依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
    
    <!--SpringCloud依赖版本管理-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
...//省略部分

我们在创建新的项目时,如果选择了相关SpringCloud的依赖,则会自动在pom.xml配置文件内添加SpringCloud最新稳定版本依赖配置。 spring-cloud-dependencies这个依赖是SpringCloud内所需要依赖的版本维护,在maven项目内如果被<dependencyManagement>内修饰的<dependency>,子项目或者本项目在使用时可以不用设置版本号,默认使用<dependencyManagement><dependency>内设置的版本信息。 正因如此,这也是为什么我们添加了spring-cloud-dependencies依赖后,在使用相关SpringCloud插件时可以不用添加version标签设置导入指定版本的依赖。

Eureka Server的配置

添加spring-cloud-starter-netflix-eureka-server依赖后,我们就来看看怎么开启Eureka Server服务。开启Eureka的注册中心服务端比较简单,只需要修改注意两个地方。

  • 第一个地方是在入口类上添加启用Eureka Server的注解@EnableEurekaServer,如下所示:
@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaApplication {
    // main method
}
  • 第二个地方是application.yml/application.properties文件内添加配置基本信息,如下所示:
# 服务名称
spring:
  application:
    name: hengboy-spring-cloud-eureka
# 服务端口号
server:
  port: 10000

#Eureka 相关配置
eureka:
  client:
    service-url:
      defaultZone: http://localhost:${server.port}/eureka/
    # 是否从其他的服务中心同步服务列表
    fetch-registry: false
    # 是否把自己作为服务注册到其他服务注册中心
    register-with-eureka: false
  • spring.application.name:服务名称
  • server.port:服务端口号
  • eureka.client.service-url.defaultZone:Eureka默认的服务地址空间信息配置
  • eureka.client.fetch-registry:是否从其他Eureka注册中心同步服务列表(单节点无需配置启用).
  • eureka.client.register-with-eureka:是否将自己作为服务注册到其他Eureka服务注册中心(单节点无需配置启用).

运行测试

上面的步骤我们已经把Eureka服务端所需要的依赖以及配置进行了集成,接下来我们来运行测试看下效果,Eureka给我们提供了一个漂亮的管理界面,这样我们就可以通过管理界面来查看注册的服务列表以及服务状态等信息。

测试步骤:

  1. 通过Application方式进行启动Eureka Server
  2. 在本地浏览器访问http://localhost:10000,10000端口号是我们在application.yml配置文件内设置的server.port的值。
  3. 成功访问到Eureka Server管理界面

界面如下所示:

Eureka Server 管理界面

对于界面我们可以看到一些Eureka Server的健康数据以及基本信息,比如:

  • server-uptime:已经启动的耗时
  • current-memory-usage:当前占用的内存总量
  • Instances currently registered with Eureka:注册到该中心的服务列表
  • ipAddr:当前Eureka Server的IP地址,如果没有配置eureka.instance.ip-address那么这里使用默认的IP地址。 ...

总结

本章介绍了Eureka作为Server的配置,配置的步骤比较简单,没有那么多繁琐的地方,当然这只是Eureka单个服务节点的配置方式,更多高级的使用方式请查看后续文章。

与恒宇少年面对面

如果你喜欢恒宇少年的相关文章,那么就去微信公众号(恒宇少年)关注我吧!!! 当然你也可以去 SpringCloud码云源码 项目底部扫描二维码关注我,感谢阅读!!!

学习目录推荐

恒宇少年的开源快讯

这段时间一直在编写开源的相关框架,致力于公司使用的框架升级以及开源计划,将公司使用到的工具以及插件进行升级重构并且开源。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java闲聊

AvtiveMQ与SpringBoot结合

23870
来自专栏Android相关

Gradle For Android(3)--管理依赖关系

依赖关系管理是Gradle的闪光点。在这个脚本中最好的一点,就是你所需要的只是添加一行到你的build.gradle中,然后Gradle就会从一个远程仓库中下载...

11730
来自专栏SpringBoot 核心技术

SpringCloud组件:将微服务提供者注册到Eureka服务中心

Eureka提供了Server当然也提供了Client,如果你对Eureka Server不了解,点击SpringCloud组件:搭建Eureka服务注册中心阅...

44440
来自专栏java一日一条

Spring Boot + Mybatis + Redis二级缓存开发指南

Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Red...

20230
来自专栏coding

为python版本抓狂,试下pyenv吧安装pyenv版本切换pyenv-virtualenv小结

写python时,最烦的事莫过于版本切换。python3已经很成熟了,但很多生产项目依然用的是2.7版本,本地环境经常需要切换版本。此外,不同项目的依赖也不同,...

26020
来自专栏xingoo, 一个梦想做发明家的程序员

[大数据之Sqoop] —— 什么是Sqoop?

介绍 ? sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具。你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs...

293100
来自专栏漏斗社区

工具| 诸神之眼nmap定制化之初识篇

Nmap是学习网络安全必备的一款工具,有着强大的信息收集能力,有本书甚至因此称它为“诸神之眼” 。Nmap不仅仅是一个端口扫描器那么简单,它还有着一个强大的脚本...

46580
来自专栏SpringBoot 核心技术

SpringCloud组件:你的Eureka服务注册中心安全吗?

在之前的章节我们讲到了SpringCloud组件:搭建Eureka服务注册中心,已经可以让我们自定义的微服务节点进行注册到该Eureka Server上,不过在...

48840
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装和配置OrientDB

OrientDB是一个多模型NoSQL数据库,支持图形和文档数据库。它是一个Java应用程序,可以在任何操作系统上运行。它也完全支持ACID,支持多主复制。

20300
来自专栏Linyb极客之路

API文档先行还是API编码先行?

 API文档先行是在编码之前先设计好API说明,Swagger提供Open API规范的文档范式,可通过IDE插件或Swagger网站提供的在线编辑工具编辑。

24530

扫码关注云+社区

领取腾讯云代金券