从零搭建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的几种集群方案
