微服务学习 | Eureka注册中心

微服务远程调用

在order-service的OrderApplication中注册RestTemplate

在查询订单信息时,需要同时返回订单用户的信息,但是由于微服务的关系,用户信息需要在用户的微服务中去查询,故需要用到上面的RestTemplate来让订单的这个微服务去模拟浏览器去访问用户微服务暴露的接口去查询用户信息

故在订单这个微服务的service中,先调用订单的Mapper去查询订单信息,然后设置用户微服务的路由,利用RestTemplate提供的方法去根据这个路由访问用户微服务对外提供的接口,得到该订单对应的用户信息

调用查询订单信息的路由,查看101号订单,看到该订单的用户信息也被返回

总结

微服务调用方式

基于RestTemplate发起的http请求实现远程调用

http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可

服务调用出现的问题

服务消费者该如何获取服务提供者的地址信息?

如果有多个服务提供者,消费者该如何选择?

消费者如何得知服务提供者的健康状态?

Eureka注册中心

Eureka的作用

消费者该如何获取服务提供者具体信息?

服务提供者启动时向eureka注册自己的信息

eureka保存这些信息
消费者根据服务名称向eureka拉取提供者信息如果有多个服务提供者,消费者该如何选择?

服务消费者利用负载均衡算法,从服务列表中挑选一个

消费者如何感知服务提供者健康状态?

服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态eureka会更新记录服务列表信息,心跳不正常会被剔除

消费者就可以拉取到最新的信息

总结

在Eureka架构中,微服务角色有两类:

EurekaServer:服务端,注册中心

记录服务信息

心跳监控

EurekaClient: 客户端

Provider:服务提供者,例如案例中的user-service注册自己的信息到EurekaServer

每隔30秒向EurekaServer发送心跳

consumer:服务消费者,例如案例中的 order-service

根据服务名称从EurekaServer拉取服务列表

基于服务列表做负载均衡,选中一个微服务后发起远程调用

动手实践

1.搭建EurekaServer

2.将user-service、order-service都注册到eureka

3.在order-service中完成服务拉取,然后通过负载均衡挑选一

个服务,实现远程调用

搭建EurekaServer

搭建EurekaServer服务步骤如下:

1.创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖
2.编写启动类,添加@EnableEurekaServer注解

创建一个eureka-server的子模块,引入上面依赖,在主启动类上添加@EnableEurekaServer

3.添加application.yml文件,编写下面的配置:

在eureka-server的子模块的yml配置文件中,配置服务器名称以及地址

完成配置后,即可访问localhost:10086路由,访问Eureka的网页观察注册中心注册的服务实例

注册EurekaClient

将服务提供者user-service服务注册到EurekaServer步骤如下:

1.在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
2.在application.yml文件,编写下面的配置:

name为该微服务在注册中心中的服务名,defaultZone为服务中心的路由

按照上述方法,将每个微服务都注册到注册中心上

另外,我们可以将user-service多次启动,模拟多实例部署,但为了避免端口冲突,需要修改端口设置

然后将这个服务也启动,就会发现注册中心中,名为userservice的服务有了两个实例,只是端口不一样。

完成服务拉取

在order-service完成服务拉取,服务拉取是基于服务名称获取服务列表,然后再对服务列表做负载均衡

1.修改OrderService的代码,修改访问的url路径,用服务名代替ip、端口:
2.在服务消费者order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解

然后,调用两次服务消费者order-service项目所给的查询订单接口

可以看到,8081端口的userservice查询了一次用户查询,8082端口的查询一次

总结

相关推荐
笃励14 分钟前
Java面试题二
java·开发语言·python
望森FPGA15 分钟前
HDLBits中文版,标准参考答案 |2.5 More Verilog Features | 更多Verilog 要点
学习·fpga开发
l1x1n025 分钟前
DOS 命令学习笔记
笔记·学习·web安全
易雪寒32 分钟前
IDEA在git提交时添加忽略文件
java·git·intellij-idea
道爷我悟了1 小时前
Vue入门-指令学习-v-on
javascript·vue.js·学习
打码人的日常分享1 小时前
企业人力资源管理,人事档案管理,绩效考核,五险一金,招聘培训,薪酬管理一体化管理系统(源码)
java·数据库·python·需求分析·规格说明书
27669582921 小时前
京东e卡滑块 分析
java·javascript·python·node.js·go·滑块·京东
爱写代码的刚子1 小时前
C++知识总结
java·开发语言·c++
冷琴19961 小时前
基于java+springboot的酒店预定网站、酒店客房管理系统
java·开发语言·spring boot
人工智能技术咨询.2 小时前
张雪峰谈人工智能技术应用专业的就业前景!
人工智能·学习·计算机视觉·语言模型