🏠个人主页:阿杰的博客
💪个人简介:大家好,我是阿杰,一个正在努力让自己变得更好的男人👨
目前状况🎉:24届毕业生,奋斗在找实习的路上🌟
🚗🚗为了让更多的人看到更优质的博客,阿杰正在努力的更新学习中心中的内容。
🌳认识微服务
🍅SpringCloud
🌲Eureka注册中心
服务调用出现的问题
-
服务消费者该如何获取服务提供者的地址信息
- 服务提供者启动时向eureka注册自己的信息
- eureka保存这些信息
- 消费者根据服务名称向eureka拉取提供者信息
简单来说就是eureka充当家政公司的角色,消费者充当你,提供者充当家政。
家政上班的时候在公司登记,你去家政公司找家政的时候,他会按照自己的规则派给你一个家政。
-
如果有多个服务提供者,消费者该如何选择
- 服务消费者利用负载均衡算法,从服务器列表挑一个
-
消费者如何得知服务提供者的健康状态
- 服务提供者会没30 秒向eurekaServer发送心跳请求,报告健康状态
- eureka会更新状态,剔除不正常的
🌻搭建eureka注册中心
-
引用依赖
<!--eureka服务端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
-
启动类添加注解 @EnableEurekaServer
-
添加配置
server: port: 10086 # 服务端口 spring: application: name: eurekaserver # eureka的服务名称 eureka: client: service-url: # eureka的地址信息 defaultZone: http://127.0.0.1:10086/eureka
🌻注册eureka
-
引用依赖
<!--eureka客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
-
添加配置
server: port: 8081 # 服务端口 spring: application: name: userserver # user的服务名称 eureka: client: service-url: # eureka的地址信息 defaultZone: http://127.0.0.1:10086/eureka
🌻服务发现
-
在启动类添加RestTemplate到容器 并添加@LoadBalanced注解
/** * 创建RestTemplate并注入Spring容器 */ @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }
-
调用服务名就可以使用服务
@Autowired private RestTemplate restTemplate; public Order queryOrderById(Long orderId) { // 1.查询订单 Order order = orderMapper.findById(orderId); // 2.利用RestTemplate发起http请求,查询用户 // 2.1.url路径 String url = "http://userservice/user/" + order.getUserId(); // 2.2.发送http请求,实现远程调用 User user = restTemplate.getForObject(url, User.class); // 3.封装user到Order order.setUser(user); // 4.返回 return order; }