Spring cloud ——EurekaServer
eureka作为服务注册与发现的组件,eureka2.0已经闭源了,但是本教程还是以eureka为核心进行展开。
1、三个模块
spring cloud eureka是spring cloud netflix微服务套件之一,基于netflix eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。
eueka的3个重要模块,eureka-server,service-provider,service-consumer
eureka-server:服务端,提供服务注册和发现;
eureka-client-service-provider:服务端,服务提供者,通过http rest告知服务端注册,更新,取消服务;
eureka-client-service-consumer:客户端,服务消费者,通过http rest从服务端获取需要服务的地址列表,然后配合一些负载均衡策略(ribbon)来调用服务端服务。
2、eureka-server
eureka server 的服务注册数据存储层是双层的 concurrenthashmap(线程安全高效的 map 集合)。
第一层的key=spring.application.name 也就是客户端实例注册的应用名;value 为嵌套的 concurrenthashmap。
第二层的key=instanceid 也就是服务的唯一实例 id,value 为 lease 对象,lease 对象存储着这个实例的所有注册信息,包括 ip 、端口、属性等。
申明语句如下:
private final concurrenthashmap<string, map<string, lease<instanceinfo>>> registry= new concurrenthashmap<string, map<string, lease<instanceinfo>>>();
服务注册表没有持久化到数据库,我想应该是出于性能的考虑吧。毕竟,注册表信息是需要定时获取、更新的。
3、创建服务注册中心——demo
3.1、引入依赖pom.xml
<dependencies>
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<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>
3.2、eureka server启动代码
@springbootapplication
@enableeurekaserver
public class eurekaserverapplication {
public static void main(string[] args) {
springapplication.run(eurekaserverapplication.class, args);
}
}
@enableeurekaserver的主要作用是启动eurekaserver运行环境和上下文。
3.3、application配置文件
application配置文件可以是xml或yml结构,我比较喜欢xml结构,yml是缩进格式,我觉得比较容易写错。
server.port=8080
spring.application.name: eureka-server
#服务注册中心实例的主机名
eureka.instance.hostname: localhost
#表示是否将自己注册在eurekaserver上,默认为true。由于当前应用就是eurekaserver,所以置为false
eureka.client.register-with-eureka: false
#表示表示是否从eurekaserver获取注册信息,默认为true。单节点不需要同步其他的eurekaserver节点的数据
eureka.client.fetch-registry: false
#设置eureka的地址
eureka.client.service-url.defaultzone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.4、查看eureka server
访问http://localhost:8080/地址。如图上部分
environment: 环境,默认为test,生产环境建议改下,看着顺眼
data center: 数据中心,生产环境建议改下
current time:当前的系统时间
uptime:已经运行了多少时间
lease expiration enabled:是否启用租约过期 ,自我保护机制关闭时,该值默认是true, 自我保护机制开启之后为false。
renews threshold: 每分钟最少续约数,eureka server 期望每分钟收到客户端实例续约的总数。
renews (last min): 最后一分钟的续约数量(不含当前,1分钟更新一次),eureka server 最后 1 分钟收到客户端实例续约的总数。
页面下部分:
total-avail-memory : 总共可用的内存
environment : 环境名称,默认test
num-of-cpus : cpu的个数
current-memory-usage : 当前已经使用内存的百分比
server-uptime : 服务启动时间
registered-replicas : 相邻集群复制节点
unavailable-replicas :不可用的集群复制节点,
available-replicas :可用的相邻集群复制节点
ipaddr:eureka服务端ip
status:eureka服务端状态
3.5、源代码链接:https://files-cdn.cnblogs.com/files/wreading/eureka-server.rar
上一篇: 封装axios