微服务九大特性

出自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. 支持动态刷新配置

Spring Cloud(2.0)能力大致列表的更多相关文章

  1. Spring Cloud的子项目,大致可分成两类

    Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目:第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cl ...

  2. Spring Cloud 2020.0.0正式发布,再见了Netflix

    目录 ✍前言 版本约定 ✍正文 Spring Cloud版本管理 与Spring Boot版本对应关系 当前支持的版本 阻断式升级(不向下兼容) 1.再见了,Netflix Netflix组件替代方案 ...

  3. Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

    Spring Cloud 2020.0.0 没错,Spring Cloud 2020.0.0 正式发布了: 感谢Java技术栈群友通知,想入群的在公众号Java技术栈后台回复:wx,正在使用 Spri ...

  4. 最新最简洁Spring Cloud Oauth2.0 Jwt 的Security方式

    因为Spring Cloud 2020.0.0和Spring Boot2.4.1版本升级比较大,所以把我接入过程中的一些需要注意的地方告诉大家 我使用的版本是Spring boot 2.4.1+Spr ...

  5. Spring Cloud 2020.0.1 正式发布!真是头疼。。。

    上一篇:Spring Cloud 2020.0.0 正式发布,全新颠覆性版本! 号外!号外!号外! Spring Cloud 2020.0.0 在去年 12 月底,赶在一年的尾巴最后几天仓促发布了,时 ...

  6. Spring Cloud OAuth2.0 微服务中配置 Jwt Token 签名/验证

    关于 Jwt Token 的签名与安全性前面已经做了几篇介绍,在 IdentityServer4 中定义了 Jwt Token 与 Reference Token 两种验证方式(https://www ...

  7. Spring Cloud 2021.0.0 正式发布,第一个支持Spring Boot 2.6的版本!

    美国时间12月2日,Spring Cloud 正式发布了第一个支持 Spring Boot 2.6 的版本,版本号为:2021.0.0,codename 为 Jubilee. 在了解具体更新内容之前, ...

  8. Spring cloud oauth2.0 access_token 永不失效设置方法

    在AuthorizationServerConfigurerAdapter,重写一个TokenServices,注意这里的@Primary 非常重要,否则会有3个同类型的Bean,无法注入,会抛出以下 ...

  9. Spring Cloud Alibaba 2021.0.1.0 发布:版本号再也不迷糊了

    大家好,DD又来了! 3月9日,Spring官方博客发文:Spring Cloud Alibaba 2021.0.1.0发布了. 前段时间DD还在微信群里看到小伙伴吐槽Spring Cloud Ali ...

随机推荐

  1. 【selenium学习笔记一】python + selenium定位页面元素的办法。

    1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...

  2. 2017.10.7 QBXT 模拟赛

    题目链接 T1 容斥原理,根据奇偶性进行加减 #include<iostream> #include<cstdio> using namespace std; typedef ...

  3. python爬虫之路——基本文件操作

    介绍python如何打开文件和读取数据 新建TXT文档,为追加模式: f=open('c;/wendang/demo.txt','a+') content="abcdefg123456789 ...

  4. UVA 10891 Game of Sum (决策优化)

    这是一个零和博弈,最高得分只和序列以及谁先手有关. d[i][j],表示i到j的序列当前取的这个人的最高得分,转移以后状态是新的区间和另一个人取,从中取最小值. 决策的最小值也可递推. #includ ...

  5. noip模拟赛#38

    我打开了#39的problem...想了半个小时多发现我一道题都不会写...于是我打开了#38的problem T1:循环数字的定义为能够将该数划分为若干相同长度的段并且都相同. n=2e18. =& ...

  6. Spark Job调优(Part 1)

    原文链接:https://wongxingjun.github.io/2016/05/11/Spark-Job%E8%B0%83%E4%BC%98-Part-1/ Spark应用的执行效率是所有程序员 ...

  7. [学习笔记] C++ 历年试题解析(三)--小补充

    小小的补充一下吧,因为李老师又把直招的卷子发出来了.. 题目 1.有指针变量定义及初始化int *p=new int[10];执行delete [] p;操作将结束指针变量p的生命期.(×) 解释:试 ...

  8. Python-DDT实现接口自动化

    Get请求参数化例子 import unittest import requests import ddt @ddt.ddt class MyTestCase(unittest.TestCase): ...

  9. python-下拉框

    首先,从selenium.webdriver.support.ui里调用Select类,如下: 其次,找到下拉框元素,再找下拉框里要最终选择的元素,如下: 注意:调用Select类后,不必再加clic ...

  10. webgis技术在智慧城市综合治理网格化社会管理平台(综治平台)的应用

      网格化社会管理平台功能:1 实有人口管理人口数据管理按照人口分类进行管理,分为常住人口.流动人口.特殊人群.弱势群体,功能包括人口信息管理.归口负责.人房关联.统计汇总.地图监管服务等功能.人口信 ...