博客
关于我
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/

    你可能感兴趣的文章
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现9x9乘法表算法(附完整源码)
    查看>>
    Objective-C实现9×9二维数组数独算法(附完整源码)
    查看>>
    Objective-C实现A*(A-Star)算法(附完整源码)
    查看>>
    Objective-C实现A-Star算法(附完整源码)
    查看>>
    Objective-C实现abbreviation缩写算法(附完整源码)
    查看>>
    Objective-C实现ABC人工蜂群算法(附完整源码)
    查看>>
    Objective-C实现activity selection活动选择问题算法(附完整源码)
    查看>>
    Objective-C实现AC算法(Aho-Corasick) 算法(附完整源码)
    查看>>
    Objective-C实现adaboost算法(附完整源码)
    查看>>
    Objective-C实现Adler32算法(附完整源码)
    查看>>
    Objective-C实现AES算法(附完整源码)
    查看>>
    Objective-C实现AffineCipher仿射密码算法(附完整源码)
    查看>>
    Objective-C实现aliquot sum等分求和算法(附完整源码)
    查看>>
    Objective-C实现all combinations所有组合算法(附完整源码)
    查看>>
    Objective-C实现all permutations所有排列算法(附完整源码)
    查看>>
    Objective-C实现all subsequences所有子序列算法(附完整源码)
    查看>>
    Objective-C实现AlphaNumericalSort字母数字排序算法(附完整源码)
    查看>>
    Objective-C实现alternate disjoint set不相交集算法(附完整源码)
    查看>>
    Objective-C实现alternative list arrange备选列表排列算法(附完整源码)
    查看>>