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



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

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

猜你喜欢

转载自www.cnblogs.com/gloria-liu/p/10243132.html