Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。
SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
Eureka包含两个组件:Eureka Server和Eureka Client。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除。

现在存在两个微服务,一个服务提供者,一个服务消费者,现在我们就来把两个微服务注册到Eureka中。
Eureka本身也是以一个服务的形式存在的,所以接下来直接创建一个Module,并引入Eureka服务端的依赖包。
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
Eureka的主启动类添加注解@EnableEurekaServer

在application.yml中添加如下配置:
server:
port: 7001
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false # 表示不向注册中心注册自己
fetch-registry: false
service-url:
defaultZone: http://localhost:7001/eureka/
启动Eureka服务并访问:http://localhost:7001/进入Eureka主页

在两个微服务的pom.xml中引入Eureka的客户端依赖包
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
然后在两个微服务的主启动类上添加注解 @EnableEurekaClient

在提供者和消费者微服务的配置文件中添加配置:
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka
启动提供者和消费者微服务,并重新访问http://localhost:7001/

注册成功!!!
对于注册进Eureka里面的服务,可以通过Discovery来获得这些服务的信息。
获取DiscoveryClient
@Autowired
private DiscoveryClient discoveryClient;
获取服务列表
List services = discoveryClient.getServices();
for(String service:services){
System.out.println(service);
}
根据服务获取实例列表
List instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
for (ServiceInstance instance : instances) {
System.out.println(instance.getInstanceId() + " " + instance.getHost() + " " + instance.getPort() + " " + instance.getUri());
}

org.springframework.cloud
spring-cloud-starter-zookeeper-discovery
org.apache.zookeeper
zookeeper
org.apache.zookeeper
zookeeper
3.4.9
spring:
cloud:
zookeeper:
connect-string: 192.168.83.129:2181

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8004.class, args);
}
}
org.springframework.cloud
spring-cloud-starter-consul-discovery
spring:
application:
name: consul-provider-payment
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8006.class, args);
}
}
实现语言
CAP
服务健康检查
接口
Eureka
Java
AP
可配支持
HTTP
Consul
Go
CP
支持
HTTP/DNS
Zookeeper
Java
CP
支持
客户端
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦