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
相关推荐
wniuniu_3 小时前
ceph入门
windows·ceph·eureka
百万彩票中奖候选人6 小时前
迁移 Docker 存储目录
java·docker·eureka
楠枬6 小时前
Eureka 服务注册源码分析
spring cloud·云原生·eureka
ylmzfun19 小时前
Docker全景解析:从容器化理念到日常实践
docker·eureka·架构
qinyia21 小时前
WisdomSSH解决docker run命令中log-opt参数不支持导致的容器创建失败问题
java·docker·eureka
机灵猫1 天前
注册中心选型风云:为什么选择 Nacos 而不是 Eureka
spring cloud·eureka
Msshu1231 天前
Type-C PD快充协议 PD快充诱骗协议芯片 PD/QC/FCP/SCP/AFC电压诱骗芯片
mongodb·zookeeper·eureka·kafka·consul
The star"'2 天前
docker(6-10)
docker·容器·eureka
java_logo2 天前
GITLAB Docker 容器化部署指南
linux·运维·数据库·docker·容器·eureka·gitlab
biubiubiu07062 天前
常用Docker命令
docker·容器·eureka