Eureka快速入门案例

Eureka快速入门案例

忘记中二的少年 Lv3

一、模块了解

此处有UserControlleruser-service模块下,该Controller实现接收路径参数{id}并返回数据库查询到的user数据,向localhost:8082/user/1即可查询到id = 1的user信息

同时有OrderControllerorder-service模块下,该Controller可以实现接收路径参数{orderId}并返回数据库的查询内容,向localhost:8080/order/101可以查询到数据

二、工具类RestTemplate引入

我们可以看到在上述结果返回的order数据中有一项是user的信息:

  1. 那么两个模块如何进行通信使得order能够获取到user的信息并封装返回呢?
  2. 因为order需要获取到user的数据,因此需要在order-service的启动类中获取到一个工具类【RestTemplate】用于向user端发送http请求类似于前端发送ajax请求

image-20231012194520311

那么现在既然有了可以发送http请求的工具类,我们就可以令order-serviceuser-service发送请求获取数据

image-20231012194819910

此时我们再次请求刚刚的链接地址获取order的数据localhost:8080/order/101,可以看到此时成功的封装到了user的数据,也就证明我们的order-service模块成功向user-service模块发送请求并获取到了数据

image-20231012195057979

既然这样就可以做到模块分离并获取数据,那Eureka的存在是为了什么呢?仔细想想:在order-service模块发送请求的时候请求地址的url是固定写死的把?那岂不是模块order-service只能固定的获取url = localhost:8082/useruser-service数据吗?若是某一天该user-service服务挂掉了岂不是全部与该url有请求关系的模块都出现问题?并且要是一瞬间有大量的请求请求到同一个地址上的服务器,那么这台服务器也能保证不出现问题?

因此,一般会有多个user-service但是不同地址的url地址的服务模块同时运行。

即:多台服务器维护同一个数据库A,当需要使用到该数据库A时,可以访问不同的服务器,而不是单一的服务器。

Eureka的作用就是维护这样多台服务器并且能够将请求平均的转发到这些服务器,避免一台服务器的访问量突然暴增

那么既然要使用到Eureka技术,请看接下来的快速入门代码操作

三、搭建Eureka服务

我们首先再创建一个模块用于搭建Eureka服务,此处将该模块称为【eureka-server】

既然要使用该技术,首先得引入pom坐标

image-20231012200445165

然后在application.yml文件中对Eureka进行配置

image-20231012200827191

要令springboot能够使用识别到Eureka则需要在启动类上添加注解@EnableEurekaServer

image-20231012201043215

然后我们启动服务,并在浏览器输入我们刚刚配置的服务地址localhost:10086,可以看到如下画面就证明Eureka注册成功

并且注意到在 注册的名字就是我们在配置项application.yml中配置的name

image-20231012201327189

四、服务注册到Eureka

现在有了Eureka,我们就可以运行多个user-service服务【注册】供order-service服务使用了。首先要将这两个模块注册到Eureka,那么就要将坐标spring-cloud-starter-netflix-eureka-client引入二者的pom文件,并编写application.yml配置文件

1
2
3
4
5
6
7
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka/

image-20231012202005789

1
2
3
4
5
6
7
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka/

image-20231012233552318

再次启动服务查看上述的order-serviceuser-service模块成功注册到Eureka

image-20231012234043852

idea如何在一台主机上运行两个同样的user-service服务呢?首先我们将user-service运行,然后查看service面板,点击右键选中Copy Configuration

image-20231012234230361

配置面板中更换Name,并且在VM Option配置项中将服务换一个端口运行此处选择8081】点击OK即可

image-20231012234253145

查看service,并打开Eureka管理面板,可以看到8081和8082端口的服务都成功注册了

image-20231012234517362

image-20231012234619083

两个user-service的成功注册代表着我们可以让order-service模块随机的选择一个user-service的端口发起请求获取数据,但是需要开启负载均衡【只需要在order-service的RestTemplate的Bean获取类上加上注释LoadBalanced】即可

image-20231012234831665

五、服务的发现

同时修改代码,用注册的user-service的服务名来替代原来的 ip + 端口。

image-20231012235226039

再次发送请求localhost:8080/order/101可以看到还是成功获取到数据说明上述配置是成功的。

image-20231012235524439

  • 标题: Eureka快速入门案例
  • 作者: 忘记中二的少年
  • 创建于 : 2023-10-13 00:13:00
  • 更新于 : 2023-10-13 00:13:32
  • 链接: https://github.com/HandsomeXianc/HandsomeXianc.github.io/2023/10/13/Eureka快速入门案例/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。