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注解功能。
源码如下:

java 复制代码
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文件(配置文件)

源码如下:

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

java 复制代码
#单机
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配置文件。

源码如下:

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

java 复制代码
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配置文件。

源码如下:

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

java 复制代码
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实现远程调用。

相关推荐
qq_441996057 分钟前
Mybatis官方生成器使用示例
java·mybatis
巨大八爪鱼13 分钟前
XP系统下用mod_jk 1.2.40整合apache2.2.16和tomcat 6.0.29,让apache可以同时访问php和jsp页面
java·tomcat·apache·mod_jk
码上一元2 小时前
SpringBoot自动装配原理解析
java·spring boot·后端
计算机-秋大田2 小时前
基于微信小程序的养老院管理系统的设计与实现,LW+源码+讲解
java·spring boot·微信小程序·小程序·vue
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
失落的香蕉4 小时前
C语言串讲-2之指针和结构体
java·c语言·开发语言
枫叶_v4 小时前
【SpringBoot】22 Txt、Csv文件的读取和写入
java·spring boot·后端
wclass-zhengge4 小时前
SpringCloud篇(配置中心 - Nacos)
java·spring·spring cloud
路在脚下@4 小时前
Springboot 的Servlet Web 应用、响应式 Web 应用(Reactive)以及非 Web 应用(None)的特点和适用场景
java·spring boot·servlet
黑马师兄4 小时前
SpringBoot
java·spring