SpringCloud-服务与注册

SpringCloud- Eureka服务注册与发现 1.概述

springcloud是一个非常优秀的微服务框架,要管理众多的服务,就需要对这些服务进行治理,管理每个服务与每个服务之间的依赖关系,可以实现服务调用、负载均衡、服务容错、以及服务的注册与发现。
​ 如果微服务之间存在调用依赖,就需要得到目标服务的服务地址,也就是微服务治理的服务发现。要完成服务发现,就需要将服务信息存储到某个载体,载体本身即是微服务治理的服务注册中心,而存储到载体的动作即是服务注册。

 

2.使用注册中心前服务间的调用

使用RestTemplate

服务消费方创建一个RestTemplate,通过http请求服务提供方暴露的接口形式

简单代码

消费方:

//bean

@Configuration

public class ConfigBean {

@Bean

public RestTemplate getRestTemplate() {

return new RestTemplate();

}

}

 

//controller

@Autowired

private RestTemplate restTemplate;

 

@RequestMapping(value = "/consumer/dept/add")

public boolean add(Dept dept)

{

return restTemplate.postForObject("http://localhost:8080" + "/dept/add", dept, Boolean.class);

}

 

 

有什么缺陷?

路径硬编码,如果服务提供方端口或地址变更,不方便切换;

如果服务提供方是多实例集群模式一个路径如何访问集群的api(nginx(或硬件f5),那是不是每个集群都要加呢?这样会造成nginx泛滥。)

3.难以实现如实健康检查,负载均衡调用、高可用性等等。

 

3.Eureka服务注册与发现

EurekaSpring Cloud微服务套件中的一部分,可以与Springboot构建的微服务很容易的整合起来。
Eureka包含了服务器端客户端组件。

3.1 Eureka Server

Eureka Server 主要对外提供了三个功能:

1.服务注册,所有的服务都注册到 Eureka Server 上面来。

2.提供注册表,注册表就是所有注册上来服务的一个列表,Eureka 内部通过一个二层缓存机制来维护这个注册表。Eureka Client 在调用服务时,需要获取这个注册表,一般来说,这个注册表会缓存下来,如果缓存失效,则直接获取最新的注册表。

3.同步状态,Eureka Client 通过注册、心跳等机制,和 Eureka Server 同步当前客户端的状态,以便 Eureka Client 能够及时感知到变化。

3.2 Eureka Client

1.服务注册,将自己注册到服务注册中心(Eureka Server)

2.获取注册表信息

Eureka Client Eureka Server 上获取服务的注册信息,「并将其缓存在本地」,这句是关键。

Eureka Client 在需要调用远程服务时,会从该信息中查找远程服务所对应的 IP 地址、端口等信息。Eureka Client 上缓存的服务注册信息会定期更新(30 ),如果 Eureka Server 返回的注册表信息与本地缓存的注册表信息不同的话,Eureka Client 会自动处理。

服务续约

Eureka CLient 每隔 30 秒就要向 Eureka Server 发送一条心跳消息,来告诉 Eureka Server 我还在运行。

 

如果 Eureka Server 连续 90 秒都有没有收到 Eureka Client 的续约消息(连续三次没发送),它会认为 Eureka Client 已经掉线了,会将掉线的 Eureka Client 从当前的服务注册列表中剔除。

服务下线 Eureka Client 下线时,它会主动发送一条消息,告诉 Eureka Server ,我下线啦。

从上面的介绍可以看出,Eureka Client 会自动拉取、更新以及缓存 Eureka Server 中的信息,这样,即使 Eureka Server 所有节点都宕机,Eureka Client 依然能够获取到想要调用服务的地址(前提是服务地址没有发生变化)

 

3.3服务注册与发现原理图

服务注册 -存储服务的主机及端口信息

服务发现-允许其他用户发现注册阶段存储的信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfyj.html