Eureka快速入门案例
一、模块了解
此处有UserController
在user-service
模块下,该Controller
实现接收路径参数{id}
并返回数据库查询到的user
数据,向localhost:8082/user/1
即可查询到id = 1
的user信息
同时有OrderController
在order-service
模块下,该Controller
可以实现接收路径参数{orderId}
并返回数据库的查询内容,向localhost:8080/order/101
可以查询到数据
二、工具类RestTemplate引入
我们可以看到在上述结果返回的order数据中有一项是user的信息:
- 那么两个模块如何进行通信使得order能够获取到user的信息并封装返回呢?
- 因为order需要获取到user的数据,因此需要在order-service的启动类中获取到一个工具类【RestTemplate】用于向user端发送http请求【类似于前端发送ajax请求】
那么现在既然有了可以发送http请求的工具类,我们就可以令order-service
向user-service
发送请求获取数据
此时我们再次请求刚刚的链接地址获取order的数据localhost:8080/order/101
,可以看到此时成功的封装到了user的数据,也就证明我们的order-service
模块成功向user-service
模块发送请求并获取到了数据
既然这样就可以做到模块分离并获取数据,那Eureka的存在是为了什么呢?仔细想想:在order-service模块发送请求的时候请求地址的url是固定写死的把?那岂不是模块order-service只能固定的获取url = localhost:8082/user
的user-service
数据吗?若是某一天该user-service服务挂掉了岂不是全部与该url有请求关系的模块都出现问题?并且要是一瞬间有大量的请求请求到同一个地址上的服务器,那么这台服务器也能保证不出现问题?
因此,一般会有多个user-service但是不同地址的url地址的服务模块同时运行。
即:多台服务器维护同一个数据库A,当需要使用到该数据库A时,可以访问不同的服务器,而不是单一的服务器。
Eureka的作用就是维护这样多台服务器并且能够将请求平均的转发到这些服务器,避免一台服务器的访问量突然暴增
那么既然要使用到Eureka技术,请看接下来的快速入门代码操作
三、搭建Eureka服务
我们首先再创建一个模块用于搭建Eureka服务,此处将该模块称为【eureka-server】
既然要使用该技术,首先得引入pom坐标
然后在application.yml
文件中对Eureka进行配置
要令springboot能够使用识别到Eureka则需要在启动类上添加注解@EnableEurekaServer
然后我们启动服务,并在浏览器输入我们刚刚配置的服务地址localhost:10086
,可以看到如下画面就证明Eureka注册成功
并且注意到在 注册的名字就是我们在配置项application.yml中配置的name
四、服务注册到Eureka
现在有了Eureka,我们就可以运行多个user-service服务【注册】供order-service服务使用了。首先要将这两个模块注册到Eureka,那么就要将坐标spring-cloud-starter-netflix-eureka-client
引入二者的pom文件,并编写application.yml配置文件
1 | spring: |
1 | spring: |
再次启动服务查看上述的order-service
与user-service
模块成功注册到Eureka
idea如何在一台主机上运行两个同样的user-service
服务呢?首先我们将user-service
运行,然后查看service面板,点击右键选中Copy Configuration
配置面板中更换Name,并且在VM Option配置项中将服务换一个端口运行【此处选择8081】点击OK即可
查看service,并打开Eureka管理面板,可以看到8081和8082端口的服务都成功注册了
两个user-service的成功注册代表着我们可以让order-service模块随机的选择一个user-service的端口发起请求获取数据,但是需要开启负载均衡【只需要在order-service的RestTemplate的Bean获取类上加上注释LoadBalanced
】即可
五、服务的发现
同时修改代码,用注册的user-service的服务名来替代原来的 ip + 端口。
再次发送请求localhost:8080/order/101
可以看到还是成功获取到数据说明上述配置是成功的。
- 标题: 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 进行许可。