Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)

简介: Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)


Eureka

这篇文章先讲述一下Eureka的应用场景、代码实现案例,多个服务模块注册到Euraka中,服务之间的调用实现我会再下一篇文章中进行讲解!

Eureka组件可以实现哪些功能

Eureka主要是做:

  1. 注册发现中心
  2. 服务注册与发现的组件

什么是CAP原则?

说到Eureka不得不提到了CAP,那么什么是CAP原则呢,下面一起来看下!

CAP 原则:又称 CAP 定理,指的是在一个分布式系统中。

CAP原则三大特性:

一致性 (Consistency):在集群中,三个机器的数据是一致的。

可用性I(Availability):当有一个节点挂掉了整个集群可以继续对外提供服务。

分区容错性 (Partition tolerance):由于机房网络或者分区等原因会导致各个机器中的数据短暂不一致。

(这个特性是不可避免的)CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

说到这里再提一下Eureka和Zookeeper的区别?

Zookeeper:

遵循CP原则

Eureka:

AP原则:注重AP高可用

服务注册代码实战

整体核心实现图

搭建注册中心

下面我来通过代码的方式详细的看下如何来快速实现Eureka的使用

只需要建我标记红色框的项目,其它的不需要建,我这边是之前做的服务注册中心集群所以会有好几个注册中心

首先把目录结构给建起来,Maven项目

注意:新增项目的时候选择Java8

按照我图上的这个建,新建项目流程这边我不一一去说了,不明白的可以私信我!

第一步

先去新建注册中心01-eureka-server

第二步

修改EurekaServerApplication启动类,添加@EnableEurekaServer注解,意思是开启Eureka的注册中心的,启动类里面只需要修改一个地方添加开启Eureka注解功能。

源码如下:

package com.powernode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer //开启Eureka的注册中心的功能
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

第三步

修改yml文件(配置文件)

源码如下:

每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。

#单机
server:
    port: 8761 # eureka的默认端口
spring:
    application:
      name: eureka-server # 应用名称 不要使用特殊字符
eureka: #Eureka的配置分三类 server client 实例的  eureka-server既是服务端又是客户端
    server: #服务端每间隔多少毫秒定期删除的操作(默认是30000(30秒))
      eviction-interval-timer-in-ms: 10000
      renewal-percent-threshold: 0.85 # 续约百分比 超过85的应用没有和你续约 那么erueka不会踢除任何应用
    instance: # 实例的配置
      instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}} # 主机名称 : 应用名称 : 端口号
#      hostname: localhost # 主机名称 或者 服务的IP
#      prefer-ip-address: true #以IP的形式显示具体的服务信息
#      lease-renewal-interval-in-seconds: 5 # 服务实例的续约的时间间隔

第四步

修改pom文件

注意:是01-eureka-server的pom文件,因为这块要去指定spring Cloud以及spring Boot版本。

按照我标红色的框去修改

服务A搭建

服务A对应的项目名称是:02-eureka-client-a,千万不要改错地方哈!

第一步

先去修改yml配置文件。

源码如下:

每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。

server:
  port: 8702 # 客户端端口没有要求
spring:
  application:
    name: eureka-client-a
# 注册 发送信息
eureka:
  client:
    service-url: # 指定注册地址
      defaultZone: http://localhost:8761/eureka
    register-with-eureka: true # 可以不往eureka-server注册
    fetch-registry: true # 应用是否去拉取服务列表到本地
    # 每个10秒中去注册中心重新进行拉取 时间越短脏毒越少 性能消耗大
    registry-fetch-interval-seconds: 10 # 为了缓解服务列表的脏毒问题
  instance:
    hostname: localhost # 应用的主机名称 最好谢主机ip
    instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
    prefer-ip-address: true # 显示ip
    lease-renewal-interval-in-seconds: 10 # 实例续约的时间

第二步

修改pom文件,按图修改

服务B搭建

服务A对应的项目名称是:02-eureka-client-b,千万不要改错地方哈!

和服务A类似

第一步

先去修改yml配置文件。

源码如下:

每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。

server:
  port: 8703 # 客户端端口没有要求
spring:
  application:
    name: eureka-client-b
# 注册 发送信息
eureka:
  client:
    service-url: # 指定注册地址
      defaultZone: http://localhost:8761/eureka

第二步

修改pom文件,按图修改

启动服务

启动注册中心

先启动注册中心01-eureka-server,在启动服用A和服务B,

启动方式:点击启动文件,然后点击绿色的三角选择运行模式或者调试模式都可以

看到下图这个,说明就已经启动成功了,返回状态码为204。

注意:重点来了非常重点,在浏览器地址栏中直接输入http://localhost:8761/

如果你输入完http://localhost:8761/给你返回的是这个页面,恭喜你Eureka注册中心启动成功!,接着再去启动服务。

启动服务A

还是这种方式去启动,运行模式和调试模式都可以。

启动成功后会显示如下图所示,状态显示204。

注意:重点来了非常重点,在浏览器地址栏中直接输入http://localhost:8761/,或者是刚才已经打开这个地址了,直接F5刷新页面。

可以清除的看到在注册中心上方有一个应用名称为:EUREKA-CLIENT-A的服务注册进来了,很好,继续启动服务B。

启动服务B

服务B还是按照服务A的方式去启动,我们可以清楚的看到目前有三个服务正在运行,分别是注册中心、服务A和服务B,回到浏览器,还是那个网址下,F5刷新。

很好,可以看到服务B也注册进来了。

结束语

至此就完成了一个注册中心和两个服务模块的注册功能的实现,按照我的这种方式去搭建项目和代码实现,不明白的博主私信,大家可以看到我还有其他的组件

这是常用的Spring Cloud组件,还有第二张图的各个组件的服务,nacos文件配置中心搭建、手写网关、熔断器等等,都是源码,有需要的博主可以私信我,不收取任何费用,如果你有不明白的地方我还会免费为你进行解答,希望能帮助到大家!

本期分享就到这里咯,下期分享rabbon实现远程调用。

目录
相关文章
|
12月前
|
负载均衡 算法 Java
【SpringCloud(4)】OpenFeign客户端:OpenFeign服务绑定;调用服务接口;Feign和OpenFeign
Feign是一个WebService客户端。使用Feign能让编写WebService客户端更加简单。 它的使用方法是定义一个服务接口然后再上面添加注解。Feign也支持可拔插式的编码器和解码器。SpringCloud对Feign进行了封装,十七支持了SpringMVC标准注解和HttpMessageConverters。 Feign可用于Eureka和Ribbon组合使用以支持负载均衡
1102 139
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
15718 60
|
存储 Java 数据库
Spring Boot 注册登录系统:问题总结与优化实践
在Spring Boot开发中,注册登录模块常面临数据库设计、密码加密、权限配置及用户体验等问题。本文以便利店销售系统为例,详细解析四大类问题:数据库字段约束(如默认值缺失)、密码加密(明文存储风险)、Spring Security配置(路径权限不当)以及表单交互(数据丢失与提示不足)。通过优化数据库结构、引入BCrypt加密、完善安全配置和改进用户交互,提供了一套全面的解决方案,助力开发者构建更 robust 的系统。
587 0
|
人工智能 Cloud Native 安全
DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集
诚挚地感谢每一位持续关注并使用 Higress 和 Spring AI Alibaba 的朋友,DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集中。
1181 127
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
853 70
|
设计模式 Java 开发者
如何快速上手【Spring AOP】?从动态代理到源码剖析(下篇)
Spring AOP的实现本质上依赖于代理模式这一经典设计模式。代理模式通过引入代理对象作为目标对象的中间层,实现了对目标对象访问的控制与增强,其核心价值在于解耦核心业务逻辑与横切关注点。在框架设计中,这种模式广泛用于实现功能扩展(如远程调用、延迟加载)、行为拦截(如权限校验、异常处理)等场景,为系统提供了更高的灵活性和可维护性。
1588 0
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
1068 0
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
10467 7