• 【SpringCloud微服务实战01】Eureka 注册中心


    • 前言

    Eureka 架构中,微服务角色有两类:

    •  EurekaServer :服务端,注册中心

                    记录服务信息
                    心跳监控

    • EurekaClient :客户端

             Provider :服务提供者,例如案例中的 user-service
                             注册自己的信息到 EurekaServer
                            每隔 30 秒向 EurekaServer 发送心跳
             consumer :服务消费者,例如案例中的 order-service
                            根据服务名称从 EurekaServer 拉取服务列表
                             基于服务列表做负载均衡,选中一个微服务后发起远程调用

    架构图:

    常见问题:

    • 消费者该如何获取服务提供者具体信息?

                    服务提供者启动时向 eureka 注册自己的信息
                    eureka 保存这些信息
                    消费者根据服务名称向 eureka 拉取提供者信息

    • 如果有多个服务提供者,消费者该如何选择?

                    服务消费者利用负载均衡算法,从服务列表中挑选一个

    • 消费者如何感知服务提供者健康状态?

                    服务提供者会每隔 30 秒向 EurekaServer 发送心跳请求,报告健康状态
                    eureka 会更新记录服务列表信息,心跳不正常会被剔除
                    消费者就可以拉取到最新的信息 


     

    一、Eureka服务端搭建

    1. 创建项目,引入 spring-cloud-starter-netflix-eureka-server 的依赖:

    1. <dependency>
    2. <groupId>org.springframework.cloudgroupId>
    3. <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
    4. dependency>

    2. 编写启动类,添加 @EnableEurekaServer 注解

    3. 添加 application.yml 文件,编写下面的配置:

    1. server:
    2. port: 10086
    3. spring:
    4. application:
    5. name: eurekaserver
    6. eureka:
    7. client:
    8. service-url:
    9. defaultZone: http://127.0.0.1:10086/eureka/

    启动后访问管理页面http://127.0.0.1:10086

    二、Eureka服务注册 

    1. 分别 user-service 和 order-service 项目中引入 spring-cloud-starter-netflix-eureka-client 的依赖

    1. <dependency>
    2. <groupId>org.springframework.cloudgroupId>
    3. <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    4. dependency>

    2. 在 application.yml 文件,分别编写下面的配置:

    1. spring:
    2. application:
    3. name: userservice #orderservice
    4. eureka:
    5. client:
    6. service-url:
    7. defaultZone: http://127.0.0.1:10086/eureka/

    这里还可以通过复制userService配置 修改VM:-Dserver.port=8082,模拟一个服务启动多个实例:

    三、Eureka服务发现(服务拉取)

    下面以在 order-service 服务中拉取 user-service中的查询用户信息接口为例:

    1、用服务提供者的 服务名称 远程调用服务接口:

    String url = "http://userservice/user/" + order.getUserId();

    2、给 RestTemplate 添加 @LoadBalanced 注解(实现多示例负载均衡)

    1. @Bean
    2. @LoadBalanced
    3. public RestTemplate restTemplate() {
    4. return new RestTemplate();

  • 相关阅读:
    IMZA120R040M1HXKSA1,IMW65R107M1H规格 MOSFET - 单个晶体管
    springboot+VUE+elementui医院设备仪器维修保养管理系统
    练习题——【学习补档】库函数的模拟实现
    日本MF备案注册数据库-在线免费查询
    CSS【基础】
    Vue2.0简介
    Java设计模式之单例设计模式
    Redis小记(一)
    在vscode运行java代码
    LC-2300. 咒语和药水的成功对数(排序+贪心、排序+二分)
  • 原文地址:https://blog.csdn.net/msllws/article/details/136631464