Eureka注册中心

文章目录

1.Eureka的结构与作用
  • 在Eureka架构中,微服务角色有两类:

    • lEurekaServer:服务端,注册中心
    1. 记录服务信息

    2. u心跳监控

    • lEurekaClient:客户端
    1. Provider:服务提供者

      • 注册自己的信息到EurekaServer

      • 每隔30秒向EurekaServer发送心跳

    2. consumer:服务消费者

      • 根据服务名称从EurekaServer拉取服务列表
      • 基于服务列表做负载均衡,选中一个微服务后发起远程调用
  • Eureka Server: Eureka 服务注册中心,主要用于提供服务注册功能。当微服务启动时,会将自己的服务注册到 Eureka Server。Eureka Server 维护了一个可用服务列表,存储了所有注册到 Eureka Server 的可用服务的信息,这些可用服务可以在 Eureka Server 的管理界面中直观看到。

  • Eureka Client: Eureka 客户端,通常指的是微服务系统中各个微服务,主要用于和 Eureka Server 进行交互。在微服务应用启动后,Eureka Client 会向 Eureka Server 发送心跳(默认周期为 30 秒)。若 Eureka Server 在多个心跳周期内没有接收到某个 Eureka Client 的心跳,Eureka Server 将它从可用服务列表中移除(默认 90 秒)。

2.搭建eureka-server服务
  1. 创建eureka-server服务模块

  2. 引入SpringCloud为eureka提供的starter依赖

pom 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 编写启动类,添加@EnableEurekaServer注解
java 复制代码
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}
  1. 在application.yml文件,编写配置
yml 复制代码
server:
  port: 10086 #eureka服务端口
spring:
  application:
    name: eureka-server  #eureka服务名称
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka  #eureka服务地址
3.注册service服务
  1. 在user-service的pom文件中,引入eureka-client依赖
pom 复制代码
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 在user-service的application.yml文件中,添加服务名称、eureka地址
yml 复制代码
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
  1. 复制原来的user-service启动配置,模拟多实例部署,启动多个user-service实例

  2. 修改名称,配置端口,避免冲突

  3. 输入网址:http://localhost:10086/查看结果

4.服务发现
  1. 在order-service的pom文件中,引入eureka-client依赖
pom 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 在order-service的application.yml文件,添加服务名称、eureka地址
yml 复制代码
spring:  
  application:
    name: order-service  # order eureka服务名称
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka  #eureka服务地址
  1. 服务拉取和负载均衡,在order-service的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:
java 复制代码
    /**
     * 创建 RestTemplate 并注入 Spring 容器
     * @return
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
  1. 修改OrderService类中的queryOrderById方法。修改访问的url路径,用服务名代替ip、端口
    • String url ="http://user-service/user/"+order.getUserId();
    • spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。
java 复制代码
    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);

        //2.利用 RestTemplate 发起 http 请求,查询用户
        //2.1 url路径
        //String url ="http://localhost:8081/user/"+order.getUserId();
        String url ="http://user-service/user/"+order.getUserId();

        //2.2 发起 http 请求,实现远程调用
        User user=  restTemplate.getForObject(url, User.class);

        //3. 封装 user 到 Order
        order.setUser(user);

        // 4.返回
        return order;
    }
相关推荐
鸽鸽程序猿6 小时前
【JavaEE】【SpringCloud】分布式事务 Alibaba Seata
分布式·spring cloud·java-ee
没有bug.的程序员6 小时前
Spring Cloud Sentinel:熔断降级规则配置与分布式流量防线实战终极指南
java·分布式·后端·spring cloud·sentinel·熔断规则·分布式流量防线
梵得儿SHI7 小时前
实战项目落地:微服务拆分原则(DDD 思想落地,用户 / 订单 / 商品 / 支付服务拆分实战)
spring cloud·微服务·云原生·架构·微服务拆分·ddd方法论·分布式数据一致性
努力也学不会java7 小时前
【Spring Cloud】优雅实现远程调用-OpenFeign
java·人工智能·后端·spring·spring cloud
Warren981 天前
接口测试理论
docker·面试·职场和发展·eureka·ansible
m0_740043732 天前
【无标题】
java·spring boot·spring·spring cloud·微服务
编程彩机2 天前
互联网大厂Java面试:从微服务到分布式缓存的技术场景解析
redis·spring cloud·消息队列·微服务架构·openfeign·java面试·分布式缓存
Anastasiozzzz2 天前
Nginx和Ribbon的区别
后端·spring cloud·ribbon
码农水水2 天前
从 OpenFeign 到 RestClient:Spring Cloud 新时代的轻量化 HTTP 调用方案
java·运维·后端·spring·http·spring cloud·面试
江湖有缘3 天前
轻量级知识协作平台搭建:Docker + MediaWiki入门教程
docker·容器·eureka