当前位置:网站首页>Eureka服务注册与发现

Eureka服务注册与发现

2022-06-22 20:30:00 喵先森爱吃鱼

一、微服务的注册中心

注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其他服务时,就会在这里找到服务的地址,进行调用。
在这里插入图片描述

1.1 注册中心的主要作用

服务注册中心(下称注册中心)是微服务架构非常重要的一个组件,在微服务架构里主要起到了协调者的作用。注册中心一般包含如下几个功能:
1、服务发现:

  • 服务注册/反注册:保存服务提供者和服务调者的信息
  • 服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能
  • 服务路由(可选):具有筛选整合服务提供者的能力

2、服务配置:

  • 配置订阅:服务提供者和服务调用者订阅微服务相关的配置
  • 配置下发:主动将配置推送给服务提供者和服务调用者

3、服务健康检测

  • 检测服务提供者的健康状况

1.2 常见的注册中心

Zookeeper
Zookeeper 是一个分布式服务框架,是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。简单来说 Zookeeper = 文件系统 + 监听通知机制。

Eureka
Eureka 是在 Java 语言上,基于 RESTful API 开发的服务注册与发现组件,SpringCloud Netflix 中的重要组件。

Consul
Consul 是由 HashiCorp 基于 Go 语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,采用 Raft 算法保证服务的一致性,且支持健康检查

Nacos
Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。简单来说 Nacos 就是注册中心 + 配置中心的组合,提供简单易用的特性集,帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。Nacos 还是 SpringCloud Alibaba 组件之一,负责服务注册与发现。

组件名语言CAP一致性算法服务健康检查对外暴露接口
EurekaJavaAP可配支持HTTP
ConsulGoCPRaft支持HTTP/DNS
ZookeeperJavaCPPaxos支持客户端
NacosJavaAPRaft支持HTTP

二、Eureka 的概述

2.1 Eureka 的基础知识

Eureka 是 Netflix 开发的服务发现框架,SpringCloud 将它集成在自己的子项目 spring-cloud-netflix 中,实现 SpringCloud 的服务发现功能。
在这里插入图片描述
上图简要描述了 Eureka 的基本架构,由 3 个角色组成:
1、Eureka Server

  • 提供服务注册和发现

2、Service Provider

  • 服务提供方
  • 将自身服务注册到 Eureka,从而使服务消费方能够找到

3、Service Consumer

  • 服务消费方
  • 从 Eureka 获取注册服务列表,从而能够消费服务

2.2 Eureka 的交互流程与原理

在这里插入图片描述
图是来自 Eureka 官方的架构图,大致描述了 Eureka 集群的工作过程。图中包含的组件非常多,解释一下:

  • Application Service 相当于服务提供者,Application Client 相当于服务消费者
  • Make Remote Call,可以简单理解为调用 RESTful API
  • us-east-1c、us-east-1d 等都是 zone,它们都属于 us-east-1 这个 region

关于 zone 和 region 的介绍可以看下这篇文章:eureka分区的深入讲解

由图可知,Eureka 包含两个组件:Eureka Server 和 Eureka Client,它们的作用如下:

  • Eureka Client 是一个 Java 客户端,用于简化与 Eureka Server 的交互;
  • Eureka Server 提供服务发现的能力,各个微服务启动时,会通过Eureka Client 向 Eureka Server 进行注册自己的信息(例如网络信息),Eureka Server 会存储该服务的信息
  • 微服务启动后,会周期性地向 Eureka Server 发送心跳(默认周期 30 秒)以续约自己的信息。如果 Eureka Server 在一定时间内没有接收到某个微服务节点的心跳,Eureka Server 将会注销该微服务节点(默认 90 秒)
  • 每个 Eureka Server 同时也是 Eureka Client,多个 Eureka Server 之间通过复制的方式完成服务注册表的同步
  • Eureka Client 会缓存 Eureka Server 中的信息。即使所有的 Eureka Server 节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。

综上,Eureka 通过心跳检测、健康检查和客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性。

原网站

版权声明
本文为[喵先森爱吃鱼]所创,转载请带上原文链接,感谢
https://blog.csdn.net/dingd1234/article/details/125399127

随机推荐