目录
四、五、Hystrix dashboard 和 Turbine 都是监控工具(对业务,系统运行无影响)
六、 Feign 是集成的工具(集成远程调用和集成Ribbon)
spring cloud 介绍
1.spring cloud 是一系列框架的集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。
2.给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
3.使用 spring cloud 一站式解决方案能在从容应对业务发展的同时大大减少开发成本,在目前五花八门的分布式解决方案中提供了标准化的、一站式的技术方案
一、Eureka 注册中心:
要学会的四条运行机制:
1、注册:
- 一直反复注册直到成功
2、拉取:
- 30s拉取一次,刷新注册表
3、心跳:
- 30s一次心跳 (这三条对于一般注册中心来说,一般都会有这三条)(注册消息30s有效)
4、eureka存在自我保护模式:
在网络不稳定的时候,如果15分钟,85%的服务器出现心跳异常,就会自动进入自我保护模式,等网络恢复会自动退出我自我保护模式,恢复到正常模式。
二、Ribbon 负载均衡、请求重试
两个功能:
1、负载均衡(必须)
2、重试(根据需要):
- 一般不单独使用 Ribbon,而是在 Feign 或 Zuul 当中集成 Ribbon
三、Hystrix 容错和限流工具
容错:
容错通过降级的方式来实现:
- 降级:当调用后台服务失败,不能返回正常的结果 ,就执行降级代码,通过降级代码来返回降级的结果。
熔断:
- 熔断是因为流量太大,当流量增大,大量的访问,都去调用后台的服务,造成后台服务的故障,只要达到这个条件(10秒20次请求,50%失败),就会断开连接(通过Hystrix断路器实现),这样后续的访问会直接在前面模块执行降级,直接返回降级结果,不再调用后台服务,这种现象的请求称之为短路请求。从而限制后台服务的流量,减轻压力,等什么时候恢复正常了,会在半开状态下尝试发送一次客户端调用,(这一次的发送不一定能否接收到),如果能发过去了,断路器就会关闭,恢复正常;如果还是发不过去,断路器会继续保持打开状态,继续半开状态,等30s(时间可设定)再次访问,以此类推。
四、五、Hystrix dashboard 和 Turbine 都是监控工具(对业务,系统运行无影响)
1、Hystrix dashboard 是仪表盘:
- 提供一个图表,直接可以在图表界面上,来看哪个地方出现故障(哪有降级的情况,哪有因为压力过大出现熔断的情况),通过仪表盘可以直观的看到
2、Turbine 是聚合监控:
- 可以聚合多台服务器的数据,可以把很多台服务器的数据聚合起来,交给仪表盘
六、 Feign 是集成的工具(集成远程调用和集成Ribbon)
1、集成远程调用:
- 提供了声明式的客户端接口,从而使集成远程调用更简单(只需定义接口和抽象方法即可,通过注解来配置调用后台的哪个服务哪个路径,提交什么参数)
2、集成Ribbon:
- 没有配置,默认就已经启用了Ribbon 的负载均衡和重试(且有默认的重试参数,是0和1,单台服务器不重试,更换服务器是更换一次)
七、Zuul API 网关
提供了四个功能:
1.作为统一的一个调用入口 :
- 如果只当做一个入口来使用,配置很简单:只需要配置一个路由规则即可
2.统一的权限校验:
- Zuul提供了一个过滤器 Zuul filter,通过继承ZuulFilter父类,实现一个过滤器子类,在过滤器中就可以去判断用户的权限,有权限,就继续向后台服务器转发,没有权限,直接返回结果。过滤器也可以集成其他的安全框架Spring Security,oauth2。
3.也可以集成Ribbon:
- 默认启动了负载均衡(必须),默认不启用重试,重试一般往后放,Zuul 一般在前面
4.集成Hystrix:
- 默认启用Hystrix,直接开始写降级代码即可(写降级:实现FallbackProvider接口,然后返回降级结果)
八、Config 配置中心
需要的几条配置:
1.连接git仓库:
- 指定git仓库的地址,和仓库里存放配置文件的文件夹,启动类加一个注解@EnableConfigServer
2.向eureka注册一下
九、Bus 消息总线(来做配置刷新用的)
1、功能:
- 通过Bus,可以输发刷新指令的消息
2、流程:
- 各个模块加上Bus,
- 从09config-server 发一条消息到RabbitMQ,然后234 item、user、order来接收消息,收到消息之后,就开始重新连接配置中心,刷新自己的配置
十、Sleuth+Zipkin 链路跟踪
Sleuth 用来产生日志,产生日志后,把日志发送到 Zipkin 服务器 分析处理,向Zipkin服务器发送是用的RabbitMQ中转发送,产生的日志先发送给消息服务,Zipkin从消息服务来接收,这样来实现。