zoukankan      html  css  js  c++  java
  • SpringCloud(一) 注册中心Eureka配置

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

    背景


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

    服务A调用服务B

    普通系统服务间调用:

    注册中心系统中调用:

    原理


    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项目结构:

    (1).springcloud_eureka父项目的pom文件 (就做一个版本的控制)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        
        <groupId>com.cc8w</groupId>
        <artifactId>springcloud_eureka</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
        <name>springcloud_eureka</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <spring.cloud-version>Hoxton.SR8</spring.cloud-version>
        </properties>
        <!-- 版本控制 -->
        <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>
    
        <dependencies>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
      <modules>
        <module>eureka_server</module>
        <module>eureka_a</module>
      </modules>
    </project>

    (2) eureka_server注册中心的pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.cc8w</groupId>
            <artifactId>springcloud_eureka</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <artifactId>eureka_server</artifactId>
        <name>eureka_server</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

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

    # 服务名
    spring.application.name=cloud-eureka-server
    # 服务端口
    server.port=8761
    
    # 指示此实例是否应将其信息注册到eureka服务器以供其他人发现。在某些情况下,您不希望发现实例,而您只想发现其他实例。
    eureka.client.register-with-eureka=true
    # 指示该客户端是否应从eureka服务器获取eureka注册表信息。
    eureka.client.fetch-registry=true
    
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka,http://127.0.0.1:8761/eureka
    
    
    # 关闭服务保护机制
    eureka.server.enable-self-preservation=false
    # 清理无效节点时间间隔(单位毫秒,默认是60*1000)
    eureka.server.eviction-interval-timer-in-ms=30000
    
    #每30S给其他服务发次请求,监测心跳
    eureka.instance.lease-renewal-interval-in-seconds: 30
    #如果其他服务没心跳,90S后剔除该服务
    eureka.instance.lease-expiration-duration-in-seconds: 90

     3.项目主类的内容:

    package com.cc8w;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer //启用注册中心
    public class EurekaServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class, args);
        }
    
    }

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

    注意:我这里 http://localhost:9000/eureka/ 打不开 !! 不知原因

    转: https://www.cnblogs.com/weigm/p/9523962.html

  • 相关阅读:
    Cookie
    JS开发常用工具函数
    手动搭建Vue之前奏:搭建webpack项目
    Redis的下载与安装
    Redis官方Tutorial
    Redis之datatype概述
    18 SQL优化
    16 SQL Mode
    17 MySQL的小技巧
    14 事务控制和锁定语句
  • 原文地址:https://www.cnblogs.com/fps2tao/p/14025253.html
Copyright © 2011-2022 走看看