Eureka做为服务注册与发现的组件,Eureka2.0已经闭源了,可是本教程仍是以Eureka为核心进行展开。web
一、三个模块spring
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)来调用服务端服务。 安全
二、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>>>();app
服务注册表没有持久化到数据库,我想应该是出于性能的考虑吧。毕竟,注册表信息是须要定时获取、更新的。负载均衡
三、建立服务注册中心——demoide
3.一、引入依赖pom.xmlspring-boot
<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.二、eureka server启动代码
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
@EnableEurekaServer的主要做用是启动EurekaServer运行环境和上下文。
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.四、查看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.五、源代码连接:https://files-cdn.cnblogs.com/files/wreading/eureka-server.rar