eureka服务注册与发现:(二)服务注册与发现
接上一篇文章 https://www.cnblogs.com/ybin/p/9413392.html
搭建好服务注册中心,进行服务的注册与消费,还是用这张图来说明。

图中的Application Server 为服务提供者,他与服务注册中心有以下的通信 。
1. Register :讲服务注册到注册中心。
2. Renew : 服务续约,服务提供者会和注册中心保持一个心跳来保证该服务提供者正常运行,该心跳和服务注册中心的是否开启自我保护有关,如果服务提供者不可用并且注册中心自我保护已关闭,则这个服务就会被注册中心剔除。如果注册中心自我保护未关闭,则进行注册中心自我保护机制。
3. cancel :下线操作,服务提供者主动关闭会发送下线通知给注册中心,注册中心对该服务进行下线处理。
4. get Register: 一个服务提供者同时也可以是服务的消费者,可以通过注册中心获取注册服务列表。
1. 服务注册
1.1 创建服务提供者工程
通过IDEA创建爱你springboot 项目,包含spring cloud discovery 组件
在工程主类中添加 @EnableEurekaClient 注解
修改application.properties 文件
#正式环境启用IP容易区分
#eureka.instance.prefer-ip-address=true
eureka.instance.hostname=node1
eureka.client.service-url.defaultZone=http://server1:8081/eureka/
eureka.server.enable-self-preservation=false
同样 在集群模式下 defaultZone 得配置指向多个服务注册中心。
创建一个Controller
@RestController
@RequestMapping("/api/v2")
public class HelloController {
@Autowired
private EodAssetService service;
/*
* @return
*/
@GetMapping("/hello")
public Stringhello() {
return "hello world !";
}
}
2. 服务消费
通过IDEA创建爱你springboot 项目,包含spring cloud discovery 组件,pom中引入依赖openfeign,它是一个声明式服务调用组件
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
修改application.properties 文件
eureka.client.enabled=true
#获取Eureka注册信息
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=true
eureka.client.registry-fetch-interval-seconds=30
eureka.client.service-url.defaultZone=http://server:8082/eureka/
eureka.server.enable-self-preservation=false
同样 在集群模式下 defaultZone 得配置指向多个服务注册中心。
在工程主类中添加 @EnableEurekaClient 注解 和 @EnableFeignClients 启动声明式服务调用
创建一个 interface
@Service
@FeignClient(name = "provider", path = "/api/v2")
public interface HelloService {
/**
*
*/
@RequestLine("GET /hello")
String hello();
}
@FeignClient 是声明式服务调用的注解,name为服务提供者的应用名称,path为服务的访问前缀
创建一个Controller
@RestController
@RequestMapping("/api/v2")
public class HelloController {
@Autowired
private HelloService service;
/*
* @return
*/
@GetMapping("/hello")
public Stringhello() {
return service.hello();
}
}
这样通过访问 消费者的/api/v2/hello ,首先消费者会去注册中心获取服务列表并把它缓存到本地,这个缓存会定时更新。消费者收到请求后先检查缓存中是否有服务,没有就去获取,有的话直接转发到服务提供者进行数据访问

浙公网安备 33010602011771号