博客
关于我
SpringCloud Eureka的服务注册与发现
阅读量:540 次
发布时间:2019-03-09

本文共 2651 字,大约阅读时间需要 8 分钟。

Spring Cloud Eureka服务注册与发现:从基础到实践

Eureka简介

在微服务架构下,组件间的通信通过接口实现,确保各模块协同工作。然而,微服务实例的动态变化和网络地址的频繁变更,使得硬编码地址的方式失效。为解决此问题,服务治理体系应运而生,其核心就是服务注册与发现功能,也就是我们所说的注册中心。

服务注册与发现

注册中心的核心功能是记录和管理服务信息。通过注册中心,我们无需关心服务提供者的数量变化,只需获取服务地址即可实现服务调用。常见的注册中心包括Eureka、Nacos、Consul和Zookeeper等。其中,Eureka是Netflix开发的服务发现框架,广泛应用于Spring Cloud微服务体系中。

Client和Server功能对比

Client功能

  • 服务注册:微服务启动时,将自身网络地址等信息注册至注册中心,注册中心存储这些信息。
  • 服务发现:服务消费者从注册中心查询服务提供者的网络地址,并使用该地址调用服务提供者。为了减少服务查询频率,Client通常会将注册表信息缓存到本地。
  • 心跳机制:Client定期向注册中心发送心跳,维护服务实例的租约有效性。如果注册中心长时间未收到心跳,将注销该实例。
  • 服务调用:通过注册表解析服务名和地址关系,找到具体服务地址并进行调用。
  • Server功能

  • 服务注册表:记录各微服务的实例信息,包括服务名称、IP地址和端口等。
  • 服务注册与发现:通过API接口提供服务注册和查询功能。
  • 服务检查:定期检测已注册的服务实例,发现长时间无法访问的实例并从注册表中移除。
  • Eureka单节点搭建

    pom.xml配置

    在项目中添加必要的依赖:

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server

    application.yml配置

    server:  port: 8500eureka:  client:    register-with-eureka: false    fetch-registry: false    service-url:      defaultZone: http://localhost:8500/eureka/

    启动类

    import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer@SpringBootApplicationpublic class EurekaServerApplication {    public static void main(String[] args) {        SpringApplication.run(EurekaServerApplication.class, args);    }}

    服务注册

    pom.xml配置

    在客户端项目中添加:

    org.springframework.boot
    spring-boot-starter-web
    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

    application.yml配置

    eureka:  client:    service-url:      defaultZone: http://localhost:8500/eureka/    instance:      appname: mxn

    启动类

    import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient@SpringBootApplicationpublic class EurekaClientApplication {    public static void main(String[] args) {        SpringApplication.run(EurekaClientApplication.class, args);    }}

    Eureka端点

    Eureka服务器提供了丰富的REST API,主要包括:

    • /eureka/apps/{applicationName}:查看已注册服务的详细信息。

    为了方便管理和监控,可以通过这些端点获取实时的服务状态信息。

    Eureka原理

    核心机制

  • 注册与发现:服务提供者向注册中心注册信息,服务消费者从注册中心获取服务地址。
  • 心跳与续约:服务实例定期发送心跳,维持租约有效性。如果未收到心跳,注册中心会剔除该实例。
  • 自我保护机制:防止网络分区故障导致健康服务被错误下线。
  • 自我保护

    默认情况下,Eureka Server每分钟检查心跳次数。如果心跳次数低于阈值,可能触发自我保护机制。通过配置enable-self-preservation: false,可以关闭自我保护。

    Eureka缺陷

    在集群环境中,注册表信息通过HTTP同步复制,存在数据一致性问题,这在CAP定理中被认定为不满足C(一致性)要求。

    总结

    通过以上内容,我们了解了Eureka服务注册与发现的基本原理和应用方式。在实际应用中,Eureka作为微服务架构的重要组件,帮助开发者简化服务间通信,提升系统可用性和可靠性。如果您对本文有疑问或建议,欢迎在评论区讨论。

    转载地址:http://naliz.baihongyu.com/

    你可能感兴趣的文章
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>
    Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
    查看>>
    NMAP网络扫描工具的安装与使用
    查看>>
    NMF(非负矩阵分解)
    查看>>
    NN&DL4.1 Deep L-layer neural network简介
    查看>>
    NN&DL4.3 Getting your matrix dimensions right
    查看>>
    NN&DL4.8 What does this have to do with the brain?
    查看>>
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    查看>>
    NO 157 去掉禅道访问地址中的zentao
    查看>>
    No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
    查看>>