Spring Cloud(2.0)能力大致列表

微服务九大特性

出自Martin Fowler的《Microservices》

  1. 服务组件化
  2. 按业务组织团队
  3. 做“产品”的态度
  4. 智能端点与哑管道
  5. 去中心化治理
  6. 去中心化管理数据
  7. 基础设施自动化
  8. 容错设计
  9. 演进式设计

Spring Boot特性

  1. 支持main方法直接拉起嵌入式web容器
  2. 本地配置方式更友好,支持占位符 支持profile,支持启动参数覆盖等,支持自动配置
  3. 支持自动装配等

Eureka的特性

  1. 服务发现的server与client,即支持注册与发现能力。
  2. 高可用,可以两个(或以上)节点相互备份,通过eureka.client.serviceUrl.defaultZone配置其他两个节点的url。server既是server也是client。
  3. 通过注解启用注册中心server端能力 EnableEurekaServer
  4. 需要注册的provider端只要在classpath下放spring-cloud-starter-netflix-eureka-client相关依赖,那么provider就可以自动注册到eureka注册中心。当然了需要在配置文件中配置eureka服务的url地址,配置项的key是eureka.client.serviceUrl.defaultZone。
  5. server支持配置多长时间扫描一次失效服务
  6. client端支持配置多长时间给server发一次心跳,支持配置多长时间没有收到心跳就移除服务列表
  7. 注册与发现时支持密码鉴权
  8. 支持多注册中心分组

Ribbon特性

  1. 客户端负载均衡器,客户端自己维护要访问的服务端清单,比如来自于注册中心
  2. 提供spring-cloud-starter-netflix-ribbon artifact ID 用于引入ribbon
  3. 提供ribbon+RestTemplate的客户端负载均衡方式,那当然也提供了客户端。
  4. 用心跳去维护服务端清单的健康行,支持弹性失败
  5. 多种可插拔负载均衡规则: 轮询,随机,区域感知轮询,响应时间权重,具体参加com.netflix.loadbalancer.IRule的实现
  6. 支持ribbon.MaxAutoRetries 最大重试次数配置
  7. 支持配置是否所有操作都能重试
  8. 支持配置 刷新服务端列表的时间
  9. 支持配置读超时 与 连接超时 (针对HttpClient)
  10. 支持配置初始化的服务端列表
  11. 支持自定义RibbonClient
  12. 支持自定义负载均衡策略
    Netflix ribbon自己的wiki写的更清晰一些。

Hystrix特性

  1. 支持用spring-cloud-starter-netflix-hystrix 和 EnableCircuitBreaker 注解完成hystrix引入
  2. 支持指定fallBack时的方法,方法参数与服务方法参数相同(也就是支持参数传递)
  3. 支持 全局默认配置 动态全局配置 实例默认配置 实例动态配置 四个层次的配置覆盖能力
  4. 支持用execution.isolation.strategy配置隔离策略,支持线程(默认)和信号量方式的隔离
  5. 支持用execution.isolation.thread.timeoutInMilliseconds指定线程执行多长时间超时然后出发fallback,默认值1000ms
  6. 支持用execution.timeout.enabled配置是否需要启用线程执行超时机制,默认true
  7. 支持用execution.isolation.thread.interruptOnTimeout指定线程执行超时后是否终端,默认是true
  8. 支持用execution.isolation.thread.interruptOnCancel指定取消发生时是否要终端线程,默认false
  9. 支持用execution.isolation.semaphore.maxConcurrentRequests配置信号量模式下的最大并发请求数,默认10
  10. 支持fallback.isolation.semaphore.maxConcurrentRequests在信号量模式下callback最大并发请求数, 默认10
  11. 支持用fallback.enabled 指定是否启用fallback,默认true
  12. 支持用circuitBreaker.enabled 指定是否启用断路器 默认true
  13. 支持用circuitBreaker.requestVolumeThreshold配置 一个滑动窗口内 多少个请求失败后再启用断路器,默认是20
  14. 支持用circuitBreaker.sleepWindowInMilliseconds配置断路器被触发后生效多少时间,默认5s
  15. 支持用circuitBreaker.errorThresholdPercentage 配置失败百分比达到多少时启用断路器并触发fallback逻辑
  16. 支持用circuitBreaker.forceOpen配置在所有服务失败时是否强制开启断路器,默认是false
  17. 支持用metrics.rollingStats.timeInMilliseconds配置时间窗口时长(断路器要根据单位时间内的失败数量或者比率来决定是否启用),默认10s
  18. 支持用metrics.rollingStats.numBuckets设置桶的数量,默认是10
  19. 支持用requestCache.enabled配置是否启用缓存,在command有getCacheKey() 方法是默认启用此特性。 用@CacheResult注解配合@HystrixCommand注解可以开启缓存,默认是所有方法参数作为key,也可以通过cacheKeyMethod制定getkey方法,也可以使用@CacheKey注解加载服务方法的参数上作为缓存的key,用@CacheRemove注解关闭缓存。 可以参见这里
  20. 支持请求合并。 支持maxRequestsInBatch配置合并批次中的请求数。 支持timerDelayInMilliseconds配置延迟时间,默认10ms。
  21. 支持线程池相关属性配置。
    21.支持dashboard
    所有的详细配置可参见这里这里

Feign特性

  1. 支持用定义接口的方式替换了写代码实现远程client调用的代码
  2. 支持从请求header中拿参数作为调用远程服务的请求参数
  3. 支持用ribbon和hystrix实现负载均衡与服务降级
  4. 支持client的日志级别配置

Zuul特性

  1. 支持转发,支持转发路由规则配置
  2. 支持请求过滤,ZuulFilter,自带了多种实现
  3. 支持动态路由配置,需要配合spring cloud使用
  4. 支持动态过滤器,groovy脚本

config特性

  1. 可以对接git、svn、本地文件存储
  2. 支持高可用,用eureka或者config server都指向同一git仓库
  3. 支持配置项加密,支持密钥配置
  4. 支持动态刷新配置
原文地址:https://www.cnblogs.com/simoncook/p/9570527.html