从零搭建springcloud微服务(二)—— eureka注册中心
从零搭建springcloud微服务(二)—— eureka注册中心
上篇提到存在远程调用url是写死的,这篇将会介绍如何解决。那就是使用注册中心了,本篇将会介绍eureka注册中心。eureka注册中心原理:服务消费者和服务提供者将信息(IP和端口号)注册到注册中心,服务消费者从注册中心拉取服务信息,然后进行负载均衡,最后远程调用,完成服务。注意服务消费者和服务提供者是相对的。注册中心还会进行心跳检测,如果监测出异常会把异常服务从注册中心中剔除。
1.新建一个module(eureka-service)。
添加eureka服务端依赖:
<!-- eureka服务端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
application.yml:
server: port: 10086 spring: application: name: eurekaserver #服务名称 eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka #eureka地址
在启动类上加上@EnableEurekaServer注解。
2.修改user-service模块。
添加eureka客户端依赖:
<!-- eureka客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>3.1.0</version> </dependency>
在application.yml中添加如下配置:
eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka spring: application: name: userserver
3.修改order-service模块。
添加eureka客户端依赖:
<!-- eureka客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>3.1.0</version> </dependency>
在application.yml中添加如下配置:
eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka spring: application: name: orderserver
修改service层写法:
package com.bzw.service.impl; import com.bzw.domain.TbOrder; import com.bzw.domain.User; import com.bzw.mapper.TbOrderMapper; import com.bzw.service.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @Service public class OrderServiceImpl implements OrderService { @Autowired private TbOrderMapper tbOrderMapper; @Autowired private RestTemplate restTemplate; @Override public TbOrder findOrderById(Long id) { TbOrder tbOrder = new TbOrder(); tbOrder = tbOrderMapper.selectByPrimaryKey(id); String url = "http://userserver/user/" + tbOrder.getUserId(); User user = restTemplate.getForObject(url,User.class); tbOrder.setUser(user); return tbOrder; } }
添加负载均衡注解(@LoadBalanced):
package com.bzw; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @SpringBootApplication public class OrderServiceApplication { public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); } @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
4.启动服务。浏览器访问http://127.0.0.1:10086/可以看到服务信息。
5.IDEA开启多个服务。
6.结果。
成功。
7.总结。
下一篇:
架构师必备:Redis的几种集群方案