2.SpringCloud入门进阶 - 常用组件Eureka(服务注册与发现):

上一章我们聊过了什么是微服务架构,他是一种思想,需要特定的技术实现它。那么SpringCloud就是一个微服务架构的一种实现。本章我们来聊一聊SpringCloud的一些常用组件!

1.Eureka服务注册与发现:

1.1什么是Eureka

再谈到这个问题的时候我们就要先想一个问题,在微服务架构中,每一个服务之间是相互独立的,服务之间是通过http请求的方式进行通信,每一个服务又有自己的ip和端口。那我们如何确保每个服务可以拿到想要调用的服务的ip和段口呢?如果我们手工的管理各个服务的ip和端口,那如果我们的服务很多的时候如何管理,想要添加服务和删除服务的时候又该怎么管理呢?这个时候我们就需要借助一个强大的工具来帮助我们,那就是Eureka。SpringCloud的一个非常重要的组件,用来管理服务注册与发现的。

1.2Eureka的工作原理

  1. 服务注册
    Eureka是一个服务发现与注册的组件,简单来说就是管理每一个服务的ip和端口的。它包含了EurekaServer,EurekaClient两部分组成。EurekaServer是一个独立的服务而EurekaClient是一个需要集成在服务中的。
    在每一个服务启动的时候,服务需要向EurekaServer提供自己的ip和端口,EurekaServer将每一个服务的ip和端口存储在服务地址清单中。做统一管理。这个过程就叫做服务注册。
  2. 服务发现
    当一个服务需要调用另一个服务的时候,需要从服务中心获取调用服务的ip和端口,然后再发送http请求来进行通信。服务客户端从服务中心拉取其他服务的ip和端口的过程就叫做服务发现。
  3. 服务续约
    ==这个有一个“心跳机制”每一个服务客户端每过30秒就需要向服务中心发送请求,请求EurekaServer进行续约。==本质上就是告诉服务中心我还活着还很健康,不要把我的信息从服务地址清单中剔除。如果一个服务90秒内没有给服务中心发送心跳请求,那么服务中心会对该服务进行标记,该服务续约失败,从而在服务地址清单中删除

下面是一张Eureka的工作流程图

在这里插入图片描述

说了这么多理论我们来上代码实战一下。来做一个简单的服务注册的功能。我们先模拟两个模块,用户模块和注册中心模块,我们运用的技术是SpringBoot项目结构和使用SpringCloud以及maven,非常的简单

1.项目搭建:

  • 创建一个多模块项目的父模块,我们取名为springcloud-parent
    在这里插入图片描述

  • 在父工程的pom里面添加依赖并且要继承springboot的父工程(SpringCloud是基于SpringBoot写的)
    在这里插入图片描述

  • 项目的父工程已经建好了,那么我们就来建子模块,首先创建一个EurekaServer,同样是导入Eureka依赖
    在这里插入图片描述

  • 创建主配置类,这个主配置类需要加上一个@EnableEurekaServer这个标签,意思是开启EurekaServer的服务
    在这里插入图片描述

  • 填写EurekaServer配置信息,我们采用yml的方式,内容就是填写EurekaServer的ip和端口,其他服务需要通过这个ip和端口来找到这个服务中心
    在这里插入图片描述

  • 我们先来测试一下有没有集成好服务中心,启动主配置类的main方法,在浏览器上访问localhost:1010,出现了下面的界面就代表你集成成功了
    在这里插入图片描述

  • 那么我们的EurekaServer的这个模块就写好了。我们再写两个模块就可以测试一下。首先我们来一个用户模块,给他的端口就是1020.用户模块的pom就和刚刚我们配过的一样,复制一下依赖即可。
    在这里插入图片描述

  • 用户模块的主配置类也差不多只需要改一下端口,标签有些不同,我们可以使用@EnableEurekaClient标签,代表这个是一个Eureka客户端。当然也可以省略该标签。在这里插入图片描述

  • 用户模块的配置文件需要改一下,里面需要提供服务中心的地址,并把自己的ip和端口提交给服务中心,这里注意一下,我们需要修改一下配置,更改一下Eureka客户端的服务名称,之后我们服务之间的相互调用是需要服务名称来查找ip和端口的。还可以配置以ip的形式注册服务。需要注意一下:serviceUrl是EurekaServer注册中的地址,主机和端口都应该指向springcloud-eureka-server-1010工程,这里额外指定了服务的名字,和端口,这些信息都会被注册到EurekaServer
    在这里插入图片描述

  • 我们现在可以启动一下用户服务模块,看一下服务中心有没有注册成功,这样就是成功的将一个服务注册给服务中心了。
    在这里插入图片描述

总结一下服务注册的重点:在多模块的项目结构中,创建一个EurekaServer模块,我们需要引入SpringCloud的jar包,但是可以不需要引入springboot-web这个依赖,因为EureServer这个组件内部内嵌了一个tomcat。再写一个注册中心的地址的配置信息,让其他服务可以根据这个注册中心的地址找到服务中心,并提交注册。再在主配置类上加上开启EurekaServer的注解。其他服务只需要改一下配置信息,将自己的服务名,ip,端口提交给注册中心。下一章我们再来聊一下Eureka的集群,如何将Eureka客户端注册到EurekaSercer集群中。感谢大家支持,如有任何问题,欢迎大家提出宝贵意见

猜你喜欢

转载自blog.csdn.net/weixin_45550128/article/details/106673078