Spring Cloud微服务架构学习-2

本文详细介绍了SpringCloud Eureka作为服务注册与发现组件的工作原理及其实战操作,包括服务提供者、服务消费者和注册中心的设置与启动。通过创建EurekaServer、EurekaClient,配置yaml文件,实现服务的注册、发现和集群部署。同时强调了EurekaClient的角色以及服务消费者如何调用服务提供者。
摘要由CSDN通过智能技术生成

前言

1、Eureka工作原理

 Spring Cloud框架下的服务发现Eureka包含两个组件,分别是:Eureka Server与Eureka Client。

Eureka Server:
Eureka Server,也称为服务注册中心。各个服务启动后,会在Eureka Server中进行注册,这样Eureka Server的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

Eureka Client:
Eureka Client也称为服务(服务实例)。作为一个Java客户端,用于简化与Eureka Server的交互。Eureka Client内置一个使用轮询负载算法的负载均衡器。服务启动后,Eureka Client将会向Eureka Server发送心跳更新服务,如果Eureka Server在多个心跳周期内没有接收到某个服务的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

在这里插入图片描述
Eureka Client注册在Eureka Server,Eureka Client中的服务Service是通过REST调用的。Eureka Client还具有缓存功能,它能够从Eureka Server查询当前注册的服务信息并缓存到本地,这样即使Eureka Server宕机,Eureka Client依然可以利用缓存中的信息调用服务.

2、服务提供者与服务消费者

Eureka Client存在两种角色,分别是服务提供者和服务消费者。

服务提供者:
服务提供者( Eureka Client )启动后,会通过REST请求将自己注册在Eureka Server,并维护一个心跳(默认30秒发送一次心跳)进行服务续约,告诉Eureka Server“我还活着”,防止Eureka Server将该服务从服务列表剔除。

服务消费者:
用于获取Eureka Server注册的服务清单,并且该服务清单默认每隔30秒更新一次。服务消费者获取到服务清单后,能够根据自己的需求决定调用哪个服务,默认采用轮询方式调用,从而实现Eureka Client的负载均衡。

在这里插入图片描述
服务消费者是如何调用服务提供者的?
服务提供者和服务消费者都属于Eureka Client,它们都会将自己的信息通过REST API形式提交给Eureka Server。服务消费者注册后,还会获取一份服务注册列表,该列表包含了所有向Eureka Server注册的服务信息。获取到服务注册信息后,服务消费者就会根据服务提供者的IP地址,通过HTTP远程调用服务提供者的服务。

一、注册中心实验

1.新建第一中心模块

在父级目录下新建一个模块,模块命名为lesson2-eureka-server
在这里插入图片描述

2.修改pom.xml

打开新建模块的pom.xml,注意是新建!!!
在pom文件中添加的Eureka Server依赖

在这里插入图片描述

<dependencies>
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
   </dependency>
</dependencies>

3.添加资源文件

在resources文件夹下添加application.yml
在这里插入图片描述
application.yml配置文件内容如下,请注意缩进!!!

在这里插入图片描述

4.创建启动类

新建一个EurekaServer包

在这里插入图片描述
在包下面创建启动类EurekaServerApplication
在这里插入图片描述
在EurekaServerApplication.java文件中写上如下代码
(在项目启动类EurekaServerApplication上添加
@EnableEurekaServer注解开启Eureka Server功 能。)
在这里插入图片描述

5.启动

点击三角形运行

在这里插入图片描述
打开浏览器,输入127.0.0.1:7000,出现以下说明成功启动了eurekaserver

在这里插入图片描述

二、服务提供者实验

1.新建提供者模块

在父级目录下新建一个模块,模块命名为lesson02-eureka-provider。
在这里插入图片描述
在这里插入图片描述

2.修改pom.xml

在pom文件中添加Eureka Client、Web依赖如下:

<dependencies>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
   </dependency>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <version>2.1.7.RELEASE</version>
   </dependency>
</dependencies>

在这里插入图片描述

3.添加资源文件

在resourses文件夹下创建application.yml配置文件。
在这里插入图片描述
在配置文件中填写如下配置,注意缩进!!!
在这里插入图片描述

4.创建启动类

在java文件夹下创建一个EurekaProvider包
在这里插入图片描述
在EurekaProvider包内创建EurekaProviderApplication启动类。
在这里插入图片描述
在EurekaProviderApplication.java下填写代码:
(在项目启动类EurekaProviderApplication上添加
@EnableEurekaClient注解开启Eureka Client功能。)
在这里插入图片描述

5.启动

确保实验一中的EurekaServerApplication在运行。

在这里插入图片描述
启动本次实验的服务

在这里插入图片描述
在浏览器上输入http://127.0.0.1:7000/,出现以下界面表示注册成功。
在这里插入图片描述

三、服务消费者实验

1.新建消费者模块

在父级目录下新建一个模块,模块命名为lesson02-eureka-consumer。
在这里插入图片描述
在这里插入图片描述

2.修改pom.xml

在pom文件中添加的Eureka Client、Web依赖如下:

<dependencies>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
   </dependency>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <version>2.1.7.RELEASE</version>
    </dependency>
</dependencies>

在这里插入图片描述

3.添加资源文件

在resourses文件夹下创建application.yml配置文件。
在这里插入图片描述
在配置文件中填写如下配置,注意缩进!!!
在这里插入图片描述

4.创建启动类

在java文件夹下创建一个EurekaConsumer包
在这里插入图片描述
在EurekaConsumer包内创建EurekaConsumerApplication启动类。
在这里插入图片描述
在EurekaConsumerApplication.java下填写代码:

在这里插入图片描述

5.启动

确保实验一、二中的EurekaServerApplication和EurekaProviderApplication在运行。
在这里插入图片描述启动本次实验的服务
在这里插入图片描述
.在浏览器上输入http://127.0.0.1:7000/,出现以下界面表示注册成功。
在这里插入图片描述

四、注册中心集群实验

1. 修改hosts文件

因为是在单台电脑上建立集群,所以需要修改hosts文件将单台电脑模拟成两台机器。
打开C:\Windows\System32\drivers\etc\hosts,文件,在末尾添加如下内容:
在这里插入图片描述
注意:有些电脑这个地方不允许修改,则可以将该文件拷贝到桌面,在桌面改完后在拷贝回来进行覆盖。

2. 新建第二中心模块

在父级目录下再创建一个注册中心lesson02-eureka-server-another模块
在这里插入图片描述
在这里插入图片描述

1).修改pom.xml

第二注册中心依赖
在pom文件中添加的Eureka Server依赖如下:

<dependencies>
 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 </dependency>
</dependencies>

在这里插入图片描述

2).添加资源文件

在resources文件夹下添加application.yml,并添加如下配置,注意缩进!
在这里插入图片描述
在这里插入图片描述

3).创建启动类

新建一个EurekaServerAnother包
在这里插入图片描述
创建一个EurekaServerAnotherApplication启动类
在这里插入图片描述
在EurekaServerAnotherApplication.java下添加代码:
在这里插入图片描述

3. 修改第一注册中心配置

将实验一 eureka-server的application.yml进行修改:
在这里插入图片描述

4. 新建一个服务提供者

在父级目录下在创建一个服务提供者lesson02-eureka-provider-another
在这里插入图片描述
在这里插入图片描述

1).修改pom.xml

添加pom依赖:

<dependencies>
   <dependency>
     <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
       <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
         <version>2.1.7.RELEASE</version>
      </dependency>
 </dependencies>

在这里插入图片描述

2).添加资源文件

在resources文件夹下添加application.yml,并添加如下配置,注意缩进!
在这里插入图片描述
在这里插入图片描述

3).创建启动类

新建一个EurekaProviderAnother包
在这里插入图片描述
新建一个EurekaProviderAnotherApplication启动类:
在这里插入图片描述
在EurekaProviderAnotherApplication.java中写上代码;
在这里插入图片描述

5.修改eureka-consumer

修改eureka-consumer中的application.yml,修改如下:
在这里插入图片描述

6.运行整个集群

依次运行eureka-server、eureka-server-another、eureka-provider、eureka-provider-another、eureka-consumer 全部运行成功后打开浏览器,打开两个页面,分别在地址栏输入: http://127.0.0.1:7000/ 和 http://127.0.0.1:7009/
两个页面都显示如下所示算成功:
第二注册中心:

在这里插入图片描述
第一注册中心:
在这里插入图片描述

五、总结

1.eureka默认使用8673端口(此端口没有应用),所以会一直请求出现超时,因此要写service-url.defaultZone路径进行覆盖。
2.intance:hostname:localhost一定要记得写。
3.基本步骤都有:
创建模块->pom里添加依赖->main里resouce写配置文件->main里java创建包写启动类
4.当有多个注册中心时,例有注册中心1、2、3,
在中心1的service-url.defaultZone要写上中心2,3的路径,
在中心2的service-url.defaultZone要写上中心1,3的路径,
在中心3的service-url.defaultZone要写上中心1,2的路径,
此时注册中心中的服务列表共通。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值