从零搭建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.总结。

经验分享 程序员 微信小程序 职场和发展