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 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

说到这里再提一下EurekaZookeeper的区别?

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实现远程调用。

目录
相关文章
|
4月前
|
人工智能 Cloud Native 安全
DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集
诚挚地感谢每一位持续关注并使用 Higress 和 Spring AI Alibaba 的朋友,DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集中。
497 55
|
8月前
|
存储 数据可视化 Java
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
324 2
|
5月前
|
Java Spring 容器
springcloud-config客户端启用服务发现报错找不到bean EurekaHttpClient
解决 Spring Cloud Config 客户端启用服务发现时报错找不到 bean `EurekaHttpClient` 的问题,主要涉及版本兼容性、依赖配置和正确的配置文件设置。通过检查依赖版本、添加必要的依赖项、配置文件的正确性以及启用服务发现注解,可以有效解决此问题。确保日志中没有其他错误信息也是关键步骤之一。通过这些方法,可以确保 Spring Cloud Config 与 Eureka 客户端正常工作。
104 6
|
10月前
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
461 0
|
6月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
100 6
|
6月前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
137 5
|
6月前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
123 5
|
7月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
188 3
|
7月前
|
Java Maven Spring
Spring 小案例体验创建对象的快感
本文介绍了如何在IDEA中创建一个Spring项目,包括项目创建、配置pom.xml文件以引入必要的依赖、编写实体类HelloSpring及其配置文件applicationContext.xml,最后通过测试类TestHelloSpring展示如何使用Spring的bean创建对象并调用方法。
63 0
|
9月前
|
消息中间件 存储 Java
SpringCloud基础9——服务异步通信-高级篇
消息可靠性、死信交换机、惰性队列、MQ集群
SpringCloud基础9——服务异步通信-高级篇