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

0.096字数 1581阅读 16314

简介

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码云源码 项目底部扫描二维码关注我,感谢阅读!!!

学习目录推荐

恒宇少年的开源快讯

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

推荐阅读更多精彩内容