芬兰网站后缀,做网络推广费用,建立网站的平台,自己做一个网站要多少钱微服务远程调用
在order-service的OrderApplication中注册RestTemplate 在查询订单信息时#xff0c;需要同时返回订单用户的信息#xff0c;但是由于微服务的关系#xff0c;用户信息需要在用户的微服务中去查询#xff0c;故需要用到上面的RestTemplate来让订单的这个微…微服务远程调用
在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端口的查询一次 总结