SpringCloud(二.1)Eureka服务的搭建与使用

什么是Eureka?

在上一篇微服务项目远程调用,我们学到了注册RestTemplate,利用RestTemplate发送http请求,从而得到想要的数据。

但是这里的写法有一些问题,URL的地址是写死的。

如果以后有各种环境,比如:本地环境、测试环境、生产环境。不可能每次都来这里配置URL地址。

再比如:如果以后为了高并发,User微服务可能会部署成多实例形成一个集群。每个实例都有自己的端口,user-service1 是8081、 user-service2 是8082 、user-service3 是8083 等等。写死的话该写哪个地址,怎么保证写的地址是通的没有挂掉?

 

 

这里就会用到 Eureka服务 来记录和管理这些服务,每一个微服务在启动的那一刻会把自己的信息注册给 Eureka服务。Eureka服务会把这些信息记录下来 地址、端口。

并且微服务每隔30s会向Eureka发送一次心跳,Eureka会更新记录服务列表信息,如果心跳不正常就会把此服务信息地址给踢除。

这也就保证了Eureka中保存的每个微服务的信息都是通的,可用的。

这时如果 订单的微服务 想要调用消费 用户微服务的接口。直接从Eureka服务拉取用户服务的信息。

 

 

 

搭建EurekaServer

EurekaServer也是一个微服务项目,搭建好项目第一件事就是先把自己注册进去(第三步eureka)。

<!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
eureka依赖

server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
yml

 

 

 

 

 

把其它微服务注册到EurekaServer只需要两步,引入eureka依赖,然后在yml配置文件中配置eureka地址(application和eureka)。

 

 

在order-service完成服务拉取

 

 

 

 

如果userservice有多个实例,这里拉取到的服务是通过Ribbon默认的负载均衡模式随机轮巡分配的地址

原理如图:

 

配置变更负责均衡规则

 

Ribbon饥饿加载配置

 

posted @ 2024-03-18 22:55  一介桃白白  阅读(37)  评论(0编辑  收藏  举报