创建一个**Maven**项目 microservice-eureka-server
~~~bash
mvn archetype:generate -DgroupId=com.shiyanlou -DartifactId=microservice-eureka-server -DarchetypeArtifactId=maven-archetype-quickstart
~~~
依赖如下:
~~~xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.7.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.shiyanlou</groupId>
<artifactId>microservice-eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>microservice-eureka-server</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<!-- 引入 Netflix eureka server 依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 引入spring cloud的依赖,不能少,主要用来管理Spring Cloud生态各组件的版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
~~~
* 编写启动类`App.java`,该类是程序的启动入口
~~~java
package com.shiyanlou;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
~~~
* 编写配置文件`resources/application.yml`
~~~yaml
server:
port: 8080
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
~~~
简单介绍一些配置属性:
1. registerWithEureka: 表示是否需要将自身也加入 Eureka Server 中,默认为 true。当前实例本身就是 Eureka Server,故设置为 false。
2. fetchRegistry:是否需要从其他 Eureka Server 获取注册信息,默认为 true。本次实验采用的是一个单点 Server,无需同步其他 Server 的注册信息,故设置为 false。
3. serviceUrl.defaultZone:当前 Eureka Server 的交互地址,多个地址可用`','`号隔开。
> 若有需要自定义配置,如搭建高可用的 Eureka Server,可查看官方文档:[https://cloud.spring.io/spring-cloud-netflix/multi/multi\_spring-cloud-eureka-server.html](https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-eureka-server.html)
* 最终目录结构

* 运行
~~~bash
mvn spring-boot:run
~~~
当出现一下日志信息的时候,说明 Eureka Server 已经启动成功。
~~~txt
...
2019-03-15 10:46:17.362 INFO 3658 --- [ Thread-13] c.n.e.r.PeerAwareInstanceRegistryImpl : Changing status to UP
2019-03-15 10:46:17.373 INFO 3658 --- [ Thread-13] e.s.EurekaServerInitializerConfiguration : Started Eureka Server
2019-03-15 10:46:17.390 INFO 3658 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8761 (http) with context path ''
2019-03-15 10:46:17.391 INFO 3658 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8080
2019-03-15 10:46:17.394 INFO 3658 --- [ main] .c.m.MicroserviceEurekaServerApplication : Started MicroserviceEurekaServerApplication in 6.508 seconds (JVM running for 7.022)
~~~
* 尝试访问
点击 web 服务,即可访问`Eureka Dashboard`,如下图所示:

此时在`Instances currently registered with Eureka`区域没有任何实例存在,不要着急,接下来我们来完善上一节的项目。
- 微服务开发框架 SpringCloud
- 单体应用
- 如何解决单体应用架构中存在的问题
- 如何实现微服务架构以及技术选型
- Spring Cloud 特点
- 开始使用 Spring Cloud 实战微服务
- 快速搭建开发脚手架
- 编写服务提供者-用户微服务
- 编写服务消费者【电影微服务】
- 整合 Spring Boot Actuator
- 开始整合
- 微服务注册与发现
- 编写服务发现服务
- 注册微服务至 Eureka Server
- 更新服务提供者 (用户微服务)
- 更新服务消费者 (电影微服务)
- 查看注册结果
- Ribbon 客户端负载均衡
- Ribbon 简介
- 引入 Ribbon
- Ribbon 入门
- Feign 声明式 REST 调用
- 改造项目
- Hystrix 容错处理
- 实现容错的手段
- Hystrix 简介
- 开始使用
- 测试
- Zuul 网关
- 网关是什么
- Spring Cloud Zuul 介绍
- Zuul 入门使用
- 网关测试
- Spring Cloud Config 配置管理
- 配置中心的作用
- Spring Cloud Config 简介
- Spring Cloud Config 使用
- Sleuth 与 Zipkin 结合图形化展示
- 分布式追踪相关基础概念
- Spring Cloud Sleuth 介绍及使用
- Zipin 简介
- Docker 入门
- 云原生概念
- Docker 容器介绍
- Docker 常用命令
- 微服务运行在 Docker 之上
- Dockerfile 及其常见指令介绍
- 改造 Eureka Server 微服务
- Docker Compose 编排微服务
- 安装 Compose
- Compose 快速入门
- Compose 编排 SpringCloud微服务
- 将 Eureka 等微服务运行在 Docker 容器中
- Docker-Compose 编排文件的编写
- 通过 Docker Compose 启动、停止
- Compose编排Spring Cloud微服务2
- Docker-Compose 来部署一个双节点的 Eureka 集群
