我们来一个个的实践一下,系列介绍的配置均基于 Spring Boot 2.0.1.RELEASE 版本和 Spring Cloud Finchley.RC1 版本
服务注册中心
Spring Cloud 已经帮我们实现了服务注册中心,我们只需要很简单的几个步骤就可以完成。
首先我们创建一个 Spring Boot 工程,名字就叫 eureka-server,可以直接使用 Spring Initializr 创建
也可以直接在 pom.xml 中引入以下依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.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> <spring-cloud.version>Finchley.RC1</spring-cloud.version> </properties> <dependencies> <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> <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> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
通过 @EnableEurekaServer 注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的 Spring Boot 应用中添加这个注解就能开启此功能,比如
@EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在 application.yml 配置文件中增加如下信息:
spring: application: name: eureka-server server: port: 7000 eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server.port:为了与后续要进行注册的服务区分,这里将服务注册中心的端口设置为 7000。
eureka.client.register-with-eureka:表示是否将自己注册到 Eureka Server,默认为 true。
eureka.client.fetch-registry:表示是否从 Eureka Server 获取注册信息,默认为 true。
eureka.client.service-url.defaultZone:设置与 Eureka Server 交互的地址,查询服务和注册服务都需要依赖这个地址。默认是 http://localhost:8761/eureka ;多个地址可使用英文逗号(,)分隔。
启动工程后,访问 http://localhost:7000/,可以看到下面的页面,其中还没有发现任何服务
集群
注册中心这么关键的服务,如果是单点话,遇到故障就是毁灭性的。在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。Eureka 通过互相注册的方式来实现高可用的部署,所以我们只需要将 Eureke Server 配置其他可用的 service-url 就能实现高可用部署。
双节点注册中心欢迎大家加我qq:1038774626探讨技术问题。
首先我们尝试一下双节点的注册中心的搭建。
1、我们将之前的 application.yml 复制一份并命名为 application-peer1.yml,作为 peer1 服务中心的配置,并将 service-url 指向 peer2
spring: application: name: eureka-server server: port: 7001 eureka: instance: hostname: peer1 client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://peer2:7002/eureka/
2、将之前的 application-peer1.yml 复制一份并命名为 application-peer2.yml,作为 peer2 服务中心的配置,并将 service-url 指向 peer1
spring: application: name: eureka-server server: port: 7002 eureka: instance: hostname: peer2 client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://peer1:7001/eureka/
3、配本地 host:
在 hosts 文件中加入如下配置
127.0.0.1 peer1 peer2
4、打包启动
依次执行下面命令
# 打包 mvn clean package -Dmaven.test.skip=true # 分别以 peer1 和 peer2 配置信息启动 Eureka java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1 java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
在刚启动 peer1 的时候,启动完成后会在控制台看到一些异常信息,大致就是拒绝连接、请求超时这一类的,这个不用管,启动 peer2 后就好了。
依次启动完成后,访问 http://localhost:7001/,效果如下
根据图可以看出 peer1 的注册中心 DS Replicas 已经有了 peer2 的相关配置信息,并且出现在 available-replicas 中。我们手动停止 peer2 来观察,发现 peer2 就会移动到 unavailable-replicas 一栏中,表示 peer2 不可用。了解springcloud架构可以加求求:三五三六二四七二五九
到此双节点的配置已经完成。
注意事项
在搭建 Eureka Server 双节点或集群的时候,要把 eureka.client.register-with-eureka 和 eureka.client.fetch-registry 均改为 true(默认)。否则会出现实例列表为空,且 peer2 不在 available-replicas 而在 unavailable-replicas 的情况(这时其实只是启动了两个单点实例)。如果是像我这样图省事把之前的单节点配置和双节点的配置放在一个工程里,双节点的配置里要显示设置以上两个参数,直接删除是用不了默认配置的 ——Spring profile 会继承未在子配置里设置的父配置(application.yml)中的配置。
在注册的时候,配置文件中的 spring.application.name 必须一致,否则情况会是这样的
Eureka 集群使用
在生产中我们可能需要三台或者大于三台的注册中心来保证服务的稳定性,配置的原理其实都一样,将注册中心分别指向其它的注册中心。这里只介绍三台集群的配置情况,其实和双节点的注册中心类似,每台注册中心分别又指向其它两个节点即可。
application-peer1.yml
spring: application: name: eureka-server server: port: 7001 eureka: instance: hostname: peer1 client: service-url: defaultZone: http://peer2:7002/eureka/,http://peer3:7003/eureka/
application-peer2.yml
spring: application: name: eureka-server server: port: 7002 eureka: instance: hostname: peer2 client: service-url: defaultZone: http://peer1:7001/eureka/,http://peer3:7003/eureka/
application-peer3.yml
spring: application: name: eureka-server server: port: 7003 eureka: instance: hostname: peer3 client: service-url: defaultZone: http://peer1:7001/eureka/,http://peer2:7002/eureka/
修改 hosts 文件中的配置,添加 peer3
127.0.0.1 peer1 peer2 peer3
分别以 peer1、peer2、peer3 的配置参数启动 Eureka 注册中心
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3
依次启动完成后,访问 http://localhost:7001/,效果如下
可以在 peer1 中看到了 peer2、peer3 的相关信息,至此 Eureka 集群也已经完成了。
相关推荐
spring-cloud-starter-netflix-eureka-server-1.4.5.RELEASE.jar
spring-cloud-starter-eureka-server-1.4.5.RELEASE.jar
- 添加必要的依赖,包括`spring-cloud-starter-netflix-eureka-server`,这是Eureka服务注册中心的核心依赖,以及`spring-boot-starter-test`用于测试。 - 在`pom.xml`文件中,设置`spring-cloud.version`属性为`...
本项目"springcloud-Netflix-eureka demo"提供了一个基于Spring Boot搭建的基础服务框架,旨在帮助开发者理解和学习如何使用Eureka进行服务注册与发现,以及Ribbon客户端负载均衡。 首先,我们来看Eureka。Eureka是...
总的来说,Eureka是Spring Cloud中的关键组件,它的服务注册与发现机制简化了微服务之间的通信,降低了系统的复杂性。通过学习和实践这个Eureka服务提供者示例,开发者能够深入理解Eureka的工作原理,并将其应用到...
Spring Cloud Eureka Server是Spring Cloud框架中的一个关键组件,它主要负责服务的注册与发现,是微服务架构中实现服务治理的重要工具。Eureka Server作为服务注册中心,为其他微服务提供服务注册和发现的能力,...
在分布式微服务架构中,服务治理扮演着至关重要的角色,而SpringCloud Eureka Server正是这样一款专为解决服务注册与发现问题而设计的组件。本文将围绕"springcloud-eureka-server.zip"这个项目,深入探讨Spring...
spring-cloud-netflix-eureka-server-1.4.5.RELEASE.jar
Eureka是Netflix开源的一个服务发现框架,主要用来实现服务注册与发现,在Spring Cloud中,它将自己定位为服务注册中心的角色。本节教程将深入探讨Eureka的核心原理和使用过程。 ### Eureka的流程说明 1. **服务...
Eureka修改增加页面操作,用于多人开发测试操作流程。可以更好的进行协调操作,只需要替换本地仓库的jar包就行
├──cloud-eureka-server──────────────服务注册中心[8761] ├──cloud-turbine-server─────────────断路器聚合监控[8769] ├──cloud-zipkin-server──────────────...
首先,Spring Cloud Eureka是Netflix公司提供的一个服务注册与发现组件,它允许微服务实例向Eureka Server注册自身,同时也允许客户端通过Eureka Server找到其他服务实例。Eureka提供了高可用的服务注册中心,确保...
在微服务架构中,服务发现是至关重要的一个环节,SpringCloud作为主流的微服务框架,提供了丰富的组件来支持这一功能,其中Eureka便是用于服务注册与发现的核心组件。本文将深入探讨SpringCloud 2.0版本下Eureka服务...
Spring Cloud 服务注册中心-服务提供-服务消费-源码-可运行 该zip包中包含五个项目工程 1-SpringCloudDemo-eureka-server(服务注册中心) 1-SpringCloudDemo-querygirl-service(服务提供-GirlQuery) 1-...
1. Eureka Server:它是SpringCloud Eureka的核心,提供服务注册与发现的功能。服务启动后,会向Eureka Server发送心跳,表明服务存活状态。Eureka Server维护着一个服务实例的注册表,供其他服务查询。 2. Eureka ...
在这个实例中,我们将探讨如何利用 Spring Cloud Eureka 实现服务注册与发现,以及相关的配置和实践。 首先,Spring Boot 是一个快速开发框架,它简化了创建独立、生产级别的基于 Spring 的应用程序。版本 2.1.10....
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
2. **服务注册与发现**: - `springcloud-order` 和 `springcloud-member` 作为服务提供者,它们启动后会向 Eureka 集群注册自己的服务。注册过程包括发布服务元数据,如服务名、IP 地址、端口等。 - 当服务消费者...
spring-cloud-netflix-eureka-client-1.4.5.RELEASE.jar
spring-cloud-starter-alibaba-nacos-discovery-2.2.0.RELEASE