Spring-Cloud之Eureka

2021-05-30 15:07

阅读:538

标签:查看   pid   artifact   机制   的区别   The   false   loading   节点   

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。 Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Server 负责统一管理服务信息;Eureka Client负责和Eureka Server通信维护服务信息。

说明

eureka的单机版和集群版的区别只是配置不一样而已,因此这里将公共的部分提取到前面;下面示例使用的Spring-Cloud的版本是Hoxton.SR8,Spring-Boot的版本是2.3.4.RELEASE。示例项目的源代码

添加如下maven依赖:

org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server
    org.springframework.cloud
            spring-cloud-starter-netflix-ribbon
        com.netflix.ribbon
            ribbon-eureka
        com.github.ben-manes.caffeine
    caffeine

编写启动类:

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

application.yml配置示例如下

Eureka单机版配置

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    # 是否将自己注册到Eureka Server 默认为true
    registerWithEureka: false
    # 是否从Eureka Server查询注册信息
    fetchRegistry: false
    # 配置eureka服务的地址
    serviceUrl:
      defaultZone: http://127.0.0.1:${server.port}/eureka/
  server:
    # 自我保护机制,开发环境建议关闭
    enable-self-preservation: false
spring:
  cloud:
    loadbalancer:
      ribbon:
        enabled: false

之后直接访问http://127.0.0.1:8761 即可进入eureka的界面。

Eureka集群版配置

server:
  port: 8761
eureka:
  instance:
    # 这里也可以使用域名
    prefer-ip-address: true
    instance-id: 127.0.0.1:8761
  client:
    # 是否将自己注册到Eureka Server 默认为true
    registerWithEureka: false
    # 是否从Eureka Server查询注册信息
    fetchRegistry: true
    # 配置eureka服务注册地址;多个使用英文逗号分开
    serviceUrl:
      defaultZone: http://127.0.0.1:8761/eureka/,http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/
spring:
  cloud:
    loadbalancer:
      ribbon:
        enabled: false

关于配置eureka服务注册地址是否可以配置它自己的问题?

答案是可以的,因为eureka server构建的集群节点信息PeerEurekaNodes里面,在定时更新注册中心节点信息的时候,会自动检查注册地址中是否有它自己的注册地址,有的话会将其去掉的;所以可以配置它自己的注册地址。

接上面的问题,为什么eureka要将注册地址中自己的注册地址去掉:查看eureka client的注册过程,eureka server会在更新自己本地注册表后,将这个注册信息依次推送到集群中其他的eureka server上去。因此要把自己的地址过滤掉(自己发送给自己干啥)

fetchRegistry:为什么要建议配置为true呢?因为我们知道eureka client每次只会向其中一台机器发送注册信息,心跳也是只会向一台机器发送;而注册中心集群间的注册表同步是在收到客户端发送的信息后,在自己处理完成后,再将这个信息转发给集群中其他节点(如果失败会不停的重试);但是如果配置为true的话,能够主动的去更新这个信息,依此达到注册表能够更快速的同步的目的。

Eureka 客户端端的使用

Eureka服务端无论是单机版部署还是集群部署,客户端的配置都是一样的。添加maven依赖如下:


org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client
    org.springframework.cloud
            spring-cloud-starter-netflix-ribbon
        com.netflix.ribbon
            ribbon-eureka
        com.github.ben-manes.caffeine
    caffeine

application.yml配置如下:

# 注册中心eureka配置
eureka:
  client:
    serviceUrl:
      # 多个节点使用英文逗号分开
      defaultZone: http://127.0.0.1:8761/eureka/,http://127.0.0.1:8762/eureka/,http://127.0.0.1:8763/eureka/

技术图片

Spring-Cloud之Eureka

标签:查看   pid   artifact   机制   的区别   The   false   loading   节点   

原文地址:https://www.cnblogs.com/vchar/p/14749665.html


评论


亲,登录后才可以留言!