码迷,mamicode.com
首页 > 编程语言 > 详细

Spring-Cloud之Eureka

时间:2021-05-24 03:57:31      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:查看   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依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon-eureka</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>

编写启动类:

@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依赖如下:

<!--eureka注册中心客户端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.netflix.ribbon</groupId>
            <artifactId>ribbon-eureka</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it to the classpath.-->
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!