服务治理:Spring Cloud Eureka(一)

Eureka 是 Spring Cloud Netflix 套件中的一部分,基于Netflix做了二次封装,主要负责完成微服务架构中的服务治理功能。
Spring Cloud 已经为Eureka增加了Spring Boot风格自动化配置,只需简单的引入依赖和注解配置即可整合。

服务治理:主要用来实现各个微服务实例的自动化注册与发现,是微服务架构中最为核心和基础的模块。
目的:解决微服务架构中的服务实例维护问题(避免手动维护,消耗大量的人力,极易发生错误)
始终围绕着服务注册与服务发现机制来完成对微服务应用实例的自动化管理。

服务注册:
    通常构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号、版本号、协议等附加信息,注册中心会按服务名分类组织服务清单。 注册中心通常会已心跳的方式检测清单中的服务是否可用,不可用将剔除该服务。

服务发现:
    在服务治理框架下,服务间的调用不再通过指定具体的实例地址实现,而是通过向服务名发起请求调用实现。所以调用方在调用服务时,并不知道具体服务的实例位置,因此调用方需要向服务注册中心咨询服务,并获取实例清单,以实现对服务的访问。

    SpringCloud Eureka,使用Netflix Eureka 来实现服务注册与发现,服务端与客户端均采用java编写。主要适用于Java实现分布式系统,因其提供了完备的RESTful API ,所以其也支持非Java语言构建的微服务应用。

Eureka 服务端:
    服务注册中心,支持高可用配置,依托于强一致性提供良好的服务实例可用性。不同可用区域的服务注册中心通过异步模式互相复制各自的状态,在任意给定的时间点每个实例关于所有服务的状态是有细微差别的。

Eureka 客户端:
    主要处理服务的注册与发现。客户端服务通过注解和参数配置的方式,嵌入在客户端应用程序的代码中,在应用程序运行时,客户端想注册中心注册自身提供的服务并周期性的发送心跳来更新服务租约。也能够从服务端查询当前注册的服务信息并把它们缓存到本地并周期性的刷新服务状态。


1、搭建Eureka 服务端(注册中心)
     创建基础的Spring Boot工程,引入eureka-server依赖
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

        在启动程序的入口处添加@EnableEurekaServer注解启动一个服务注册中心
        在默认配置下,该服务中心会将自己作为客户端去注册自己,需要禁用客户端注册行为:
(application.properties)
server.port=1111

# eureka服务注册中心配置
eureka.instance.hostname=localhost
# 此为服务注册中心,需要禁止自身将自己认为客户端去注册自己
eureka.client.register-with-eureka=false
# 注册中心不需要检索服务,职责是维护服务实例
eureka.client.fetch-registry=false
        访问:localhost:1111,即可看到Eureka信息面板(下面表示没有注册到该中心的服务)。
2、注册服务提供者(向注册中心注册服务)
    在服务提供者的pom.xml中添加所需依赖
    <dependencies>
        <!-- spring eureka 所需依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
    <!-- spring cloud所需依赖 及版本 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
        为了显示方便,我们在服务类中注入DiscoveryClient对象,在日志中打印出服务内容。


    在程序入口中添加@EnableDiscoveryClient 注解,激活DiscoveryClient实现。


    在配置文件中,命名service-name,并指定注册中心的URL地址(对应服务端的端口):


    配置完成后,启动服务。
    在控制台中可以看到服务注册的信息:

    在注册中心的控制台中,看到注册信息:

    查看localhost:1111 也可以显示已经注册的服务:

完毕。



猜你喜欢

转载自blog.csdn.net/x3499633/article/details/80449648