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
相关推荐
释怀不想释怀10 小时前
3.3 DockerCompose(快速部署)
云原生·eureka
techzhi1 天前
Docker & Docker Compose 安装方案
docker·容器·eureka
weixin_448119941 天前
如何装docker
java·云原生·eureka
jjjxxxhhh1231 天前
【项目】-Docker入门实战:从零到一运行FastDDS Shapes Demo
docker·容器·eureka
赵文宇(温玉)2 天前
Docker与VM的差异与最佳场景
docker·容器·eureka
我的golang之路果然有问题3 天前
Docker 之常用操作(实习中的)
java·运维·笔记·docker·容器·eureka
牛奔3 天前
Docker 容器无法停止的排障与解决全过程
运维·docker·云原生·容器·eureka
赵文宇(温玉)3 天前
Docker的生态与商业化
docker·容器·eureka
牛奔3 天前
Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
运维·docker·云原生·容器·eureka
青州从事5213 天前
20260108【mac】【brew】【docker】安装
macos·docker·eureka