springcloud踩坑入门学习

Spring Cloud简介

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

注意:如果将maven仓库配置成了阿里云的仓库,会出现相关依赖包无法导入的情况,需要在idea创建项目的时候直接选择官方提供的依赖包或者在maven官方仓库搜索相关的依赖包的版本,在复制过来的依赖上加上版本即可解决。

微服务架构

微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。

CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

Eureka(服务发现)

创建“服务注册中心”:

  1. 新建一个SpringBoot项目,在添加依赖的时候选择Eureka Server

    image-20210112114730018

    可以看到依赖

    image-20210112114925810

  2. 通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话,在启动类上加上这个注解

    image-20210112115021581

  3. 在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,在applicaiton.yml进行配置。

    server:
      port: 1001
    eureka:
      instance:
        hostname: localhost
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://${
         eureka.instance.hostname}:${
         server.port}/eureka/
    
  4. 启动项目,访问localhost:1001,可以看到此时还没有发现任何服务。

    image-20210112131720309

  5. 服务注册类配置

    参数名 说明 默认值
    enabled 启用Eureka客户端 true
    registryFetchIntervalSeconds 从Eureka服务端获取注册信息的间隔时间,单位为秒 30
    instanceInfoReplicationIntervalSeconds 更新实例信息的变化到Eureka服务端的间隔时间,单位为秒 30
    initialInstanceInfoReplicationIntervalSeconds 初始化实例信息到Eureka服务端的间隔时间,单位为秒 40
    eurekaServiceUrlPollIntervalSeconds 轮询Eureka服务端地址更改的间隔时间,单位为秒。当我们与Spring CLoud Config整合,动态刷新Eureka的serviceURL地址时需要关注该参数 300
    eurekaServerReadTimeoutSeconds 读取Eureka Server信息的超时时间,单位为秒 8
    eurekaServerConnectTimeoutSeconds 链接Eureka Server的超时时间,单位为秒 5
    eurekaServerTotalConnections 从Eureka客户端到所有Eureka服务端的连接总数 200
    eurekaServerTotalConnectionsPerHost 从Eureka客户端到每个Eureka服务端主机的连接总数 50
    eurekaConnectionIdleTimeoutSeconds Eureka服务端连接的空闲关闭时间,单位为秒 30
    heartbeatExecutorThreadPoolSize 心跳连接池的初始化线程数 2
    heartbeatExecutorExponentialBackOffBound 心跳超时重试延迟时间的最大乘数值 10
    cacheRefreshExecutorThreadPoolSize 缓存刷新线程池的初始化线程数 2
    cacheRefreshExecutorExponentialBackOffBound 缓存刷新重试延迟时间的最大乘数值 10
    useDnsForFetchingServiceUrls 使用DNS来获取Eureka服务端的serviceUrl false
    registerWithEureka 是否要将自身的实例信息注册到Eureka服务端 true
    preferSameZoneEureka 是否偏好使用处于相同Zone的Eureka服务端 true
    filterOnlyUpInstances 获取实例时是否过滤,仅保留UP状态的实例 true
    fetchRegistry 是否从Eureka服务端获取注册信息 true
  6. 服务实例类配置

    参数名 说明 默认值
    preferIpAddress 是否优先使用IP地址作为主机名的标识 false
    leaseRenewalIntervalInSeconds Eureka客户端向服务端发送心跳的时间间隔,单位为秒 30
    leaseExpirationDurationInSeconds Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒。超过该时间之后服务端会将该服务实例从服务清单中剔除,从而禁止服务调用请求被发送到该实例上 90
    nonSecurePort 非安全的通信端口号 80
    securePort 安全的通信端口号 443
    nonSecurePortEnabled 是否启用非安全的通信端口号 true
    securePortEnabled 是否启用安全的通信端口号
    appname 服务名,默认取spring.application.name的配置值,如果没有则为unknown
    hostname 主机名,不配置的时候讲根据操作系统的主机名来获取

创建“服务提供方”

  1. 创建新项目,选择依赖。(还需要选上spring-web,因为要启动访问)

    image-20210112131846462

    创建完成后可以看到依赖:

    <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    
  2. 在启动类上添加@EnableEurekaClient@EnableDi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值