SpringCloud | 第二章: 注册中心 Eureka

版权声明:喜欢的点个赞吧!欢迎转载,请注明出处来源,博文地址: https://blog.csdn.net/u012294515/article/details/86222151

前言

前一章节 初识SpringCloud 简单介绍了什么是SpringCloud,以及微服务的架构,这一章节则来说说SpringCloud的基石,注册中心Eureka。

背景介绍

EurekaNetflix开源的一款提供服务注册和发现的产品,它提供了完整的Service RegistryService Discovery实现。也是SpringCloud体系中最重要最核心的组件之一。

服务中心

服务中心又称注册中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等,比如dubbo admin后台的各种功能。

Netflix

Netflix是一家美国公司,在美国、加拿大提供互联网随选流媒体播放,定制DVD、蓝光光碟在线出租业务。该公司成立于1997年,总部位于加利福尼亚州洛斯盖图,1999年开始订阅服务。2009年,该公司可提供多达10万部DVD电影,并有1千万的订户。2007年2月25日,Netflix宣布已经售出第10亿份DVD。HIS一份报告中表示,2011年Netflix网络电影销量占据美国用户在线电影总销量的45%。

平时业余的时候巨爱看美剧,看到这个我大吃一惊,网飞还有这个业务?顺道给大家推一部网飞美剧《超感猎杀》~~

Netflix的开源框架组件已经在Netflix的大规模分布式微服务环境中经过多年的生产实战验证,正逐步被社区接受为构造微服务框架的标准组件。Spring Cloud开源产品,主要是基于对Netflix开源组件的进一步封装,方便Spring开发人员构建微服务基础框架。对于一些打算构建微服务框架体系的公司来说,充分利用或参考借鉴Netflix的开源微服务组件(或Spring Cloud),在此基础上进行必要的企业定制,无疑是通向微服务架构的捷径。

Eureka

Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.
Eureka 是一个基于 REST 的服务,主要在 AWS 云中使用, 定位服务来进行中间层服务器的负载均衡和故障转移

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server,并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server来发现系统中的其他微服务,并执行相关的逻辑。

Eureka由两个组件组成:Eureka服务器Eureka客户端Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡

Eureka Server 部署

  • 推荐使用 IntelliJ IDEA 旗舰版开发,旗舰版可以直接创建 SpringBoot 项目

创建 Server 项目

  1. 创建 SpringBoot 项目
    在这里插入图片描述
  2. 项目Maven文件创建,引入 Eureka Server 模块
    在这里插入图片描述
    在这里插入图片描述
  3. 工程创建完毕
    在这里插入图片描述

修改 POM 文件

上一章节 说过,SpringBootSpringCloud 有对应的版本号,可以在官网查看最新的版本。这里不在赘述。

因此在项目中需要修改POM文件的 SpringBootSpringCloud 的版本。

扫描二维码关注公众号,回复: 5366550 查看本文章

在这里插入图片描述

本案例使用的是 SpringBoot, 2.0.6.RELEASESpringCloud Finchley.RC2

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RC2</spring-cloud.version>
</properties>

修改 application 配置文件

application.yml 配置文件是工程的总配置文件,在这边配置Eureka Server的一些配置

  1. 服务端ID(必须)
  2. 映射端口(必须)
  3. 自身是否需要注册
spring:
  application:
    # 应用名称,默认也是注册中心的ID
    name: registry
server:
  # 注册中心映射端口号,默认端口8761
  port: 8761
eureka:
  client:
    # 对于Eureka服务器来说,自己没必要注册客户端
    register-with-eureka: false

程序启动

在启动程序上添加注解@EnableEurekaServer

package com.springcloud.registry;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer // 启动注册中心
public class RegistryApplication {

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

}

访问注册中心

浏览器输入 :http://localhost:8761/
在这里插入图片描述

Eureka Client 注册

创建 Client 项目

  1. 创建 SpringBoot 项目
    在这里插入图片描述
  2. 项目 Maven 文件创建,引入 Eureka DiscoveryWeb 模块
    在这里插入图片描述
    在这里插入图片描述
  3. 工程创建完毕
    在这里插入图片描述

修改 POM 文件

POM 的修改同 Server 端一样,版本号设置为 SpringBoot 2.0.6.RELEASESpringCloud Finchley.RC2
在这里插入图片描述

修改 application 配置文件

application.yml 配置文件是工程的总配置文件,在这边配置Eureka Client的一些配置

  1. 客户端ID(必须)
  2. 注册服务端地址(必须)
spring:
  application:
    #应用名称,默认客户端名称
    name: client
eureka:
  client:
    service-url:
      #客户端注册地址
      defaultZone: http://localhost:8761/eureka/

程序启动

在启动程序上添加注解 @EnableDiscoveryClient

package com.springcloud.client;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient //注册客户端
public class ClientApplication {

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

访问注册中心

浏览器输入 :http://localhost:8761/ ,已成功注册 Client

在这里插入图片描述

小结

本章主要通过代码简单了解了Eureka Server 的部署和 Eureka Client 的注册,客户端与服务端相连,如果Server端断开重启,Client会每隔30sServer发送心跳,请求重新注册,交互机制通过心跳请求的机制。同理Client如果断开,Server 会通过心跳机制检查 Client,如果发现 Client 没有反应则会剔除这个客户端。
PS:Eureka Server 有自我保护模式,需要相关设置才能实现剔除无效客户端,后续有时间写一个配置的文章说明。

猜你喜欢

转载自blog.csdn.net/u012294515/article/details/86222151