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<List<Item>> 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依赖, 和连接信息

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud是一个用于构建分布式系统的开发工具集合。它提供了一些常用的组件和框架,包括服务注册和发现、负载均衡、断路器、分布式配置等等。在使用Spring Cloud时,有一些常见的错误和注意事项需要注意。 首先,关于Spring Boot和Spring Cloud版本对应错误。在使用Spring Cloud时,需要确保Spring Boot和Spring Cloud的版本兼容。不同版本之间可能存在依赖冲突或不兼容的情况,因此需要根据官方文档或者相关文档来选择合适的版本。 另外,Spring Cloud Config是一个用于集中管理和动态获取配置的工具。它支持从Git、SVN或本地文件系统中获取配置文件,并提供了服务器和客户端支持。你可以通过官方使用说明文档了解更多关于Spring Cloud Config的详细信息。 此外,关于选择使用Nacos还是Eureka作为服务注册和发现组件的问题。Nacos是一个功能更强大的服务注册和发现组件,它整合了Spring Cloud Eureka、Spring Cloud Config和Spring Cloud Bus的功能。使用Nacos可以实现配置的中心动态刷新,而不需要为配置中心新增集群或使用消息队列。另一方面,Eureka是Spring Cloud原生全家桶的一部分,相对来说更加稳定一些。选择使用哪个组件需要根据具体的需求和项目特点来决定。 综上所述,Spring Cloud是一个用于构建分布式系统的开发工具集合,它提供了一些常用的组件和框架。在使用Spring Cloud时,需要注意Spring Boot和Spring Cloud版本的兼容性,并可以使用Spring Cloud Config来动态获取配置。同时,可以选择使用Nacos或Eureka作为服务注册和发现组件,具体选择需要根据项目需求来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值