注册中心(eureka)

单实例eureka搭建、高可用eureka搭建、注册中心原理

一、eureka注册中心服务端

1、项目结构(idea & mac 环境)

项目结构

配置maven 依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

application.properties

#应用名称
spring.application.name=SingleEureka

#激活的配置文件
spring.profiles.active=9001

Java 启动类

开启eureka服务器配置,添加 @EnableEurekaServer 注解

@SpringBootApplication
@EnableEurekaServer
public class SingleEurekaApplication {

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

}

/etc/hosts

追加如下3行(高可用场景使用到)

127.0.0.1       eureka2.com
127.0.0.1       eureka3.com
127.0.0.1       eureka4.com



2、单机注册中心

application-9001.properties

#服务器端口
server.port=9001

#不从其它eureka拉取注册信息
eureka.client.fetch-registry=false
#不向其它eureka注册自己
eureka.client.register-with-eureka=false
#注册地址
eureka.client.service-url.default-zone=http://localhost:9001/eureka

验证

修改application.properties

spring.profiles.active=9001

项目启动后访问 http://localhost:9001/
单机注册中心
单机注册中心就搭建完了!!!



3、高可用注册中心

eureka2配置

application-9002.properties
server.port=9002

eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
#注册和拉取信息地址
eureka.client.service-url.defaultZone=http://eureka3.com:9003/eureka,http://eureka4.com:9004/eureka
#主机名
eureka.instance.hostname=eureka2.com
验证

修改application.properties

spring.profiles.active=9002

启动项目
启动时有如下错误提示,由于eureka3 、eureka4还没有启动,eureka2启动时链接eureka3、eureka4报错,正常现象(忽略即可)
在这里插入图片描述

项目启动后访问 http://eureka2:9002/
在这里插入图片描述
eureka3、eureka4还没启动,不可用

eureka3配置

application-9003.properties
server.port=9003

eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
#注册和拉取信息地址
eureka.client.service-url.defaultZone=http://eureka2.com:9002/eureka,http://eureka4.com:9004/eureka
#主机名
eureka.instance.hostname=eureka3.com
验证

修改application.properties

spring.profiles.active=9003

启动项目后,访问http://eureka3.com:9003/
在这里插入图片描述

忽略链接eureka4报错。。。

eureka4配置

application-9004.properties
server.port=9003

eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
#注册和拉取信息地址
eureka.client.service-url.defaultZone=http://eureka2.com:9002/eureka,http://eureka3.com:9003/eureka
#主机名
eureka.instance.hostname=eureka4.com
验证

修改application.properties

spring.profiles.active=9004

启动项目后,访问http://eureka4.com:9004/

在这里插入图片描述
eureka2、eureka3、eureka4组成的高可用注册中心就搭建完了!!!



二、客户端

服务提供者配置

项目结构

在这里插入图片描述

maven依赖

pom添加下面依赖

 <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  </dependency>

Spring配置

application.properties

#服务端口
server.port=9010
#服务名称
spring.application.name=hello-provider

#使用单个实例注册中心
#eureka.client.service-url.defaultZone=http://localhost:9001/eureka
#使用高可用注册中心,也可将多个注册中心实例用逗号分割拼接
eureka.client.service-url.defaultZone=http://eureka2.com:9002/eureka

启动类

添加 @EnableEurekaClient 注解

@SpringBootApplication
@EnableEurekaClient
public class HelloProviderApplication {

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

}

controller提供rest接口

@RestController
public class HelloController {
    
    @GetMapping("hello")
    public String hello(String name){
        return String.format("Hello %s!",name==null?"World":name);
    }
}

验证

step1、启动服务
step2、浏览器请求http://localhost:9010/hello?name=xiaoming
在这里插入图片描述
step3、查看注册中心 http://eureka4.com:9004/
在这里插入图片描述

三、原理

注册中心业务流程时序图

注册中心 服务A实例a 服务B实例b 启动时向注册中心注册服务 定期(默认每隔30秒)向注册中心发送心跳 检测到超时(默认90秒)未收到心跳的服务实例从服务实例列表剔除 启动时向注册中心注册服务 定期(默认每隔30秒)向注册中心发送心跳 获取服务A实例列表,并缓存(默认每隔30秒刷新) 业务请求 服务A实例a下线向注册中发送下线通知 注册中心 服务A实例a 服务B实例b

注册中心提供的功能

  • 服务注册
  • 服务续约
  • 服务下线
  • 不可用服务检测下线
  • 服务列表查询
  • 。。。

eureka 相关参数配置

服务器端配置

#关闭自我保护模式
eureka.server.enable-self-preservation=false
#失效服务间隔
eureka.server.eviction-interval-timer-in-ms=3000

客户端配置

#续约发送间隔默认30秒,心跳间隔
eureka.instance.lease-renewal-interval-in-seconds=5
#表示eureka client间隔多久去拉取服务注册信息,默认为30秒,对于api-gateway,如果要迅速获取服务注册状态,可以缩小该值,比如5秒
eureka.client.registry-fetch-interval-seconds=5
# 续约到期时间(默认90秒)
eureka.instance.lease-expiration-duration-in-seconds=60
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值