SpringCloud系列
[TOC]
SpringCloud系列
实际中应用及推荐文章
推荐文章:https://blog.csdn.net/zrl0506/article/details/80165477

推荐文章:https://blog.csdn.net/qq_37170583/article/details/80704904
SpringCloud和SpringBoot对应版本
官方文档:http://spring.io/projects/spring-cloud(一切始于官方文档)
Table1
Greenwich
2.1.X
Finchley
2.0.X
Edgware
1.5.x
Dalston
1.5.x
Table2
spring-cloud-aws
1.2.3.RELEASE
2.0.1.RELEASE
2.0.1.BUILD-SNAPSHOT
spring-cloud-bus
1.3.3.RELEASE
2.0.0.RELEASE
2.0.1.BUILD-SNAPSHOT
spring-cloud-cli
1.4.1.RELEASE
2.0.0.RELEASE
2.0.1.BUILD-SNAPSHOT
spring-cloud-commons
1.3.5.RELEASE
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-contract
1.2.6.RELEASE
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-config
1.4.5.RELEASE
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-netflix
1.4.6.RELEASE
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-security
1.2.3.RELEASE
2.0.1.RELEASE
2.0.1.BUILD-SNAPSHOT
spring-cloud-cloudfoundry
1.1.2.RELEASE
2.0.1.RELEASE
2.0.1.BUILD-SNAPSHOT
spring-cloud-consul
1.3.5.RELEASE
2.0.1.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-sleuth
1.3.5.RELEASE
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-stream
Ditmars.SR4
Elmhurst.SR1
Elmhurst.BUILD-SNAPSHOT
spring-cloud-zookeeper
1.2.2.RELEASE
2.0.0.RELEASE
2.0.1.BUILD-SNAPSHOT
spring-boot
1.5.16.RELEASE
2.0.6.RELEASE
2.0.7.BUILD-SNAPSHOT
spring-cloud-task
1.2.3.RELEASE
2.0.0.RELEASE
2.0.1.BUILD-SNAPSHOT
spring-cloud-vault
1.1.2.RELEASE
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-gateway
1.0.2.RELEASE
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-openfeign
2.0.2.RELEASE
2.0.2.BUILD-SNAPSHOT
spring-cloud-function
1.0.1.RELEASE
1.0.0.RELEASE
1.0.1.BUILD-SNAPSHOT
注意:
SpringCloud 版本为 Edgware 及以下,eureka包改为:
SpringCloud 版本为 Edgware 以上,eureka包改为netflix:
SpringCloudEureka
入门案例(一) Server与Client
入门案例(二)Server、Porvider与Consumer
项目整体结构:

eureka-server入门
一、导入jar
二、建立启动类
三、配置yml
四、访问
http://localhost:9001/

eureka-api 入门
Tips:此部分属于provider和consumer公用部分,所以单独作为一个模块,打包成jar供provider和consumer使用
模块结构

一、导入jar
二、建立相关类
eureka-provider入门
Tips: Eureka本身只区分server和client(client有provider和consumer),通过不同的配置来告知client,本身是provider还是consumer.
模块结构

一、导入jar
二、建立相关类
启动类:
服务接口实现:
暴露服务:
三、配置yml
四、访问
http://localhost:9001/

eureka-consumer入门
模块结构

一、导入jar
二、建立相关类
启动类:
调用服务:
三、配置yml
四、访问
http://localhost:9001/

熟悉掌握
eureka-server配置详解
enable-self-preservation
true
自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka 也不会将其删除,默认为true
eviction-interval-timer-in-ms
60000
eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
a-s-g-cache-expiry-timeout-ms
6000
缓存ASG信息的到期时间,单位为毫秒,默认为10 * 60 * 1000
a-s-g-query-timeout-ms
300
查询AWS上ASG(自动缩放组)信息的超时值,单位为毫秒,默认为300
a-s-g-update-interval-ms
5 * 60 * 1000
从AWS上更新ASG信息的时间间隔,单位为毫秒
a-w-s-access-id
获取aws访问的id,主要用于弹性ip绑定,此配置是用于aws上的
a-w-s-secret-key
获取aws私有秘钥,主要用于弹性ip绑定,此配置是用于aws上的
batch-replication
false
表示集群节点之间的复制是否为了网络效率而进行批处理
binding-strategy
获取配置绑定EIP或Route53的策略
delta-retention-timer-interval-in-ms
30 * 1000
清理任务程序被唤醒的时间间隔,清理过期的增量信息,单位为毫秒
disable-delta
false
增量信息是否可以提供给客户端看,默认为false
disable-delta-for-remote-regions
false
增量信息是否可以提供给客户端或一些远程地区
disable-transparent-fallback-to-other-region
false
如果在远程区域本地没有实例运行,对于应用程序回退的旧行为是否被禁用
e-i-p-bind-rebind-retries
3
获取服务器尝试绑定到候选的EIP的次数
e-i-p-binding-retry-interval-ms-when-unbound
1 * 60 * 1000
服务器检查ip绑定的时间间隔,单位为毫秒
e-i-p-binding-retry-interval-ms
5 * 60 * 1000
与上面的是同一作用,仅仅是稳定状态检查
enable-replicated-request-compression
false
复制的数据在发送请求时是否被压缩
g-zip-content-from-remote-region
true
eureka服务器中获取的内容是否在远程地区被压缩,默认为true
json-codec-name
如果没有设置默认的编解码器将使用全JSON编解码器,获取的是编码器的类名称
list-auto-scaling-groups-role-name
ListAutoScalingGroups
用来描述从AWS第三账户的自动缩放组中的角色名称
log-identity-headers
true
Eureka服务器是否应该登录clientAuthHeaders
max-elements-in-peer-replication-pool
10000
复制池备份复制事件的最大数量
max-elements-in-status-replication-pool:
10000
可允许的状态复制池备份复制事件的最大数量
max-idle-thread-age-in-minutes-for-peer-replication
10
状态复制线程可以保持存活的空闲时间
min-threads-for-status-replication
1
被用于状态复制的线程的最小数目
max-idle-thread-in-minutes-age-for-status-replication
15
复制线程可以保持存活的空闲时间,默认为15分钟
max-threads-for-peer-replication
20
获取将被用于复制线程的最大数目
max-time-for-replication
30000
尝试在丢弃复制事件之前进行复制的时间,默认为30000毫秒
min-threads-for-peer-replication
5
获取将被用于复制线程的最小数目
number-of-replication-retries
5
获取集群里服务器尝试复制数据的次数
peer-eureka-nodes-update-interval-ms
10 * 60 * 1000
集群里eureka节点的变化信息更新的时间间隔,单位为毫秒
peer-eureka-status-refresh-time-interval-ms
30 * 1000
服务器节点的状态信息被更新的时间间隔,单位为毫秒
peer-node-connect-timeout-ms
200
连接对等节点服务器复制的超时的时间,单位为毫秒
peer-node-read-timeout-ms
200
读取对等节点服务器复制的超时的时间,单位为毫秒
peer-node-total-connections
1000
获取对等节点上http连接的总数
peer-node-connection-idle-timeout-seconds
30
http连接被清理之后服务器的空闲时间,默认为30秒
peer-node-total-connections-per-host
500
获取特定的对等节点上http连接的总数
prime-aws-replica-connections
true
对集群中服务器节点的连接是否应该准备
rate-limiter-enabled
限流是否应启用或禁用,默认为false
rate-limiter-burst-size
速率限制的burst size ,默认为10,这里用的是令牌桶算法
rate-limiter-full-fetch-average-rate
100
速率限制器用的是令牌桶算法,此配置指定平均执行请求速率,默认为100
rate-limiter-privileged-clients
认证的客户端列表,这里是除了标准的eureka Java客户端。
rate-limiter-registry-fetch-average-rate
500
速率限制器用的是令牌桶算法,此配置指定平均执行注册请求速率,默认为500
rate-limiter-throttle-standard-clients
false
是否对标准客户端进行限流,默认false
registry-sync-retries
5
当eureka服务器启动时尝试去获取集群里其他服务器上的注册信息的次数,默认为5
registry-sync-retry-wait-ms
30 * 1000
当eureka服务器启动时获取其他服务器的注册信息失败时,会再次尝试获取,期间需要等待的时间,默认为30 * 1000毫秒
remote-region-app-whitelist
必须通过远程区域中检索的应用程序的列表
remote-region-connect-timeout-ms
1000
连接到对等远程地eureka节点的超时时间,默认为1000毫秒
remote-region-connection-idle-timeout-seconds
30
http连接被清理之后远程地区服务器的空闲时间,默认为30秒
remote-region-fetch-thread-pool-size
20
用于执行远程区域注册表请求的线程池的大小,默认为20
remote-region-read-timeout-ms
1000
获取从远程地区eureka节点读取信息的超时时间,默认为1000毫秒
remote-region-registry-fetch-interval
30
从远程区域取出该注册表的信息的时间间隔,默认为30秒
remote-region-total-connections
1000
获取远程地区对等节点上http连接的总数,默认为1000
remote-region-total-connections-per-host
500
获取远程地区特定的对等节点上http连接的总数,默认为500
remote-region-trust-store
用来合格请求远程区域注册表的信任存储文件,默认为空
remote-region-trust-store-password
获取偏远地区信任存储文件的密码,默认为“changeit”
remote-region-urls
远程地区的URL列表
remote-region-urls-with-name
针对远程地区发现的网址域名的map
renewal-percent-threshold
0.85
阈值因子,默认是0.85,如果阈值比最小值大,则自我保护模式开启
renewal-threshold-update-interval-ms
15 * 60 * 1000
阈值更新的时间间隔,单位为毫秒
response-cache-auto-expiration-in-seconds
180
当注册表信息被改变时,则其被保存在缓存中不失效的时间,默认为180秒
response-cache-update-interval-ms
30 * 1000
客户端的有效负载缓存应该更新的时间间隔,默认为30 * 1000毫秒
retention-time-in-m-s-in-delta-queue
3 * 60 * 1000
客户端保持增量信息缓存的时间,从而保证不会丢失这些信息,单位为毫秒
route53-bind-rebind-retries
3
服务器尝试绑定到候选Route53域的次数
route53-binding-retry-interval-ms
5 * 60 * 1000
服务器应该检查是否和Route53域绑定的时间间隔,默认为5 * 60 * 1000毫秒
route53-domain-t-t-l
301
用于建立route53域的ttl,默认为301
sync-when-timestamp-differs
true
当时间变化实例是否跟着同步,默认为true
use-read-only-response-cache
true
目前采用的是二级缓存策略,一个是读写高速缓存过期策略,另一个没有过期只有只读缓存,默认为true,表示只读缓存
wait-time-in-ms-when-sync-empty
1000 * 60 * 5
在Eureka服务器获取不到集群里对等服务器上的实例时,需要等待的时间,单位为毫秒,默认为1000 * 60 * 5
xml-codec-name
如果没有设置默认的编解码器将使用xml编解码器,获取的是编码器的类名称
SpringCloudFegin
官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.0.2.RELEASE/single/spring-cloud-openfeign.html
一、导入jar
Springboot 2.0.0 以下
Springboot 2.0.0 及以上
二、建立相关类
启动类(加上注解):
修改类:
调用服务:
三、配置yml
四、访问
http://localhost:9001/

坑:
问题一:
有些公共的组件抽出来其他模块的maven依赖,此时要在使用的项目中加载此jar包的spring component以及feign组件,仅仅依靠@ComponentScan是不够的,还需要在@EnableFeignClients(basePackages = {"com.xixicat"})中标注basekPackages。
问题二:
使用@FeignClient注解,要求name不重复,否则Bean会被覆盖,或者无法启动。这是Feign的一个缺点吧。
推荐修复方案:
其他修复方案(手动初始化Feign代理的类):
SpringCloud使用Config作为配置中心
一、介绍
服务端:配置中心
客户端:接受配置的应用
二、配置
1、Server端配置
A、pom
B、yml
C、Application
全部配置好后,启动应用,访问 http://localhost:9000/admin/dev (http://localhost:9000/admin-dev.json,http://localhost:9000/admin-dev.properties)

注:配置文件的访问规则如下:
有一点值得注意的是,如果有两个前缀名相同文件,例如一个order.yml,一个order-dev.yml。那么在访问相同前缀的文件时,config-server会对这两个文件进行一个合并。例如order.yml有一段配置是order-dev.yml没有的,理应访问order-dev.yml的时候是没有那段配置的,但访问的结果却是它俩合并之后的内容,即order-dev.yml会拥有order.yml里所配置的内容。
2、Client端配置
A、pom
B、yml
bootstrap.yml
application.yml
C、Application
D、Controller
三、踩坑
Last updated