Netflix Eureka server 简单实例

>> 点击下载教程项目源码

本章节将介绍怎样快速搭建一个 Eureka server 实例。首先启动 Eureka server 项目,然后启动 Eureka client 项目,Eureka client 项目将自动向 Eureka server 注册服务信息。我们先看看怎样创建和配置 Eureka server 实例。

Eureka server 实例

Eureka server 是作为服务的注册与发现中心。它提供服务注册、提供注册表和同步状态,下面将介绍怎样利用 IDEA 搭建 Eureka server。详细步骤如下:

创建 Eureka server 项目

(1)打开“New Module”窗口,选择“Spring Initializr”向导创建项目,JDK 选择 1.8。如下图:

(2)如实填写 Maven 项目的 Group、Artifact、Type、Java Version、Version等信息,然后点击“Next”按钮进入下一步,如下图:

(3)选择我们需要引入的模块,该项目引入了“Spring Boot DevTools”、“Cloud Bootstrap”和“Eureka Server”模块依赖,然后点击“Next”按钮。如下图:

(4)填写模块名称和指定模块存放位置,最后点击“Finish”按钮完成项目创建。如下图:

配置 Eureka server 项目

(1)在 application.properties 文件中添加如下配置信息:

# 服务端口
server.port=8077
# 服务名称
spring.application.name=eureka-server
# 服务地址
eureka.instance.hostname=localhost
# 不向注册中心注册自己
eureka.client.register-with-eureka=false
# 取消检索服务
eureka.client.fetch-registry=false
# 开启注册中心的保护机制,默认是开启
eureka.server.enable-self-preservation=true
# 设置保护机制的阈值,默认是0.85。
eureka.server.renewal-percent-threshold=0.5

(2)在 Eureka server 项目的启动类上面添加 @EnableEurekaServer 注解,代码如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaDemo1ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaDemo1ServerApplication.class, args);
    }

}

注意:在项目启动类上使用 @EnableEurekaServer,可以将项目作为 Spring Cloud 中的注册中心,即 Eureka server 服务端。

运行 Eureka server 项目

上面两个步骤已将项目配置完成,我们可以直接运行 EurekaDemo1ServerApplication 类来启动 Eureka server 项目,启动日志如下:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.2)

2021-02-04 22:29:23.776  INFO 3332 --- [  restartedMain] c.h.s.e.EurekaDemo1ServerApplication     : Starting EurekaDemo1ServerApplication using Java 1.8.0_45 on MS-OYCYMLXUSLLD with PID 3332 (D:\learn\Spring\springcloud\springcloud_workspaces\springcloud_netflix_eureka\eureka_demo1\eureka_demo1_server\target\classes started by Administrator in D:\learn\Spring\springcloud\springcloud_workspaces\springcloud_netflix_eureka)
2021-02-04 22:29:23.782  INFO 3332 --- [  restartedMain] c.h.s.e.EurekaDemo1ServerApplication     : No active profile set, falling back to default profiles: default
2021-02-04 22:29:23.981  INFO 3332 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2021-02-04 22:29:23.981  INFO 3332 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2021-02-04 22:29:25.932  INFO 3332 --- [  restartedMain] o.s.cloud.context.scope.GenericScope     : BeanFactory id=cb86a24d-f668-33bf-a800-da5f46944e6a
2021-02-04 22:29:26.627  INFO 3332 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8077 (http)
2021-02-04 22:29:26.642  INFO 3332 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-02-04 22:29:26.643  INFO 3332 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.41]
2021-02-04 22:29:26.869  INFO 3332 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-02-04 22:29:26.871  INFO 3332 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2886 ms
2021-02-04 22:29:27.823  INFO 3332 --- [  restartedMain] c.s.j.s.i.a.WebApplicationImpl           : Initiating Jersey application, version 'Jersey: 1.19.4 05/24/2017 03:20 PM'
2021-02-04 22:29:27.944  INFO 3332 --- [  restartedMain] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
2021-02-04 22:29:27.945  INFO 3332 --- [  restartedMain] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
2021-02-04 22:29:28.152  INFO 3332 --- [  restartedMain] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
2021-02-04 22:29:28.152  INFO 3332 --- [  restartedMain] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
2021-02-04 22:29:28.912  INFO 3332 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-02-04 22:29:30.594  INFO 3332 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-02-04 22:29:31.786  INFO 3332 --- [  restartedMain] DiscoveryClientOptionalArgsConfiguration : Eureka HTTP Client uses Jersey
2021-02-04 22:29:31.886  WARN 3332 --- [  restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it to the classpath.
2021-02-04 22:29:31.907  INFO 3332 --- [  restartedMain] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
2021-02-04 22:29:31.953  INFO 3332 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
2021-02-04 22:29:31.953  INFO 3332 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Client configured to neither register nor query for data.
2021-02-04 22:29:31.968  INFO 3332 --- [  restartedMain] com.netflix.discovery.DiscoveryClient    : Discovery Client initialized at timestamp 1612448971965 with initial instances count: 0
2021-02-04 22:29:32.079  INFO 3332 --- [  restartedMain] c.n.eureka.DefaultEurekaServerContext    : Initializing ...
2021-02-04 22:29:32.085  WARN 3332 --- [  restartedMain] c.n.eureka.cluster.PeerEurekaNodes       : The replica size seems to be empty. Check the route 53 DNS Registry
2021-02-04 22:29:32.174  INFO 3332 --- [  restartedMain] c.n.e.registry.AbstractInstanceRegistry  : Finished initializing remote region registries. All known remote regions: []
2021-02-04 22:29:32.176  INFO 3332 --- [  restartedMain] c.n.eureka.DefaultEurekaServerContext    : Initialized
2021-02-04 22:29:32.190  INFO 3332 --- [  restartedMain] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
2021-02-04 22:29:32.233  INFO 3332 --- [  restartedMain] o.s.c.n.e.s.EurekaServiceRegistry        : Registering application EUREKA-SERVER with eureka with status UP
2021-02-04 22:29:32.236  INFO 3332 --- [      Thread-37] o.s.c.n.e.server.EurekaServerBootstrap   : Setting the eureka configuration..
2021-02-04 22:29:32.258  INFO 3332 --- [      Thread-37] o.s.c.n.e.server.EurekaServerBootstrap   : isAws returned false
2021-02-04 22:29:32.259  INFO 3332 --- [      Thread-37] o.s.c.n.e.server.EurekaServerBootstrap   : Initialized server context
2021-02-04 22:29:32.259  INFO 3332 --- [      Thread-37] c.n.e.r.PeerAwareInstanceRegistryImpl    : Got 1 instances from neighboring DS node
2021-02-04 22:29:32.259  INFO 3332 --- [      Thread-37] c.n.e.r.PeerAwareInstanceRegistryImpl    : Renew threshold is: 1
2021-02-04 22:29:32.259  INFO 3332 --- [      Thread-37] c.n.e.r.PeerAwareInstanceRegistryImpl    : Changing status to UP
2021-02-04 22:29:32.276  INFO 3332 --- [      Thread-37] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2021-02-04 22:29:32.280  INFO 3332 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8077 (http) with context path ''
2021-02-04 22:29:32.282  INFO 3332 --- [  restartedMain] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8077
2021-02-04 22:29:33.550  INFO 3332 --- [  restartedMain] c.h.s.e.EurekaDemo1ServerApplication     : Started EurekaDemo1ServerApplication in 11.87 seconds (JVM running for 16.179)

使用浏览器运行 http://localhost:8077,运行效果如下图:

到这里 Eureka server 项目创建完成,也能成功运行了。上图中“Instances currently registered with Eureka”中的表格中没有任何可用的服务实例。等我们下一个章节创建 Eureka client 实例后,该表格将会看到 Eureka client 服务。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号