
Spring Cloud
文章平均质量分 88
Spring Cloud 学习笔记
红枫忆梦
书到用时方恨少
展开
-
Spring Cloud(二十六):SpringCloud Alibaba Seata处理分布式事务
1. 分布式事务问题1.1 分布式前单机单库没这个问题从1:1 -> 1:N -> N: N1.2 分布式之后单体应用被拆分微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成,此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证:用户购买商品的业务逻辑,整个业务逻辑由三个微服务提供支持:仓储服务:对卖的商品扣除仓储数量订单服务:根据采购需求创建订单账户服务:从用户账户中扣除余额1.3 一个典型的原创 2021-04-11 07:32:25 · 341 阅读 · 0 评论 -
Spring Cloud(二十五):Sentinel热点key限流+@SentinelResource
1. 基本介绍官网https://github.com/alibaba/Sentinel/wiki/热点参数限流2. @SentinelResource兜底方法分为系统默认和客户自定义,两种之前的case,限流出问题后,都是用sentinel系统默认的提示使用@SentinelResource,自定义降级方法代码controller 添加方法@GetMapping("/testHotKey")@SentinelResource(value = "testHotKey", blockH原创 2021-04-11 07:31:17 · 574 阅读 · 0 评论 -
Spring Cloud(二十四):Sentinel降级规则
1. 基本介绍RT(平均响应时间,秒级)平均响应时间超出阈值且在时间窗口内通过的请求>=5,两个条件同时满足后触发降级窗口期过后关闭断路器RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX设置)异常比例(秒级)QPS>=5且异常比例(秒级统计)超过阈值时,触发降级,窗口期结束,关闭降级异常数(分钟级)异常数(分钟统计)超过阈值时,触发降级,窗口期结束,关闭降级Sentinel熔断降级会在调用链路中的某个资源原创 2021-04-10 14:51:36 · 280 阅读 · 0 评论 -
Spring Cloud(二十三):Sentinel流控规则
1. 概述官网:https://github.com/alibaba/Sentinel中文:https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D下载:https://github.com/alibaba/Sentinel/releases能干嘛使用https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.ht原创 2021-04-10 11:42:13 · 310 阅读 · 0 评论 -
Spring Cloud(二十二):Nacos集群和持久化配置
1. 官网说明1.1 官网https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html1.2 架构图2. Nacos持久化配置解释Nacos默认自带的是嵌入式数据库derbyhttps://github.com/alibaba/nacos/blob/develop/config/pom.xml2.1 derby到mysql切换配置步骤nacos-server-1.1.4\nacos\conf目录下找到sql脚本执行脚本/**原创 2021-04-05 15:13:11 · 188 阅读 · 0 评论 -
Spring Cloud(二十一):SpringCloud Alibaba Nacos服务注册和配置中心
1. 简介原创 2021-04-05 10:38:22 · 180 阅读 · 0 评论 -
Spring Cloud(二十):SpringCloud Alibaba入门简介
1. 概述为什么会出现SpringCloud alibabaSpring Cloud Netflix项目进入维护模式https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-nowSpringCloud alibaba带来了什么?https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md下载https://github.原创 2021-04-04 16:45:55 · 373 阅读 · 0 评论 -
Spring Cloud(十九):Sleuth分布式请求链路追踪
1. 概述1.1 为什么会出现这个技术?需要解决哪些问题?在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会银企整个请求最后的失败。1.2 是什么https://github.com/spring-cloud/spring-cloud-sleuthSpring Cloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并原创 2021-04-04 16:02:08 · 189 阅读 · 0 评论 -
Spring Cloud(十八):Stream消息驱动
1. 概述官方定义Spring Cloud Stream 是一个构件消息驱动微服务的框架。应用程序通过inputs或者outputs来与Spring Cloud Stream中的binder对象交互,通过我们配置来binding(绑定),二Spring Cloud Stream的binder对象负责与消息中间件交互,所以,我们只需要搞清楚如何与Spring Cloud Stream 交互就可以方便使用消息驱动的方式。通过使用Spring integration来连接消息代理中间件以实现消息时间驱动.原创 2021-04-04 14:17:00 · 236 阅读 · 0 评论 -
Spring Cloud(十七):SpringCloud Bus 消息总线
1. 概述Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。Spring Cloud Bus 是来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。Spring Cloud Bus 目前支持RabbitMQ和Kafka。Spring Cloud Bus 能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当做微服务间的通信通道。什么是总线在微服务原创 2021-03-31 22:18:39 · 210 阅读 · 0 评论 -
Spring Cloud(十六):Config分布式配置中心
1. 概述1.1 分布式系统面临的配置问题微服务意味着要将单体应用的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。Spring Cloud 提供了ConfigServer来解决这个问题。1.2 是什么Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同的微服务应用的所有环境提供了一个中心化的外部配置。Spring Clo原创 2021-03-31 20:36:35 · 127 阅读 · 0 评论 -
Spring Cloud(十五):Gateway-Filter的使用
1. Filter1.1 是什么路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用。Spring Cloud Gateway内置了多种过滤器,他们都由GatewayFilter的工厂类来产生。1.2 Spring Cloud Gateway的Filter生命周期在业务逻辑之前:pre在业务逻辑之后:post种类GatewayFilter:单一GlobalFilter:全局2. 常用的GatewayFilterAddRequestParame原创 2021-03-25 22:39:43 · 386 阅读 · 0 评论 -
Spring Cloud(十四):Gateway-Predicate的使用
1. Predicate的使用Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。Spring Cloud Gateway包括许多内置的Route Predicate工厂。所有这些Predicate都与HTTP请求的不同属性匹配。多个RoutePredicate厂可以进行组合Spring Cloud Gateway创建Route对象时,使用RoutePredicateFactory创建Predicate对象,Predicat原创 2021-03-25 07:28:13 · 684 阅读 · 0 评论 -
Spring Cloud(十三):Gateway+demo
1. 概述简介官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/2. 是什么Gateway 是在Spring生态系统之上,基于Spring5,Spring Boot2 和Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等。Spring Cloud G原创 2021-03-24 07:35:44 · 2544 阅读 · 0 评论 -
Spring Cloud(十二):服务监控hystrixDashboard
1. 概述除了隔离依赖服务的调用之外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续的记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等,Netflix通过 Hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud 也提供了Hystrix Dashboard 的整合,对监控内容转化成可视化界面。2. 实战2.1 建 modul原创 2021-03-21 19:36:27 · 161 阅读 · 0 评论 -
Spring Cloud(十一):Hystrix服务熔断-工作流程
1. Hystrix服务熔断1.1 断路器类似保险丝1.2 熔断是什么熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的相应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。在Spring Cloud框架里,熔断机制通过Hystrix实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制,熔断机制的注解是@Hystrix原创 2021-03-21 16:17:03 · 612 阅读 · 0 评论 -
Spring Cloud(十):Hystrix服务降级
1. 降低配置@HystrixCommand8001先从自身找问题:设置自身调用超时时间的峰值,峰值内可以正常运行,超过了需要有兜底的方法处理,作服务降级fallback1.1 8001fallback@HystrixCommand报异常后如何处理一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbackMethod调用类中的指定方法上图故意制造异常接收3秒钟 ,运行5秒钟,超时异常当前服务不可用了(超时异常,运行异常),做服务降级,默认的兜原创 2021-03-21 09:22:16 · 169 阅读 · 0 评论 -
Spring Cloud(九):Hystrix案例-Jmeter测试高并发访问
1. Hystrix 案例注册中心使用单机版。1.1 新建模块新建 cloud-provider-hystrix-payment8001 模块1.2 POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs原创 2021-03-20 18:05:54 · 235 阅读 · 0 评论 -
Spring Cloud(八):Hystrix断路器
1. 概述分布式系统面临的问题:负载分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的的失败。服务雪崩:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒中内饱和,比失败更糟糕的是,这些原创 2021-03-20 10:00:32 · 122 阅读 · 0 评论 -
Spring Cloud(七):OpenFeign服务接口调用
1. 概述Feign是一个声明式WebService客户端。使用Feign可以让编写WebService客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring Mvc标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。源码地址:https://github.com/spring-cloud/spring-clou原创 2021-03-18 22:11:35 · 257 阅读 · 0 评论 -
Spring Cloud(六):Ribbon负载均衡服务调用
1. 概述Spring Cloud Ribbon 是基于Netflix Ribbon实现的一套客户端 负载均衡工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如 连接超时、重试等。简单地说,就是在配置文件中列出Load Balance (简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们很容易使用Ribbon实现自定义的负载均衡算法。官网资料原创 2021-03-16 22:18:32 · 197 阅读 · 1 评论 -
Spring Cloud(五):Consul服务注册与发现
1. Consul简介Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司使用Go语言开发。提供了微服务系统中的服务治理、配置中心、控制总线等功能,这些功能每一个都可以根据需要单独使用,也可以一起使用构建全方位的服务网络,总之,Consul提供了一种完整的服务网格解决方案。具有很多优点:包括:基于raft协议,比较简洁。支持健康检查,同时支持HTTP和DNS协议 支持跨数据中心的WAN集群 提供图形界面,跨平台,支持windows、linux、mac。服务发现:提供HTT原创 2021-03-14 11:58:42 · 448 阅读 · 0 评论 -
Spring Cloud(四):Zookeeper服务注册与发现
1. Zookeeper服务注册与发现1.1 使用docker安装zookeeperdocker安装教程请查看这篇博客:docker安装教程下载镜像docker pull zookeeper:3.4.9启动容器并添加映射:docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:3.4.9查看是否启动1.2 SpringCloud整合Zookeeper代替Eurek原创 2021-03-10 22:39:30 · 149 阅读 · 0 评论 -
Spring Cloud(三):集群 Eureka 构建
1. Eureka 集群构建1.1 Eureka 集群原理说明解决方案:搭建Eureka注册中心集群,实现负载均衡+故障容错1.2 建 Module新建 cloud-eureka-server70021.3 改pompom.xml<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId&原创 2021-03-08 07:06:52 · 206 阅读 · 4 评论 -
Spring Cloud(二):单机Eureka构建
1. Eureka 基础知识1.1 服务治理Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。在传统的 RPC 远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务的发现与注册。1.2 服务注册Eureka 采用了 CS 的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心,而系统中的其他微服务,使用 Eureka Clie原创 2021-03-04 22:26:13 · 145 阅读 · 1 评论 -
Spring Cloud(一):微服务架构构建
1. 环境约定 > 配置 > 编码spring cloud:Hoxton.SR1spring boot:2.2.2.RELEASEspring cloud Alibaba:2.1.0.RELEASEjdk:1.8maven:3.5及以上(阿里云仓库)mysql:5.7及以上2. Spring Cloud整体聚合父工程Project2.1 新建 Maven project2.2 聚合总工程名字和包名2.3 Maven版本选择2.4 idea 字符编码设置2.5原创 2021-03-02 21:15:35 · 231 阅读 · 0 评论 -
Spring+Cloud 微服务实战(一)--------基础知识
第一章 基础知识原创 2019-09-26 08:37:40 · 302 阅读 · 0 评论