Eureka

大家好我是苏麟今天带来Eureka的使用 .

提供者和消费者

在服务调用关系中,会有两个不同的角色:

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)

服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

但是,服务提供者与服务消费者的角色并不是绝对的,而是相对于业务而言。

如果服务A调用了服务B,而服务B又调用了服务C,服务B的角色是什么?

对于A调用B的业务而言:A是服务消费者,B是服务提供者

对于B调用C的业务而言:B是服务消费者,C是服务提供者

因此,服务B既可以是服务提供者,也可以是服务消费者。

Eureka注册中心

假如我们的服务提供者user-service部署了多个实例,如图:

大家思考几个问题:

order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口?

有多个user-service实例地址,order-service调用时该如何选择?

order-service如何得知某个user-service实例是否依然健康,是不是已经宕机?

Eureka的结构和作用

问题1:order-service如何得知user-service实例地址?

获取地址信息的流程如下:

user-service服务实例启动后,将自己的信息注册到eureka-server(Eureka服务端)。这个叫服务 注册

eureka-server保存服务名称到服务实例地址列表的映射关系

order-service根据服务名称,拉取实例地址列表。这个叫服务发现或服务拉取

问题2:order-service如何从多个user-service实例中选择具体的实例?

order-service从实例列表中利用负载均衡算法选中一个实例地址 向该实例地址发起远程调用

问题3:order-service如何得知某个user-service实例是否依然健康,是不是已经宕机?

user-service会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳 当超过一定时间没有发送心跳时,

eureka-server会认为微服务实例故障,将该实例从服务列表中 剔除 order-service拉取服务时,就能将故障实例排除了

因此,接下来我们动手实践的步骤包括:

搭建eureka-server

首先大家注册中心服务端:eureka-server,这必须是一个独立的微服务

创建eureka-server服务

Eureka使用

Eureka 的操作步骤

java 复制代码
/**
 * eureka :
 * 1.引入 spring-cloud-starter-netflix-eureka-server 依赖
 * 2.在启动类上加 @EnableEurekaServer 开关注解
 * 3.在yml里配置信息
 */

1.第一步 引入依赖

java 复制代码
       <!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

2.第二步添加注解

java 复制代码
/**
 * @EnableEurekaServer注解 Eureka开关注解 :开启Eureka
 */
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

3.添加配置信息

java 复制代码
server:
  port: 10086 #服务端口
spring:
  application:
    name: eurekaserver # 服务名称

#Eureka 配置信息
eureka:
  client:
    register-with-eureka: false   #是否将自己注册到eureka中
    fetch-registry: false
    service-url: # eureka 地址信息
      defaultZone: http://localhost:10086/eureka

启动服务

启动微服务,然后在浏览器访问:http://127.0.0.1:10086

看到下面结果应该是成功了:

服务注册

下面,我们将user-service注册到eureka-server中去。

引入依赖

在user-service的pom文件中,引入下面的eureka-client依赖:

java 复制代码
    <!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

配置文件

java 复制代码
server:
  port: 8081
spring:
  application:
    name: userserver # 服务名称
eureka:
  client:
    service-url: # eureka 地址信息
     defaultZone: http://localhost:10086/eureka

启动多个user-service实例

为了演示一个服务有多个实例的场景,我们添加一个SpringBoot的启动配置,再启动一个userservice。

首先,复制原来的user-service启动配置:

服务发现

下面,我们将order-service的逻辑修改:向eureka-server拉取user-service的信息,实现服务发现。

引入依赖

java 复制代码
    <!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

配置文件

java 复制代码
server:
  port: 8080
spring:
  application:
    name: orderserver # 服务名称

eureka:
  client:
    service-url: # eureka 地址信息
     defaultZone: http://localhost:10086/eureka

服务拉取和负载均衡

最后,我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均衡。 不过这些动作不用我们去做,只需要添加一些注解即可。

这期就到这里 , 下期见!

相关推荐
记得开心一点嘛7 小时前
Docker compose 部署微服务项目(从0-1出发纯享版无废话)
docker·容器·eureka
江畔独步2 天前
docker容器监控&自动恢复
docker·容器·eureka
IT小辉同学3 天前
Docker如何更换镜像源提高拉取速度
spring cloud·docker·eureka
高峰君主3 天前
Docker容器持久化
docker·容器·eureka
backRoads4 天前
docker部署springboot(eureka server)项目
spring boot·docker·eureka
陈平安Java and C5 天前
Eureka、LoadBalance和Nacos
eureka
007php0075 天前
使用 Docker 安装 Elastic Stack 并重置本地密码
大数据·运维·后端·mysql·docker·eureka·jenkins
零点零一7 天前
docker能用来干什么的
云原生·eureka
风舞雪凌月8 天前
【安全】DVWA靶场渗透
安全·web安全·云原生·eureka
Bl_a_ck11 天前
【C++】Docker介绍
运维·docker·容器·eureka