Eureka 注册中心

作用:服务注册和发现

  • 提供者(Provider)
    向注册中心注册自己的地址

  • 消费者(Consumer)
    从注册中心发现其他服务

eureka的运行机制

  • 注册 - 一次次反复连接eureka,直到注册成功为止
  • 拉取 - 每隔30秒拉取一次注册表,更新注册信息
  • 心跳 - 每30秒发送一次心跳,3次收不到心跳eureka会删除这个服务
  • 自我保护模式 - 特殊情况,由于网络不稳定15分钟内85%服务器出现心跳异常
    • 保护所有的注册信息不删除
    • 网络恢复后,可以自动退出保护模式
    • 开发测试期间,可以关闭保护模式

一 :搭建eureka server 项目

流程

  1. 创建eureka项目
  2. 配置依赖 pom.xml
  3. 配置 application.yml
  4. 主程序启用 eureka 服务器 添加 @EnableEurekaServer
  5. 启动,访问测试

1.创建 eureka server 项目

sp05-eureka

2. 配置依赖 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.tedu</groupId><artifactId>sp05-eureka</artifactId><version>0.0.1-SNAPSHOT</version><name>sp05-eureka</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Hoxton.RELEASE</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3. 配置 application.yml

spring:application:  name: eureka-server    //主机名(集群中区分每台服务器)server:port: 2001eureka:server:enable-self-preservation: false  //关闭保护模式instance:hostname: eureka1client:register-with-eureka: false //不向自己注册fetch-registry: false      //不从自己拉取

yml配置

  • 主机名(集群中区分每台服务器)
  • 关闭保护模式
  • 针对单台服务器,不向自己注册,不从自己拉取

eureka 的自我保护状态
心跳失败的比例,在15分钟内是否超过85%,如果出现了超过的情况,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。也就是不会注销任何微服务

4.主程序启用 eureka 服务器

  • 添加 @EnableEurekaServer
package cn.tedu.sp05;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer
@SpringBootApplication
public class Sp05EurekaApplication {public static void main(String[] args) {SpringApplication.run(Sp05EurekaApplication.class, args);}}

5. 启动,访问测试

hosts修改

127.0.0.1 eureka1
127.0.0.1 eureka2

启动,并访问测试

  • http://eureka1:2001

二 :service provider 服务提供者


修改 item-service、user-service、order-service,把微服务注册到 eureka 服务器

流程

  1. pom.xml 添加eureka依赖
  2. application.yml 添加eureka注册配置
  3. 主程序启用eureka客户端
  4. 启动服务,在eureka中查看注册信息

1. pom.xml 添加eureka依赖

右键点击项目,或点击pom.xml,用 STS 工具编辑起步依赖

安装插件EditStarters



上面的操作会在pom.xml中添加以下依赖

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

2. application.yml 添加eureka注册配置

eureka:client:service-url:defaultZone: http://eureka1:2001/eureka
  • eureka.instance.lease-renewal-interval-in-seconds
    心跳间隔时间,默认 30 秒

  • eureka:client:service-url: defaultZone:http:// xxxxxx
    默认位置,可以修改为具体地理位置,比如:beiJing, shangHai, shenZhen 等,表示 eureka 服务器的部署位置, 需要云服务器提供

  • eureka.client.registry-fetch-interval-seconds
    拉取注册信息间隔时间,默认 30 秒

3. 主程序启用eureka客户端

修改 item-service、user-service 和 order-service,主程序添加 @EnableDiscoveryClient 注解 (可选)

新的Springboot项目可以不添加 @EnableDiscoveryClient 注解

4. 启动服务,在eureka中查看注册信息

  • http://eureka1:2001

三:eureka 和 “服务提供者”的高可用

item-service 高可用

启动参数 --server.port 可以覆盖yml中的端口配置

配置启动参数

  • item-service-8001

  • item-service-8002

启动测试

访问 eureka 查看 item-service 注册信息

eureka 高可用

添加两个服务器的 profile 配置文件

profile的配置会覆盖公用配置

application-eureka1.yml

eureka:instance:hostname: eureka1client:register-with-eureka: true  #profile的配置会覆盖公用配置fetch-registry: true        #profile的配置会覆盖公用配置service-url: defaultZone: http://eureka2:2002/eureka  #eureka1启动时向eureka2注册

application-eureka2.yml

eureka:instance:hostname: eureka2client:register-with-eureka: true  #profile的配置会覆盖公用配置fetch-registry: true        #profile的配置会覆盖公用配置service-url: defaultZone: http://eureka1:2001/eureka  #eureka2启动时向eureka1注册

配置启动参数 --spring.profiles.active 和 --server.port

  • eureka1 启动参数:
--spring.profiles.active=eureka1 --server.port=2001

  • eureka2 启动参数:
--spring.profiles.active=eureka2 --server.port=2002

访问 eureka 服务器,查看注册信息

  • http://eureka1:2001/
  • http://eureka2:2002/

eureka客户端注册时,向两个服务器注册

修改以下微服务

  • sp02-itemservice
  • sp03-userservice
  • sp04-orderservice
eureka:client:service-url:defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

Spring Cloud ---02-- Eureka注册中心相关推荐

  1. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  2. Spring Cloud 一:注册中心

    1.Spring Cloud Spring Cloud是基于Spring Boot的用于管理Spring Boot创建的各个微服务应用,Spring Cloud使用erureka server注册中心 ...

  3. spring cloud微服务注册中心EurekaServer

    注册中心EurekaServer pom文件: <?xml version="1.0" encoding="UTF-8"?> <project ...

  4. 【Spring Cloud】Nacos注册中心

    文章目录 五.Nacos注册中心 5.1 认识和安装Nacos 5.2 服务注册到nacos 1)引入依赖 2)配置nacos地址 3)重启 5.3 服务分级存储模型 5.3.1 给user-serv ...

  5. 基于Spring Cloud Gateway 和 注册中心实现灰度发布

    什么是灰度发布? 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B ...

  6. spring cloud集成nacos注册中心、配置中心、服务远程调用

    简介 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构建.交付和 ...

  7. Java行之有效的学习方法,Java直播课:Spring Cloud Alibaba Nacos 注册中心

    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...

  8. Spring cloud Alibaba Nacos注册中心(2) NacosNamingService

    NacosNamingService 文章目录 NacosNamingService 1.NamingProxy 2.BeatReactor 3.HostReactor 3.1 初始化 3.2 Fai ...

  9. Spring Cloud 之 Eureka.

    一.微服务概述 1. 什么是微服务  简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于 RPC 进行 ...

  10. Spring Cloud之服务注册与发现机制

    一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...

最新文章

  1. mysql册_Mysql手册
  2. python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较
  3. 22.类对象和类指针
  4. win8.1 mysql使用教程_windows下mysql 8.0.12安装步骤及基本使用教程
  5. ustc小道消息20211215
  6. 英语音标 语言、语音、音素及音标
  7. ES6新特性之字符串扩展
  8. Linux维护笔记四
  9. 用户思维模型,围绕用户核心四大模块,拉新、养熟、成交、裂变循环的效果...
  10. docker fdfs修改storage ip
  11. php exec执行多条命令,小技巧:在PHP中调用多条shell指令
  12. 小米11渲染图曝光:屏下摄像头技术现身还有方形5摄相机模组
  13. Jmeter (三十)jmeter+ant+jenkins持续集成
  14. 2级c语言题库及答案,2019-C语言二级考试题库(含答案)
  15. SDS之BlockChain Storage系列:3、为什说区块链存储是下一个热点 (上)
  16. 设计师思维模式你get到多少个?
  17. inno setup将exe应用打包成——安装包
  18. 利用FFMPEG实现音频视频升降调
  19. 什么叫五口POE交换机 五口POE交换机使用方法
  20. python去掉数字最后的零_结尾0的个数Python

热门文章

  1. GBase 8a 资源管理简介
  2. 2023年小程序游戏发展前景分析
  3. Mysql中使用mysqlbinlog恢复数据
  4. 1.3 Seven Testing Principles
  5. 74HC165D驱动 2021-05-08
  6. CVPR2018_Real-Time Rotation-Invariant Face Detection with Progressive Calibration Network
  7. NetScaler 12.1 发布
  8. J2EE工作流管理系统jBPM详解(一)
  9. AAAI 2018文章 Representation Learning for Scale-free Networks 翻译
  10. 阿里曾洽谈收购才云科技事宜:被字节跳动截胡,收入囊中