淘先锋技术网

首页 1 2 3 4 5 6 7

什么是Eureka,为什么需要Eureka

eureka在Spring Cloud系列的微服务框架中是一个服务发现组件的角色,通俗来说就是一个消息贩子。在微服务框架中,很多功能被拆成了一个个的服务,所谓服务,可以认为就是项目。比如用户管理,就可以做一个用户服务,也就是这个项目,只处理了用户相关的功能。那么原先一个单体架构的项目,就可以拆分成一个个的微服务,这个数量可能会很多。而且,这些微服务可能会部署到不同的服务器上面。那么当用户请求过来的时候,如何来查找到他所需要的微服务。
这时候,一个角色出现了,那就是服务发现组件。你需要什么,你直接跟服务组件说,他会告诉你怎么访问这个微服务。比如,你对服务发现组件说,我需要登录,那好,他就把登录对应的微服务的访问方式给你。然后,你拿着这个访问方式,就自己去找登录的微服务了。这不就是各小说中的百事通嘛。
那么问题来了,eureka为什么会知道各微服务的访问方式呢?
原来,各微服务如果想要把自己的联系方式告诉eureka(这就是注册),那么是需要作为一个eureka的客户端(eureka-client)。然后,在微服务启动的时候,就会告诉服务发现组件(eureka-server),我叫啥名字,怎么联系我。到时候,有人来拿着我的名字来找我,你就告诉它我的联系方式。那这样子,服务发现组件就知道了微服务的联系方式。
这时候,服务发现组件(eureka-server)对微服务说,我怎么确保你的联系方式是有用的啊,我可不能坑了来我这里问消息的人。微服务就说了,那我们保持联系吧,我每隔一段时间就联系一下你,那你就知道我的联系方式是有用的啦。(健康检查)

如何构建一个单体的服务发现组件

  1. 在pom.xml上添加eureka服务器的依赖

    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
  2. 给EurekaApplication添加注解@EnableEurekaServer

    package com.wangguitang.freedom.study.spring.cloud.eureka;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaApplication.class, args);
        }
    }
    
  3. 在配置文件application.yml中添加配置

    server:
      port: 
    eureka:
      instance:
        hostname: localhost
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    

启动Eureka服务器

  1. 右键类EurekaApplication,选中Run As–>Spring Boot App

进一步思考

用单体方式部署服务发现组件好不好?当然不好,如果到时候服务发现组件挂了,那么所有的微服务岂不是都不能访问了。所以我们不能把鸡蛋放到一个篮子里,我们要多找几个服务发现组件,如果一个服务发现组件挂了,那么我们还可以找其他的服务发现组件,这就是集群。下一步,我们就来学习如何实现服务发现组件的集群。
最后献上Spring Cloud的架构图

Spring Cloud的架构图

github代码

https://github.com/wang465745776/freedom-study-spring-cloud-parent/tree/master/freedom-study-spring-cloud-eureka