spring cloud 之一(注册中心 Eureka)
一、注册中心
服务架构图(原理图)
- Eureka:就是一个服务注册中心(也可以是一个集群)。对外暴露自己的地址
- 提供者:启动后想Eureka 注册自己的信息
- 消费者:想Eureka订阅服务,Eureka将对应的服务所提供者地址列表发送给消费者。并且定期更新
- 心跳:提供者定期通http方式向Eureka刷新自己的状态
在微服务中,服务的注册与发现是核心的技术之一,spring cloud 提供了多种注册与发现的实现方式。spring cloud 支持最好的 eureka、 其次 consul 、然后 zookeeper
二、注册与发现
在服务注册与发现中,有一个注册中心,当服务启动时,会把当前的自己服务器的信息注册到注册中心上。另一方(消费者|生产者)去注册中心获取实际的服务通讯地址、然后通过rpc远程调用。
三、注册中心的搭建
1、创建spring boot项目 pom 注意spring cloud 版本
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--eureka服务端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2、创建application.yml文件
spring:
application:
name: springcloud-eureka-server
server:
port: 8700
#设置该服务中心的hostname,指定ip,该实例名称不能重复
eureka:
instance:
hostname: localhost
client:
#由于我们目前创建的应用是一个服务注册中心,而不是一个普通的应用,默认情况下,这个应用会向注册中心(也是它自己)注册它自己,设置为false表示禁止这种自己向自己注册的默认行为
register-with-eureka: false
#表示是否从Eureka Server获取注册信息,默认为true。如果这是一个单点的 Eureka Server,不需要同步其他节点的数据,可以设为false。
fetch-registry: false
#指定服务注册中心的位置
#如果是集群,Eureka集群相互指向注册中心
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
server:
#自我保护模式默认是自动开启的,可以选择关闭,禁用自我保护模式,保证不可用的服务及时剔除
enable-self-preservation: true
#剔除失效服务间隔单位ms,默认1分钟
eviction-interval-timer-in-ms: 20000
#留存的服务示例低于多少比例进入保护模式,默认85%
renewal-percent-threshold: 0.5
@EnableEurekaServer 注解 启动项目
服务log(部分)
访问url:http://localhost:8700/ 见下图则搭建成功: