【微服务】微服务注册与调用----Eureka

Eureka

  • 前言
  • Eureka简介
    • Eureka Server
    • Eureka Client
    • Eureka优势
  • Eureka Server单点模式
    • 创建Eureka Server
      • 创建Spring Boot项目
      • 添加依赖
      • 配置Eureka Server
      • 启动
  • 部署
  • 总结

前言

大家好,我是DJ李淳罡,微服务是现在面试中必不可少的一项技能了,掌握微服务,不仅能够加薪升职,还能在面试中,底气十足,不怯场,不怕被压薪资。所以今天就特意开了一个微服务专栏,给大家从0-1的介绍微服务知识,由浅入深,逐渐掌握,感兴趣的可以订阅收藏,防止下次找不到了哦~

Eureka简介

前面几篇讲了微服务的概念性的知识点以及如何利用SpringBoot搭建一个简易版的微服务。从前面了解到的微服务的概念中,它有一个服务中心,所有的微服务组件都要注册到服务中心上,可见它的重要性,今天就给大家讲一个微服务注册中心----Eureka。准备了几天,今天正式进入微服务大门了!

EurekaNetflix开发的服务发现框架,本身是一个基于REST的服 务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的
Spring Cloud将它集成在其子项目spring- cloud-netflix中,以实现Spring Cloud的服务发现功能。

它包含了两个组件:Eureka ServerEureka Client

Eureka Server

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观地看到。

支持高可用配置。依托于强一致性提供良好的服务实例可用性,可以应对多种不同的故障场景。
如果Eureka以集群方式部署,当集群中有分片出现故障时,那么Eureka就转入自我保护模式。它允许在分片故障期间继续提供服务的发现和注册,当故障分片恢复运行时,集群中的其他分片会把它们的状态再次同步回来。

Eureka Client

Eureka Client是一个Java客户端,用于简化与Eureka Server的交互, 客户端同时也是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳, Eureka Server将会从服务注册表中把这个服务节点移除(默认为90 秒)。

Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供 了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以 利用缓存中的信息消费其他服务的API。因此,Eureka通过心跳检查、 客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性

Eureka优势

市面上服务中心组件,并不少,为啥选择Eureka作为服务发现组件呢?

  • Eureka来自生产环境,这是它天生的优势。
  • Spring Cloud对Eureka支持很好

Eureka架构如图所示。

【微服务】微服务注册与调用----Eureka_第1张图片

以上是Eureka官方的架构图,大致描述了Eureka集群的工作过程。 图中包含的组件非常多,可能比较难以理解,我们用通俗易懂的语言解释一下:

  • Application Service :相当于服务提供者。
  • Application Client:相当于服务消费者。
  • Make Remote Call:可以简单理解为调用RESTful API
  • us-east-1c、us-east-1d:都是zone,它们都属于us-east-1这个region。

从这个架构图中,可以简单性的看出一些服务逻辑,比如:

  • Eureka Client是一个Java客户端,用于简化与Eureka Server的交互。
  • Eureka Server提供服务发现的能力,各个微服务启动时,会通过 Eureka Client向Eureka Server注册自己的信息(例如网络信息),Eureka Server会存储该服务的信息。
  • 微服务启动后,会周期性地向Eureka Server发送心跳(默认周期为30秒)以续约自己的信息。如果Eureka Server在一定时间内 没有接收到某个微服务节点的心跳,Eureka Server将会注销该微服务节点(默认为90秒)。
  • 每个Eureka Server同时也是Eureka Client,多个Eureka Server之 间通过复制的方式完成服务注册表的同步。
  • Eureka Client会缓存Eureka Server中的信息。即使所有的Eureka Server节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者。

因此,Eureka通过心跳检测健康检查客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性。

Eureka Server单点模式

Eureka Server注册中心服务,属于Netflix组件中的一个功能,它提供了完整的Service RegistryService Discovery的实现。所谓单点模式 也叫作Standalone Mode,顾名思义就是只有一台Eureka Server服务器, 所有的微服务均注册到一个独立的服务中心。

Eureka Server在开发中的典型配置如下:

server:
  port: 8761  #声明eureka端口号
eureka:
  instance:
    hostname:localhost  #声明eureka主机
  client:
    register-with-eureka:false    # 是否注册到其他Eureka 服务
    fetch-registry:false  # 是否从其他Eureka 服务获取注册信息
    service-url:
      defaultZone:http://${eureka.instance.hostname}:{server.port}/eureka/

创建Eureka Server

  1. 添加依赖Eureka Server
  2. 添加@EnableEurekaServer注解。
  3. 修改application.yml,添加关于Eureka Server的配置。

创建Spring Boot项目

项目创建还是在IDEA中新建项目,选择使用Spring Initializr向导生成,添加依赖时只选择Eureka Server即可。

添加依赖

向导中引入Eureka Server依赖,如图所示。
【微服务】微服务注册与调用----Eureka_第2张图片

配置Eureka Server

对第2步中生成的Spring Boot项目进行配置,修改如下:

  • 添加@EnableEurekaServer注解

在启动类上添加@EnableEurekaServer注解,从而将项目作为Spring Cloud中的注册中心,此时,可以将@EnableEurekaServer注解看作是一 个开关,开启时,会激活相关配置,成为注册中心。参考代码如下:

@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaServer {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaServer.class, args);
    }

}
  • 配置application.yml文件

按照以下模板进行配置,通过eureka.client.registerWithEureka:falsefetchRegistry:false来表明自己是一个Eureka Server。

server:
  port: 8761  #声明eureka端口号
eureka:
  instance:
    hostname:localhost  #声明eureka主机
  client:
    register-with-eureka:false    # 是否注册到其他Eureka 服务
    fetch-registry:false  # 是否从其他Eureka 服务获取注册信息
    service-url:
      defaultZone:http://${eureka.instance.hostname}:{server.port}/eureka/

启动

启动项目后,我们可以通过localhost:8761,来访问项目,当出现如下时,即是成功。
【微服务】微服务注册与调用----Eureka_第3张图片
至此,我们已经创建好了一个Eureka Server。

部署

Spring Boot项目打包成可以运行的jar包,步骤说明如下(这里用的开发环境是IDEA)。

把Spring Boot打包成jar的形式,需要在pom.xml文件对应以下代码:

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
             
            </plugin>
        </plugins>
    </build>

通过maven==》package,即可打包成jar包
【微服务】微服务注册与调用----Eureka_第4张图片
然后将打好的包,发布到任意已经安装好JDK 1.8的主机上, 并使用以下命令启动它:

 #java -jar springcloud-xxx.jar

最后,将可运行的jar包拷贝到一台Linux机器上,并在Linux控制台上启动它,如图所示。
【微服务】微服务注册与调用----Eureka_第5张图片

总结

本篇文章实现了利用springBoot完成了 Eureka Server的单点模式,只开发了一个server服务。在下篇文章中会开发出client 客户端服务,实现服务的注册与调用。

你可能感兴趣的:(微服务,eureka,微服务,spring,cloud,服务注册,注册中心)