微服务Spring Cloud 02------使用Eureka实现注册中心(1)

news/2025/3/29 18:20:40/

1.Eureka简介

Eureka是Spring Cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)和P(分区容错性)。
Eureka是Netflix中的一个开源框架。它和 Zookeeper、Consul一样,都是用于服务注册管理的,同样,Spring-Cloud 还集成了Zookeeper和Consul。
一个Eureka中分为Eureka Server和EurekaClient
Eureka Server
提供服务注册与发现服务
Eureka Client
Service Provider 服务提供方,将自身服务注册到Eureka,从而使服务消费方能够找到;
Service Consumer服务消费方,从Eureka获取注册服务列表,从而能够消费服务。

 

2.使用Eureka实现注册中心

首先新建一个微服务的项目,建立一个空的项目文件夹

1)当你建一个项目之后需要,在idea中配置如下配置

 2)新建一个Module项目

 

 3)修改配置文件pom.xml的配置,修改里面的版本号

  <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.micro</groupId><artifactId>demo-eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><name>demo-eureka-server</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><spring-cloud.version>Hoxton.SR1</spring-cloud.version></properties>

4)在启动类上加上注解@EnableEurekaServer,这个注解是启动我们注册服务中心

 5)在application中.yml中添加配置信息

server:port: 7706
#自己给自己的服务起名字
spring:application:name: register-centersecurity:user:name: rootpassword: rooteureka:instance:hostname: localhostclient:fetch-registry: false #自己就是注册中心,职责是服务的注册与发现,不需要向注册进来的服务器发请求/??????register-with-eureka: false #自己就是注册中心,不需要向自己注册自己service-url: #向外暴露自己IP,端口,注册的请求路径defaultZone: http://192.168.2.220:7707/eureka/,http://127.0.0.1:7708/eureka/#defaultZone:  http://${eureka.instance.hostname}:${server.port}/eureka/server:enable-self-preservation: true #启用自我i保护eviction-interval-timer-in-ms: 5000

3.Eureka的自我保护机制

1)在默认配置中,Eureka Server在默认90s没有得到客户端的心跳则注销该实例,
2)但是往往因为微服务跨进程调用,网络通信往往会面临着各种问题,比如微服务状态正常,但是因为网络分区故障时,Eureka Server注销服务实例则会让大部分微服务不可用,这很危险,因为服务明明没有问题。
3)为了解决这个问题,Eureka 有自我保护机制。
4)它的原理是,当Eureka Server节点在短时间内丢失过多的客户端时(可能发送了网络故障),那么这个节点将进入自我保护模式,不再注销任何微服务,当网络故障回复后,该节点会自动退出自我保护模式。

4.Eureka的集群配置

1)在分布式系统中,任何的地方存在单点,整个体系就不是高可用的,Eureka 也一样,而是以集群的方式对外提供服务。
2)如果单机版本Eureka服务端宕机,会导致所有服务都无法获取使用,为了保证高可用性,我们需要搭建Eureka集群

 

1)  Eureka Server同时也可以是Eureka Client,当有多个节点时,如上图1d,1e,1c之间的Eureka Server通过互相复制来同步自己的服务注册表。
2)  Eureka Client也会缓存服务注册表中的信息,这样不用每次请求都查询Eureka Server,降低Eureka Server的压力,即使所有Eureka Server都宕机了,消费者仍然可以根据缓存来完成调用。

5.实现Eureka的集群配置

1)复制单机版的项目为cluster-eureka-server的Spring Boot项目

 

2) 添加配置信息

 

在这里面最重要的就是server的端口号不一样,然后就是下面代码中的name值要一样,然后就是要修改defaultZone的值将端口号修改为对方服务器的端口号

#自己给自己的服务起名字
spring:application:name: register-center

还有就是多个服务互联,大于两个的话,只需要在application.yml中做如下配置就好

defaultZone: http://192.168.2.220:7707/eureka/,http://127.0.0.1:7708/eureka/

3)启动项目(项目结构如下)

 

 6.实现集群版注册中心

需求说明
实现集群版注册中心
运行Eureka Server服务,并访问主页

7.修改windows系统中的hosts文件

1)修改C:\Windows\System32\drivers\etc下的hosts文件

 2)在文件中添加如下的内容:

 9)为Eureka Server添加用户认证(也就是说进入这些独立的服务器集群需要用户名和密码的认证,否则无法进入)

1)添加依赖


2)添加配置信息

pplication.yml

spring.security.user.name #认证用户名
spring.security.user.password #认证密码

 

 3)在启动类中添加放行代码

public class DemoEurekaServerApplication {public static void main(String[] args) {SpringApplication.run(DemoEurekaServerApplication.class, args);}@EnableWebSecuritystatic class WebSecurityConfig extends WebSecurityConfigurerAdapter{@Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().disable();super.configure(http);}}
}

4)启动服务,出现登录页面


http://www.ppmy.cn/news/109876.html

相关文章

《Java并发编程实战》课程笔记(四)

互斥锁 原子性问题到底该如何解决呢&#xff1f; “同一时刻只有一个线程执行”这个条件非常重要&#xff0c;我们称之为互斥。如果我们能够保证对共享变量的修改是互斥的&#xff0c;那么&#xff0c;无论是单核 CPU 还是多核 CPU&#xff0c;就都能保证原子性了。 锁模型 …

Python中的魔法函数

魔法函数&#xff08;Magic functions&#xff09;&#xff0c;也称为特殊方法&#xff08;Special methods&#xff09;&#xff0c;是在 Python 中具有特殊名称和双下划线&#xff08;__&#xff09;前缀和后缀的特殊函数。 这些魔法函数允许您定义自定义行为&#xff0c;以…

RocketMQ的demo代码

下面是一个使用Java实现的RocketMQ示例代码&#xff0c;用于发送和消费消息&#xff1a; 首先&#xff0c;您需要下载并安装RocketMQ&#xff0c;并启动NameServer和Broker。 接下来&#xff0c;您可以使用以下示例代码来发送和消费消息&#xff1a; Producer.java文件&…

SpringBoot自动配置原理总结

1、我们需要从主启动类的SpringBootApplication注解开始分析&#xff1a; SpringBootApplication是一个复合注解&#xff0c;进入以后看到主要包括以下三个注解&#xff1a; SpringBootConfiguration EnableAutoConfiguration ComponentScan(excludeFilters { Filter(type …

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-GRU麻雀算法优…

【22-23 春学期】AI作业11-RNN

1.前馈网络存在的问题 前馈网络是一种单向传递信息的神经网络&#xff0c;它不能处理序列数据&#xff0c;也不能捕捉时间序列数据中的依赖关系。 2.序列数据 序列数据指的是一种按照先后顺序排列的离散数据。只要类似这种一串的数据&#xff0c;前后有顺序关系的数据都叫序…

Linux:centos:周期性计划任务管理《crontab》

crontab常用基础属性 -e 编辑计划任务 -l 查看计划任务 -r 删除计划任务 -u 指定用户的计划任务 首先创建一个名为test的用户名 crontab时间规定 格式&#xff1a;分钟 小时 日期 月份 星期 命令 分钟-- 0-59整数 小时 -- 0-23整数 日期 -- 1--31 整数 月份 -- 1-12 整数 星期…

35岁会后软件测试何去何从?

前言   在这个行业&#xff0c;到了35还没有干到高级测试开发或者架构师的水平&#xff0c;那就真是的不好干了&#xff0c;因为这个年龄&#xff0c;面对的竞争不是20多岁小年轻可以比的。   如果你25岁了&#xff0c;中间有10年的时间&#xff0c;保持敬畏心&#xff0c;…