Spring Cloud

是什么

        工具集, 框架集
        微服务全家桶
        微服务整套解决方案

不是什么

        不是单独的框架

1. eureka

注册中心

运行参数

        注册

                一次次反复尝试注册,直到注册成功

        拉取

                每30秒拉取一次注册表

        心跳

                每30秒发送一次心跳

                eureka连续3次收不到心跳, 就会删除该服务

        自我保护模式

                由于网络不稳定, 15分钟内85%服务器心跳异常

                保护所有的注册信息, 不删除

                网络稳定后, 可以自动退出保护模式, 恢复正常

                开发期间可以先关闭保护模式

eureka和zookeeper

eureka

        AP, 强调可用性

        集群 - 对等结构

zookeeper

        CP, 强调一致性

        集群 - 主从结构

2. ribbon

一般不直接使用Ribbon, 而是在Feign或Zuul中集成

负载均衡

        @LoadBalanced 对 RestTemplate 进行增强

        请求地址用 service-id: http://item-service/....

重试

        添加 spring-retry 依赖

        配置重试参数

                MaxAutoRetries 单台服务器重试次数

                MaxAutoRetriesNextServer 更换服务器的次数

                OkToRetryOnAllOperations 是否对所有类型请求都重试,默认只对GET重试

                ConnectTimeout 建立连接超时时间

                ReadTimeout 接收响应的超时时间

3. Hystrix

系统容错

限流

配置

        添加Hystrix依赖

        @EnableCircuitBreaker

降级

        快速失败

        @HystrixCommand(fallbackMethod="降级方法名")

        添加降级方法, 实现降级代码

熔断

        10秒20次请求 (必须首先满足)

        50%失败, 执行降级代码

        半开状态

                会尝试发送一次请求

                        成功, 自动关闭断路器, 恢复正常

                        失败, 断路器继续保持打开

4. Hystrix dashboard

监控工具

利用actuator

        暴露监控数据

                监控端点: hystrix.stream

对 hystrix.stream 进行监控

搭建配置

        Hystrix dashboard 依赖

        主程序注解 @EnableHystrixDashboard

5. Turbine

聚合监控数据

        把多台服务器的监控数据聚合起来, 提供给仪表盘, 同时监控

配置

        app-config: order-service, aaa, bbb, ccc

        cluster-name-expression: new String("default")

        @EnableTrubine

监控端点

        /turbine.stream

6. Feign

声明式客户端

@FeignClient(name="item-service")
public interface ItemFeignClient {
     @GetMapping("/{orderId}")
     JsonResult> getItems(@PathVariable String orderId)
}

集成 Ribbon

默认已经启用负载均衡和重试

        默认参数

  • MaxAutoRetries=0
    MaxAutoRetriesNextServer=1
    ReadTimeout=1000

集成 Hystrix (不推荐启用)

默认不启用Hystrix

Feign不推荐启用Hystrix (后面再进行分析)

配置启用Hystrix

        添加 Hystrix 完整依赖

        yml配置: feign.hystrix.enabled=true

        @EnableCircuitBreaker

        降级

                在声明式客户端接口上, 指定一个降级类 @FeignClient(name="item-service", fallbak=ItemFB.class)

                降级类必须实现"声明式客户端接口"

Hystrix dashboard

        首先有: actuator依赖, hystrix完整依赖, @EnableCircuitBreaker注解

        1. 暴露监控端点: hystrix.stream

        2. 重启09项目

        3. 访问后台服务, 产生监控数据

        4. 测试监控端点是否可访问, 是否有数据

        5. 在仪表盘中, 对监控端点进行监控

7. Zuul

API网关

        统一的调用入口

        @EnableZuulProxy

        只需要配置转发路由规则

zuul:
    routes:
        item-service: /item-service/**
        user-service: /user-service/**

        上面是默认规则

        默认规则可以根据eureka注册中心的注册表,进行自动配置 

统一的权限校验

        继承ZuulFilter父类

        在过滤器中,检查用户权限

集成Ribbon

        默认启用负载均衡

        默认不启用重试, 不推荐启用重试

                启用重试

                        添加spring-retry依赖

                        zuul.retryable=true

                        配置重试参数

集成Hystrix

默认启用Hystrix

降级

        实现FallbackProvider接口

用 actuator 暴露监控端点 hystrix.stream

8. Config配置中心(集中地管理和维护配置文件)

存储

        默认使用Git存储

                分支

                版本历史

                Tag

                ......

        本地存储

        数据库存储

配置

        Config Server依赖

        Git仓库连接信息

        @EnableConifigServer注解

Config客户端

        config client依赖

        bootstrap.yml

                从eureka获取配置中心服务器的地址

                指定下载的配置文件

9. Bus消息总线

同时刷新多台服务器的配置

向多台服务器群发刷新指令, 要求多台服务器同时刷新

配置

        添加 Bus 和 RabbitMQ 依赖

        添加 RabbityMQ 连接信息

        刷新端点

                在配置中心暴露 bus-refresh

        接收刷新指令

                其他服务接收刷新指令, 执行刷新操作

10. Sleuth+Zipkin(链路跟踪)

Sleuth

        产生监控数据

        只需要添加Sleuth依赖

Zipkin

        分析展现监控数据

        默认10%的监控数据发送到Zipkin

配置

        添加zipkin客户端依赖

        zipkin.sender.type=rabbit

        添加RabbitMQ依赖, 和连接信息

你可能感兴趣的:(spring,cloud,java,spring)