Spring Cloud ---02-- Eureka注册中心
Eureka 注册中心
作用:服务注册和发现
提供者(Provider)
向注册中心注册自己的地址消费者(Consumer)
从注册中心发现其他服务
eureka的运行机制
- 注册 - 一次次反复连接eureka,直到注册成功为止
- 拉取 - 每隔30秒拉取一次注册表,更新注册信息
- 心跳 - 每30秒发送一次心跳,3次收不到心跳eureka会删除这个服务
- 自我保护模式 - 特殊情况,由于网络不稳定15分钟内85%服务器出现心跳异常
- 保护所有的注册信息不删除
- 网络恢复后,可以自动退出保护模式
- 开发测试期间,可以关闭保护模式
一 :搭建eureka server 项目
流程
- 创建eureka项目
- 配置依赖 pom.xml
- 配置 application.yml
- 主程序启用 eureka 服务器 添加 @EnableEurekaServer
- 启动,访问测试
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 服务器
流程
- pom.xml 添加eureka依赖
- application.yml 添加eureka注册配置
- 主程序启用eureka客户端
- 启动服务,在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注册中心相关推荐
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- Spring Cloud 一:注册中心
1.Spring Cloud Spring Cloud是基于Spring Boot的用于管理Spring Boot创建的各个微服务应用,Spring Cloud使用erureka server注册中心 ...
- spring cloud微服务注册中心EurekaServer
注册中心EurekaServer pom文件: <?xml version="1.0" encoding="UTF-8"?> <project ...
- 【Spring Cloud】Nacos注册中心
文章目录 五.Nacos注册中心 5.1 认识和安装Nacos 5.2 服务注册到nacos 1)引入依赖 2)配置nacos地址 3)重启 5.3 服务分级存储模型 5.3.1 给user-serv ...
- 基于Spring Cloud Gateway 和 注册中心实现灰度发布
什么是灰度发布? 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B ...
- spring cloud集成nacos注册中心、配置中心、服务远程调用
简介 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构建.交付和 ...
- Java行之有效的学习方法,Java直播课:Spring Cloud Alibaba Nacos 注册中心
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...
- Spring cloud Alibaba Nacos注册中心(2) NacosNamingService
NacosNamingService 文章目录 NacosNamingService 1.NamingProxy 2.BeatReactor 3.HostReactor 3.1 初始化 3.2 Fai ...
- Spring Cloud 之 Eureka.
一.微服务概述 1. 什么是微服务 简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于 RPC 进行 ...
- Spring Cloud之服务注册与发现机制
一.复杂与简单并存 1.背景: 到底是复杂好还是简单好,这是一个没有答案的问题,也是一个哲学问题.见仁见智啦.事物整体肯定是向复杂化方向发展,但是向人们呈现时应尽量简单化.用一句话来说就是:功能复杂化 ...
最新文章
- mysql册_Mysql手册
- python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较
- 22.类对象和类指针
- win8.1 mysql使用教程_windows下mysql 8.0.12安装步骤及基本使用教程
- ustc小道消息20211215
- 英语音标 语言、语音、音素及音标
- ES6新特性之字符串扩展
- Linux维护笔记四
- 用户思维模型,围绕用户核心四大模块,拉新、养熟、成交、裂变循环的效果...
- docker fdfs修改storage ip
- php exec执行多条命令,小技巧:在PHP中调用多条shell指令
- 小米11渲染图曝光:屏下摄像头技术现身还有方形5摄相机模组
- Jmeter (三十)jmeter+ant+jenkins持续集成
- 2级c语言题库及答案,2019-C语言二级考试题库(含答案)
- SDS之BlockChain Storage系列:3、为什说区块链存储是下一个热点 (上)
- 设计师思维模式你get到多少个?
- inno setup将exe应用打包成——安装包
- 利用FFMPEG实现音频视频升降调
- 什么叫五口POE交换机 五口POE交换机使用方法
- python去掉数字最后的零_结尾0的个数Python
热门文章
- GBase 8a 资源管理简介
- 2023年小程序游戏发展前景分析
- Mysql中使用mysqlbinlog恢复数据
- 1.3 Seven Testing Principles
- 74HC165D驱动 2021-05-08
- CVPR2018_Real-Time Rotation-Invariant Face Detection with Progressive Calibration Network
- NetScaler 12.1 发布
- J2EE工作流管理系统jBPM详解(一)
- AAAI 2018文章 Representation Learning for Scale-free Networks 翻译
- 阿里曾洽谈收购才云科技事宜:被字节跳动截胡,收入囊中