Eureka是SpringCloud家族中的一个组件,因为它的有服务注册和发现的机制,所以很适合用于做注册中心。Eureka有服务端和客户端,注册中心作为服务端,我们提供的服务作为客户端注册到服务端上,由Eureka统一管理。
作为注册中心,它内部运行机制是什么样的?下面我就带着下面这些问题来学习Eureka。
1.如何去开发一个集成spring cloud eureka程序?
2.服务提供者怎么注册到服务中心的?
3.服务中心怎么接收注册请求?
4.服务中心怎么存储?
5.服务中心自身是怎么实现高可用的?
6.服务集群之间怎么同步信息?如何去重?
7.服务中心如何检查服务提供者是否正常?
8.服务提供者如果下架服务?
1.如何去开发一个集成spring cloud eureka程序?
下面就开发一个伪集群(在单机上)的Eureka程序:
服务端pom.xml文件主要配置:
<!-- spring boot 封装spring
starter封装、自动配置autoconfiguration
-->
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Edgware.SR2</version>
<relativePath />
</parent>
<!-- 后面引用不用加版本号 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- spring-boot-starter-web web项目,集成容器tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring-boot-starter-actuator 管理工具/web 查看堆栈,动态刷新配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- cloud eureka组件 注册中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
bootstrap.yml文件:
# 应用名称
spring:
application:
name: eureka-server
application.yml文件:
# 上下文初始化加载
info:
name: Eureka server
contact: wenthkim
spring:
profiles:
active: eureka1
spring:
profiles: eureka1
server:
port: 8761
eureka:
client:
# 是否注册到eurekaserver
registerWithEureka: false
# 是否拉取信息
fetchRegistry: true
# eureka server地址
serviceUrl:
defaultZone: http://eureka1:8761/eureka/,http://eureka2:8762/eureka/,http://eureka3:8763/eureka/
server:
# false 关闭自我保护,不管如何都要剔除心跳检测异常的服务
enableSelfPreservation: true
# updatePeerEurekaNodes执行间隔
peerEurekaNodesUpdateIntervalMs: 10000000
waitTimeInMsWhenSyncEmpty: 0
instance:
hostname: eureka1
metadataMap:
instanceId: ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
启动java类