Eureka入门 ; 服务注册中心,服务注册服务发现;SpringCloud eureka

news/2024/12/5 0:31:17/

一、引入

Spring Cloud封装了netflix公司的Eureka模块来进行实现服务治理。

在传统的RPC远程调用框架中,管理每个服务服务之间依赖关系比较复杂,所以需要服务治理,管理服务之间的依赖。可以实现服务注册、调用、负载均衡、容错等技术。

image-20230505220722812

1. 服务注册与发现

image-20230505220806087

2. Eureka概念

eureka包含两个不同的组件: Eureka Server和Eureka Client

Eureka Server

提供注册服务,各个服务节点可以通过配置启动,会在Eureka Server中注册

Eureka Client

是一个Java客户端,简化和Eureka Server的交互,客户端同时具备内置的、是用轮询的负载算法,来检测服务是否还活着。默认每个心跳周期为30s,若EurekaServer在三个周期内没收到某个服务心跳,则会将服务注册表中这个服务节点移除。

3. Eureka原理

二、eureka使用

1. 单点模式

  1. 建立eureka的ServerMoudle

    image-20230505222625938

  2. 编写pom文件

     <dependencies><!-- 服务注册中心的服务端 eureka-server --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><!--        <dependency>--><!--            <groupId>com.atguigu.springcloud</groupId>--><!--            <artifactId>cloud-api-commons</artifactId>--><!--            <version>${project.version}</version>--><!--        </dependency>--><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web  --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --><!--        <dependency>--><!--            <groupId>org.springframework.boot</groupId>--><!--            <artifactId>spring-boot-devtools</artifactId>--><!--            <scope>runtime</scope>--><!--            <optional>true</optional>--><!--        </dependency>--><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><!--        <dependency>--><!--            <groupId>org.projectlombok</groupId>--><!--            <artifactId>lombok</artifactId>--><!--        </dependency>--><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies>
    
  3. 配置yaml文件

    server:port: 7001
    eureka:instance:hostname: localhostclient:serviceUrl:#交互依赖该地址defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka#证明自己是注册中心服务registerWithEureka: false# 不进行注册fetchRegistry: false
    
  4. 添加注解

    开启eureka服务。

    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class);}
    }
    

    显示以下网页则说明服务启动成功。

    image-20230505222912158

    1. 消费者服务注册

    1. 引入Eureka-client的依赖
      <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
    1. 配置yaml文件
    eureka:client:register-with-eureka: true    #表示不向注册中心注册自己fetch-registry: true   #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务service-url:#设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址defaultZone: http://localhost:7001/eureka
    
    1. 在主启动类添加注解启动
    @SpringBootApplication
    @EnableEurekaClient
    public class OrderMainApplication {public static void main(String[] args) {SpringApplication.run(OrderMainApplication.class);}
    }
    

    image-20230505224920437

    支付模块同以上步骤。


2、集群模式

image-20230506221812246

微服务PRC远程服务调用当中,最核心的就是高可用

注册服务中心,让其互相注册。互相守望。

1、 修改host文件,添加域名映射本机

######### springCloud2022.5.6 ##########
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com

2、 创建两个服务注册中心微服务,两个服务实现互相调用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xvS02GNX-1685436004724)(C:\Users\JaneOnly\AppData\Roaming\Typora\typora-user-images\image-20221111234237970.png)]

#服务一
server:port: 7001
eureka:instance:hostname: eureka7001.comserver:responseCacheUpdateIntervalMs: 3000responseCacheAutoExpirationInSeconds: 180evictionIntervalTimerInMs: 3000client:serviceUrl:defaultZone: http://eureka7002.com:7002/eurekahealthcheck:enabled: trueregisterWithEureka: falsefetchRegistry: false# 服务二
server:port: 7002
eureka:instance:hostname: eureka7002.comserver:responseCacheUpdateIntervalMs: 3000responseCacheAutoExpirationInSeconds: 180evictionIntervalTimerInMs: 3000client:serviceUrl:defaultZone: http://eureka7001.com:7001/eurekahealthcheck:enabled: trueregisterWithEureka: falsefetchRegistry: false# 注册集群
server:port: 8001
spring:application:name: cloud-pri-servicedatasource:url: jdbc:mysql://localhost:3306/springcloud?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTCdriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: rootdevtools:restart:enabled: truemybatis:type-aliases-package: com.atjianyi.entites #配置别名mapper-locations: classpath:com/atjianyi/mapper/xml/*.xml #配置mapper映射文件configuration:map-underscore-to-camel-case: true #配置文件eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
# 注册测服务名称相同
server:port: 8002
eureka:client:register-with-eureka: truefetch-registry: trueservice-url:defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka#添加主机名称instance:instance-id: payment8002prefer-ip-address: true #显示IP
  1. 启动服务,就可以访问eureka服务查看注册微服务。

image-20230506225134757

  1. 配置支付微服务集群

    以上步骤我们配置Eureka Server的多个集群服务,那么下面,我们就开始配置支付微服务的集群配置 ;开通8001 和8002服务

image-20230506225541151

image-20230506235208844

支付集群配置不同得端口即可。

  1. 消费者调用支付集群

先开启RestTemplate当中负载均衡模式,后修改调用地址为服务名称即可。无需关心端口和地址;

image-20230506235641172

image-20230506235946881

最后,我们可以完善以下acturator的监控信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g2xvm45J-1685436004727)(C:/Users/janeonly/AppData/Roaming/Typora/typora-user-images/image-20230509201108749.png)]


3. 服务发现

当我们想Eureka服务注册信息后,我们可以通过服务发现,来获取某个微服务的具体信息。

使用

  1. 修改服务提供者的主启动类,开启服务发现

image-20230509202819713

  1. 在controller当中注入Dis

image-20230509222051420

然而eureka已经停止更新了,不用学了 hhhh

4. Eureka自我保护

Eureka在CAP理论当中,选择了AP,也就是在P的前提下保证A(可用性),这种保护机制就是为了防止Client正常运行,但是与EurekaServer网络不通的情况,Server就不会立刻将Client移除。

image-20230509222951879

禁用自我保护模式

Server端在2s收不到心跳,删除client记录

image-20230509223626285

Client端每1s发送心跳

image-20230509223809996



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

相关文章

Spring Boot 如何实现异步消息处理

Spring Boot异步消息处理 在现代应用程序中&#xff0c;异步消息处理是一项至关重要的任务。它可以提高应用程序的性能、可伸缩性和可靠性&#xff0c;同时也可以提供更好的用户体验。Spring Boot提供了多种方式来实现异步消息处理&#xff0c;包括使用Spring AMQP、Spring Ka…

Elasticsearch数据库

目录 1. 什么是ElasticSearch1.1 概念及特点1.2 ElasticSearch适用场景概述 2. 安装ElasticSearch2.1 下载安装包2.2 环境说明2.3 创建es的用户2.4 创建es存储位置2.5 安装es2.5 修改配置文件2.6 系统优化2.7 安装jdk环境2.8 切换es用户启动数据库2.9 systemctl管理2.10 访问 3…

AI浪潮再掀低代码开发热,快来了解最新趋势!

在近些年的发展中&#xff0c;人工智能 (AI) 已融入我们社会和生活的方方面面。从聊天机器人和虚拟助手到自动化工业机械和自动驾驶汽车&#xff0c;我们已经越来越离不开AI技术了&#xff0c;哪怕是我们的日常生活中也充满了它的影子&#xff0c;我们很难忽视它的影响。 AI时代…

解锁Qt QListWidget的全部潜力——用最佳实践和技巧赢得用户的喜爱和赞誉!

文章目录 前言一、属性和方法添加列表项获取当前选中的列表项删除列表项列表显示模式交替背景色 二、信号与槽选中的行数变化item被点击 三、解决icon图标模式下图标不对称的问题1、设置属性2、面向结果的手动换行 总结 前言 在现代的GUI应用程序中&#xff0c;列表框是必不可…

lmsys.org最新的LLM排行榜

lmsys.org Large Model Systems Organization (LMSYS Org) 是一个开放的研究组织&#xff0c;由加州大学伯克利分校的学生和教师与加州大学圣地亚哥分校和卡内基梅隆大学合作创立。 他们的目标是通过共同开发开放数据集、模型、系统和评估工具&#xff0c;让每个人都能访问大…

如何通过自学成为一名白帽黑客(网安工程师)

从事网络安全这么多年&#xff0c;总是会被问到很多奇奇怪怪的问题&#xff1a; 「叔叔&#xff0c;我Steam账号被盗了&#xff0c;能帮忙找回吗&#xff1f;我给你发红包」 「我的手机被监控了&#xff0c;生活和工作受到了严重影响&#xff0c;该怎么解决&#xff1f;」 「…

Mapbox GL在Vue项目中的应用(综合demo)

Mapbox GL在Vue项目中的应用 1、Mapbox简介2、vue项目mapboxgl案例2.1 实现的功能2.2 具体代码2.3 YOUR_PLAYBACK_INTERVA的含义 1、Mapbox简介 MapboxGL是一个强大的JavaScript库&#xff0c;用于创建交互式和可自定义的地图。它基于WebGL构建&#xff0c;能够在浏览器中高效地…

云原生之部署Docker轻量级管理面板EasyDockerWeb

云原生之部署Docker轻量级管理面板EasyDockerWeb 一、EasyDockerWeb介绍1. EasyDockerWeb简介2. 环境要求3. EasyDockerWeb特点 二、本地环境介绍1. 本地环境规划2. 本次实践介绍 三、本地环境检查1.检查Docker服务状态2. 检查Docker版本 四、下载EasyDockerWeb镜像五、部署Eas…