• SpringCloud (一)——基本的搭建


    简介
    SpringCloud是一个基于SpringBoot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由等操作提供了一种简单的开发方式。

    Spring Cloud 的github地址https://github.com/Netflix/Eureka

    SpringCloud包含的子项目中Spring Cloud NetFlix :核心组件,对多个Netflix OSS 开源套件进行整合。

    • Eureka:服务治理组件,包含注册中心、服务注册与发现机制的实现。
    • Hystrix:容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力。
    • Ribbon:客户端负载均衡的服务调用组件。
    • Feign:基于Ribbon和Hystrix的声明式服务调用组件
    • Zuul:网关组件,提供智能路由】访问过滤等功能。
    • Archaius:外部化配置组件。

    Spring Cloud Eureka

    一. 服务注册与发现

    图中Eureka Server通常为框架中构建的注册中心,每个service consumer 即服务单元向注册中心登记自己提供的服务,将主机与端口号、版本号、通信协议等一些附加信息告知注册中心。
    服务方调用调用服务提供方的接口时,需向服务注册中心咨询服务,并获取服务,以实现访问。

    注册中心Eureka Server

    • 服务名称分类组织服务清单
    • 以心跳的方式去监测清单中服务是否可用,不可用则从服务清单中剔除。
    • 服务端-没有存储,内存保持,每服务实例需要发送心跳去续约
    • 客户端-在内存中缓存着eureka的注册信息,因此不必每请求到eureka查找服务
    • eureka之间会做注册服务同步,从而保证状态一致,客户端只需访问一个eureka

    Service Provider

    • 会向Eureka Server做Register(服务注册)、Renew(服务续约)、Cancel(服务下线)等操作

    Service Consumer

    • 会向Eureka Server获取注册服务列表,并消费服务
    • 向注册中心注册自身提供的服务,并周期性的发送心跳来更新服务租约

    二 搭建服务注册中心

    1、首先建立SpringBoot工程,在pom.xml中加入配置信息

     <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-security</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <!--排除内置的tomcat-->
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <!--<scope>provided</scope>-->
            </dependency>
        </dependencies>
    

    2、通过@EnableEurekaServer 注解启动一个服务注册中心,即在SpringBoot应用中添加即可

    @EnableEurekaServer
    @SpringBootApplication
    public class RegisterApplication extends SpringBootServletInitializer{
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(RegisterApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(RegisterApplication.class,args);
        }
    }
    
    
    

    在默认设置下,避免服务注册中心将自己作为客户端注册自己,于是在application.properties中增加如下配置

    server:
      port: 9000
      context-path: /registry
    spring:
      application:
        name: registry-server
    eureka:
      instance:
        hostname: localhost
      client:
        register-with-eureka: false
        fetch-registry: false
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/${server.context-path}/eureka/
    security:
      basic:
        enable: true
    
      user:
        name: admin
        password: admin
    
    
    
    
    

    启动服务,注册界面报错信息:


    Eureka server和client之间每隔30秒会进行一次心跳通信,告诉server,client还活着。由此引出两个名词:
    Renews threshold:server期望在每分钟中收到的心跳次数
    Renews (last min):上一分钟内收到的心跳次数。
    前文说到禁止注册server自己为client,不管server是否禁止,阈值(threshold)是1。client个数为n,阈值为1+2n(此为一个server且禁止自注册的情况)
    如果是多个server,且开启了自注册,那么就和client一样,是对于其他的server来说就是client,是要
    2的
    阈值:1+21
    renews:
    1)自注册 2 + 2
    1
    2)非自注册:2*1
    Eurake有一个配置参数eureka.server.renewalPercentThreshold,定义了renews 和renews threshold的比值,默认值为0.85。当server在15分钟内,比值低于percent,即少了15%的微服务心跳,server会进入自我保护状态,Self-Preservation。在此状态下,server不会删除注册信息,这就有可能导致在调用微服务时,实际上服务并不存在。

    参考文章https://www.cnblogs.com/breath-taking/articles/7940364.html

  • 相关阅读:
    arduino电子艺术PWM直流电机电调实验
    横坐标轴移动位置
    将不才则三军倾
    Source Insight常用快捷键及注释快捷键设置
    dos2unix批量转换的脚本
    win8: ListView
    win8: Asynchronous Programming in JavaScript with “Promises”
    WindJS 中的$await
    iphone:关于沙盒 存储路径
    win8: hello gril
  • 原文地址:https://www.cnblogs.com/gloria-liu/p/10243132.html
Copyright © 2020-2023  润新知