Eureka 注册中心的使用

环境 springboot + springcloud

Eureka-Server注册中心服务端

pom.xml导入依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <version>2.2.7.RELEASE</version> <!-- 一般在父工程中就配置了 -->
</dependency>

aplication.yml配置

yml 复制代码
server:
  port: 10086
spring:
  application:
    name: eurekaserver   # 服务名,需要配置
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

EurekaServerApplication.java启动类配置

java 复制代码
@SpringBootApplication
@EnableEurekaServer  // 开启eureka的注册中心功能
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

Service提供者

pom.xml

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.2.7.RELEASE</version> 	<!-- 一般在父工程中就配置了 -->
</dependency>

application.yml

yml 复制代码
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

consumer消费者 (消费者也可以作为提供者身份出现)

pom.xml

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.2.7.RELEASE</version> 	<!-- 一般在父工程中就配置了 -->
</dependency>

application.yml

yml 复制代码
spring:
  application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

OrderApplication 配置RestTemplate的Bean加入到Spring容器中

java 复制代码
@MapperScan("cn.xxx.order.mapper")
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    @Bean
    @LoadBalanced # 负责均衡 和 做拉取服务
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

OrderService 利用RestTemplate调用 UserService接口

java 复制代码
@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        Order order = orderMapper.findById(orderId);

		// restTemplate.getForObject(请求地址, 返回值类型);
        String url = "http://userservice/user/" + order.getUserId(); // userservice是提供者的spring.application.name
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        
        return order;
    }
}

Ribbon负载均衡 (service配置)

方式1:重写IRule接口的实现Bean

java 复制代码
@Bean
public IRule randomRule() {
    return new RandomRule();
}

方式2:配置文件指定

application.xml

yml 复制代码
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 
    # 当第一次访问时才会拉取服务再做缓存

饥饿加载配置:容器加载完毕后就拉取服务做缓存

yml 复制代码
ribbon:
  eager-load:
    enabled: true
    clients:
      - userservice		# 指定一启动就加载的服务,可以配置多个
      -  xxxservice1
相关推荐
正经教主3 小时前
【docker基础】第一课、从零开始理解容器技术
docker·云原生·容器·eureka
正经教主10 小时前
【docker基础】Ubuntu 安装 Docker 超详细小白教程
ubuntu·docker·eureka
正经教主12 小时前
【docker基础】第二课:安装、配置与基础命令
docker·容器·eureka
taWSw5OjU2 天前
Docker] Docker中`overlay2`磁盘占用爆满的清理方案
docker·容器·eureka
biubiubiu07063 天前
Docker 快速通关
docker·容器·eureka
小江的记录本3 天前
【Docker】Docker系统性知识体系与命令大全(镜像、容器、数据卷、网络、仓库)
java·网络·spring boot·spring·docker·容器·eureka
小江的记录本4 天前
【Docker】《 Docker 高频常用命令速查表 》
java·前端·后端·http·docker·容器·eureka
程序员 沐阳4 天前
Docker 命令完全指南:从入门到实战
docker·容器·eureka
繁星星繁4 天前
Docker(一)
java·c语言·数据结构·c++·docker·容器·eureka
xmlhcxr5 天前
kubernetes(K8s)基础配置及资源使用详解
docker·云原生·eureka·k8s