• SpringCloud(一) 注册中心Eureka配置


    Eureka是Netflix提供的开源产品,用于服务注册和发现的注册中心。是SpringCloud体系的重要核心组件。

    背景


    注册中心是管理各种服务的一个服务模块 ,在一个分布式微服务系统中,通过注册中心对其他服务进行注册发现熔断负载降级等处理,以实现整个分布式微服务系统的平稳、高效的运行。

    服务A调用服务B

    普通系统服务间调用:

        

    注册中心系统中调用:

        

    服务A 调用服务B ,服务B调用服务C

    普通系统服务间调用:

        

    注册中心系统中调用:

        

    原理


    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的基本架构:

           

    1、Eureka Server :提供服务注册和发现;

    2、Service Provider:提供服务,将自身注册到Eureka,便于消费都调用;

    3、Service Consumer:消费服务,从Eureka获取服务列表,以调用服务;

    案例


     1. eureka项目结构:

    2. pom.xml文件如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     4     <modelVersion>4.0.0</modelVersion>
     5 
     6     <groupId>com.wei</groupId>
     7     <artifactId>CloudEurekaServer</artifactId>
     8     <version>0.0.1-SNAPSHOT</version>
     9     <packaging>jar</packaging>
    10 
    11     <name>CloudEurekaServer</name>
    12     <description>Demo project for Spring Boot</description>
    13 
    14     <parent>
    15         <groupId>org.springframework.boot</groupId>
    16         <artifactId>spring-boot-starter-parent</artifactId>
    17         <version>2.0.1.RELEASE</version>
    18         <relativePath /> <!-- lookup parent from repository -->
    19     </parent>
    20 
    21     <properties>
    22         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    23         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    24         <java.version>1.8</java.version>
    25         <spring-cloud.version>Finchley.M9</spring-cloud.version>
    26     </properties>
    27 
    28     <dependencies>
    29         <dependency>
    30             <groupId>org.springframework.cloud</groupId>
    31             <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    32         </dependency>
    33 
    34         <dependency>
    35             <groupId>org.springframework.boot</groupId>
    36             <artifactId>spring-boot-starter-test</artifactId>
    37             <scope>test</scope>
    38         </dependency>
    39     </dependencies>
    40 
    41     <dependencyManagement>
    42         <dependencies>
    43             <dependency>
    44                 <groupId>org.springframework.cloud</groupId>
    45                 <artifactId>spring-cloud-dependencies</artifactId>
    46                 <version>${spring-cloud.version}</version>
    47                 <type>pom</type>
    48                 <scope>import</scope>
    49             </dependency>
    50         </dependencies>
    51     </dependencyManagement>
    52 
    53     <build>
    54         <plugins>
    55             <plugin>
    56                 <groupId>org.springframework.boot</groupId>
    57                 <artifactId>spring-boot-maven-plugin</artifactId>
    58             </plugin>
    59         </plugins>
    60     </build>
    61 
    62     <repositories>
    63         <repository>
    64             <id>spring-milestones</id>
    65             <name>Spring Milestones</name>
    66             <url>https://repo.spring.io/milestone</url>
    67             <snapshots>
    68                 <enabled>false</enabled>
    69             </snapshots>
    70         </repository>
    71     </repositories>
    72 
    73 </project>

    3. application.properties(可以采用yml形式)配置如下:

     1 # 服务名
     2 spring.application.name=cloud-eureka-server
     3 # 服务端口
     4 server.port=9000
     5 
     6 # 指示此实例是否应将其信息注册到eureka服务器以供其他人发现。在某些情况下,您不希望发现实例,而您只想发现其他实例。
     7 eureka.client.register-with-eureka=false
     8 # 指示该客户端是否应从eureka服务器获取eureka注册表信息。
     9 eureka.client.fetch-registry=false
    10 
    11 eureka.client.service-url.defaultZone=http://localhost:${server.port}/eureka/
    12 
    13 # 关闭服务保护机制
    14 eureka.server.enable-self-preservation=false
    15 # 清理无效节点时间间隔(单位毫秒,默认是60*100016 eureka.server.eviction-interval-timer-in-ms=30000

     4.项目主类CloudEurekaServerApplication.java的内容:

    package com.wei;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    /**
     * cloud系统 Eureka注册中心
     * 
     * @author wgm
     * @date 2018年8月24日
     */
    @SpringBootApplication
    @EnableEurekaServer
    public class CloudEurekaServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(CloudEurekaServerApplication.class, args);
        }
    }

    5.运行项目后,在本地浏览器访问:http://localhost:9000/eureka/ 即可看到注册中心页面,至此,最简单的eureka注册中心完成。

  • 相关阅读:
    Oracle-学习笔记(==》集合函数与分组四)
    Mysql--学习笔记(==》简单查询三)
    Mysql-学习笔记(==》插入修改数据二)
    Mysql-学习笔记(==》建表修改一)
    EasyUI的DataGrid 打印导出
    SQL 中ROLLUP 用法
    easyui commbox嵌入一个checkbox的实现
    Easyui Layout Center 全屏方法扩展
    Datagrid扩展方法InitEditGrid{支持单元格编辑}
    Datagrid扩展方法onClickCell{easyui-datagrid-扩充-支持单元格编辑}
  • 原文地址:https://www.cnblogs.com/weigm/p/9523962.html
Copyright © 2020-2023  润新知