SpringCloud
文章平均质量分 88
SpringCloud相关特性与版本更新可以参阅官网文档:https://www.springcloud.io/post/
流烟默
这个作者很懒,什么都没留下…
展开
-
SpringBoot整合SpringCloud基础实践入门
【1】什么是Spring CloudSpring Cloud是一个分布式的整体解决方案。Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全局琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。Spr...原创 2018-07-11 17:27:28 · 7095 阅读 · 7 评论 -
SpringCloud Alibaba Sentinel网关流量控制实践总结
Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。GatewayFlowRule:网关限流规则,针对 API Gateway 的场景定制的限流规则,可以针对不同 route 或自定义的 API 分组进行限流,支持针对请求中的参数、Header、来源 IP 等进行定制化的限流。ApiDefinition:用户自定义的 API 定义分组,可以看做是一些 URL 匹配的组合。原创 2024-07-08 10:18:59 · 1198 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel 授权规则实践总结
很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。调用方信息通过 ContextUtil.enter(resourceName, origin) 方法中的 origin 参数传入。规则配置resource:资源名,即限流规则的作用对象。原创 2024-07-05 17:52:01 · 490 阅读 · 0 评论 -
分布式链路追踪Micrometer Tracing和ZipKin基础入门与实践
在分布式与微服务场景下,我们需要解决如下问题:在大规模分布式与微服务集群下,如何实时观测系统的整体调用链路情况。在大规模分布式与微服务集群下,如何快速发现并定位到问题。在大规模分布式与微服务集群下,如何尽可能精确的判断故障对系统的影响范围与影响程度。在大规模分布式与微服务集群下,如何尽可能精确的梳理出服务之间的依赖关系,并判断出服务之间的依赖关系是否合理。在大规模分布式与微服务集群下,如何尽可能精确的分析整个系统调用链路的性能与瓶颈点。原创 2024-07-02 14:16:44 · 858 阅读 · 0 评论 -
Resilience4j之RateLimiter和常见限流算法总结
Resilience4j提供了一个限流器,它将从epoch开始的所有纳秒划分为多个周期。每个周期的持续时间RateLimiterConfig.limitRefreshPeriod。在每个周期开始时,限流器将活动权限数设置为RateLimiterConfig.limitForPeriod。期间, 对于限流器的调用者,它看起来确实是这样的,但是对于AtomicRateLimiter实现,如果RateLimiter未被经常使用,则会在后台进行一些优化,这些优化将跳过此刷新。原创 2024-07-02 12:26:51 · 1101 阅读 · 0 评论 -
Resilience4j中bulkhead使用实践总结
在各种线程模型和I/O模型中都能很好地工作。它是基于信号量的,与Hystrix不同的是,它不提供“shadow”线程池选项。确保线程池大小正确且与断路器配置一致的责任在于客户端。简而言之,Resilience4j通过两种不同的方法实施了断路器模式以限制并发执行数量:一种是基于信号量的,适用于多种线程和I/O模型;另一种是,利用有界队列和固定线程池。与Hystrix相比,没有提供额外的线程池选项,因此,用户需要自行确保其线程池设置与断路器配置相匹配。原创 2024-07-01 17:53:00 · 633 阅读 · 0 评论 -
Spring Cloud Circuit Breaker基础入门与服务熔断
当一个组件或服务出现故障时,CircuitBreaker会迅速切换到开放OPEN状态(保险丝跳闸断电),阻止请求发送到该组件或服务从而避免更多的请求发送到该组件或服务。同时,CircuitBreaker还可以提高系统的可用性和健壮性,因为它可以在分布式系统的各个组件之间自动切换,从而避免单点故障的问题。断路器有三个普通状态:关闭(CLOSED)、开启(OPEN)、半开(HALF OPEN),还有两个特殊状态:禁用(DISABLED)、强制开启(FORCED OPEN)。原创 2024-07-01 16:35:14 · 824 阅读 · 0 评论 -
Spring Cloud OpenFeign基础入门与使用实践总结
OpenFeign是一个声明性web服务客户端。它使编写web服务客户端变得更容易。使用OpenFeign创建一个接口并对其进行注释。它具有可插入的注释支持,包括OpenFeign注释和JAX-RS注释。OpenFeign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,以及对使用Spring Web中默认使用的HttpMessageConverter的支持。原创 2024-06-28 15:50:38 · 493 阅读 · 0 评论 -
Spring Cloud LoadBalancer基础入门与应用实践
Spring Cloud LoadBalancer是由SpringCloud官方提供的一个开源的、简单易用的客户端负载均衡器,它包含在SpringCloud-commons中用它来替换了以前的Ribbon组件。相比较于Ribbon,SpringCloud LoadBalancer不仅能够支持RestTemplate,还支持WebClient(WeClient是Spring Web Flux中提供的功能,可以实现响应式异步请求)LB负载均衡(Load Balance)是什么。原创 2024-06-28 10:44:28 · 689 阅读 · 0 评论 -
Spring Cloud Consul作为配置中心实践
Consul 提供了一个键/值存储用于保存配置和其他元数据。Spring Cloud Consul Config 是 Spring Cloud Config Server和Client的一个替代方案。配置信息在特殊的“bootstrap”阶段被加载到 Spring Environment 中。配置默认存储在 /config 文件夹下。原创 2024-06-27 16:09:30 · 688 阅读 · 0 评论 -
SpringCloud Alibaba Seata2.0分布式事务AT模式实践总结
这里我们划分订单、库存与支付三个module来实践Seata的分布式事务。原创 2024-06-26 12:32:45 · 816 阅读 · 0 评论 -
SpringCloud Alibaba Seata2.0基础入门与安装
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源。业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。原创 2024-06-24 17:18:57 · 801 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel规则持久化实践总结
默认情况下,一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化。这里我们实践将Sentinel持久化到Nacos中。原创 2024-06-24 15:40:11 · 403 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel中@SentinelResource使用实践总结
Sentinel 提供了 @SentinelResource 注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。注意:注解方式埋点不支持 private 方法。原创 2024-06-20 17:51:26 · 441 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel 热点参数限流和系统保护规则
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。热点参数限流支持集群模式。原创 2024-06-20 15:49:17 · 575 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel 熔断降级实践总结
除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。原创 2024-06-20 10:29:19 · 974 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel 流量控制之流控效果实践总结
当 QPS 超过某个阈值的时候,则采取措施进行流量控制。流量控制的效果包括以下几种:直接拒绝、Warm Up、匀速排队。对应 FlowRule 中的 controlBehavior 字段。注意:若使用除了直接拒绝之外的流量控制效果,则调用关系限流策略(strategy)会被忽略。原创 2024-06-20 09:36:33 · 320 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel 流量控制之流控模式实践总结
举例来说,read_db 和 write_db 这两个资源分别代表数据库读写,我们可以给 read_db 设置限流规则来达到写优先的目的:设置 FlowRule.strategy 为 RuleConstant.RELATE 同时设置 FlowRule.ref_identity 为 write_db。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写得速度,写的速度过高会影响读的速度。然后同时请求资源A、资源B,使B达到阈值,此时A也会返回错误信息。如下,我们给资源B设置规则:QPS/1。原创 2024-06-19 15:26:04 · 666 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel基础入门与安装
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。原创 2024-06-19 10:52:57 · 601 阅读 · 0 评论 -
Spring Cloud Alibaba Nacos持久化配置
所谓的持久化就是将Nacos配置持久化存储到数据库里面,在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力。原创 2024-06-17 17:43:18 · 331 阅读 · 0 评论 -
Spring Cloud Alibaba Nacos作为服务配置中心实践
Spring Cloud Alibaba Nacos作为服务配置中心实践。原创 2024-06-14 12:07:23 · 191 阅读 · 0 评论 -
Spring Cloud Alibaba Nacos作为服务注册中心实践
本文总结Nacos作为注册中心的应用实践。原创 2024-06-14 09:40:35 · 317 阅读 · 0 评论 -
Spring Cloud Alibaba Nacos基础入门与安装
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。原创 2024-06-13 17:02:27 · 959 阅读 · 0 评论 -
Spring Cloud Stream 消息驱动基础入门与实践总结
官方定义 Spring Cloud Stream 是一个构建消息驱动微服务的框架。为一些供应商的消息中间件产品提供了个性化的自动化配置实现,引用了发布-订阅、消费组、分区的三个核心概念。简单来讲,就是屏蔽了底层XXMQ,应用层不用关注底层是RabbitMQ还是Kafka。类似于Spring Data抽离持久层屏蔽底层各种数据库的概念。应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream中binder对象交互。原创 2024-06-13 10:07:28 · 525 阅读 · 0 评论 -
Spring Cloud Bus 消息总线基础入门与实践总结
Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知,然后去更新自身的配置。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道。原创 2024-06-12 17:08:35 · 477 阅读 · 0 评论 -
SpringCloud Gateway中Filters详细说明
前面我们研究了GateWay中各种路由断言的使用。SpringCloud GateWay 还提供了各种过滤器用来对请求和响应进行处理。原创 2024-06-06 16:25:19 · 582 阅读 · 0 评论 -
SpringCloud Gateway中Route Predicate Factories详细说明
Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 Predicate 对象,Predicate 对象可以赋值给 Route。Spring Cloud Gateway 包含许多内置的Route Predicate Factories。Spring Cloud Gateway包括许多内置的Route Predicate工厂。所有这些Predicate都与HTTP请求的不同属性匹配。多个Route Predicate工厂可以进行组合。原创 2024-06-06 11:10:53 · 693 阅读 · 0 评论 -
SpringCloud Gateway基础入门与使用实践总结
SpringCloud Gateway 是 Spring Cloud 的一个全新项目,基于 Spring 5.0+Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。原创 2024-06-05 16:42:47 · 1604 阅读 · 0 评论 -
SpringCloud Hystrix服务熔断实例总结
服务熔断是一种自动化的故障隔离机制,用于快速响应故障服务调用,防止调用者线程池被耗尽。服务降级是根据系统状态动态调整服务级别的一种策略,用于在资源受限时提供基础服务,避免系统过载。服务降级每次都会先调用原服务方法,调用失败才会执行服务降级方法;服务熔断状态会直接调用服务降级方法。在实践中,两者常常结合使用,以构建更具弹性和健壮性的分布式系统。Hystrix作为一个容错库,提供了这些机制的实现,允许开发者在微服务架构中更好地控制故障处理和资源管理。原创 2024-06-05 11:23:39 · 723 阅读 · 0 评论 -
SpringCloud Hystrix服务降级实例总结
本文采用版本为Hoxton.SR1系列,SpringCloud Hystrix服务降级实例总结原创 2019-01-16 17:28:18 · 452 阅读 · 2 评论 -
SpringCloud Consul基础入门与注册中心使用实践总结
提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。原创 2024-06-03 13:35:45 · 254 阅读 · 2 评论 -
SpringCloud的各个组件版本演进与替换
本文我们记录一下从SpringBoot1.X开始,SpringCloud的主要组件在项目使用中的替换。在SpringCloud的官网界面,我们可以看到SpringBoot和SpringCloud的版本对应关系。原创 2019-02-18 19:10:27 · 1126 阅读 · 1 评论 -
SpringCloud Gateway使用过滤器对IP和接口进行策略限制
背景:运维需要对项目某些接口进行IP策略限制。由于gateway在第一级,那么我们就使用GlobalFilter对接口贺IP策略进行限制。## 实现方案这里直接先展示实现方案:```java@Componentpublic class IPCheckFilter implements GlobalFilter, Ordered { private static final Logger LOGGER = LoggerFactory.getLogger(IPCheckFilter.cla原创 2017-02-20 10:37:22 · 4712 阅读 · 0 评论 -
SpringCloud Eureka的相关配置
eureka的属性配置主要有eureka.server、eureka.instance、以及eureka.client。分别对应EurekaServerConfigBean、EurekaInstanceConfigBean以及EurekaClientConfigBean三个配置类。【1】 eureka server的属性配置/*** Eureka server configuration properties prefix.*/public static final String PREFIX =原创 2021-06-18 15:41:12 · 1244 阅读 · 0 评论 -
Docker下部署微服务实践踩坑总结
【1】java.net.UnknownHostException① 问题背景与表现背景:docker启动应用服务注册到别处eureka(注意是别的服务器的eureka),启动命令格式类似如下:sudo docker run -d --name mallprovider -p 9122:9122 -v /home/app/fs:/root/fs -v /home/app/provider/server:/usr/local/server/ --privileged=true mallprovide原创 2020-08-05 17:20:41 · 3801 阅读 · 1 评论 -
SpringCloud - Eureka服务注册与发现核心概念
【1】是什么SpringCloud Eureka是SpringCloud Netflix服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。Netflix在设计Eureka时遵守的是AP原则。...原创 2018-07-18 16:34:20 · 1384 阅读 · 1 评论 -
SpringCloud - Eureka服务注册与发现实战(单节点与集群)
【1】项目基础首先创建四个工程 : microservicecloud,microservicecloud-api,microservicecloud-consumer-dept-80和microservicecloud-provider-dept-8001。其中microservicecloud作为父工程,其他三个功能均为父工程的Maven Module。microserviceclou...原创 2018-07-19 11:46:19 · 4646 阅读 · 6 评论 -
SpringCloud Feign基础入门与使用实践总结
Feign是一个声明式WebService客户端。使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和解码器。SpringCloud对Feign进行了封装,使其支持了SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Rib...原创 2018-07-25 11:01:26 · 5709 阅读 · 1 评论 -
SpringCloud Hystrix断路器-服务熔断与降级和HystrixDashboard
多为微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他微服务,这就是所谓的”扇处”。如果扇处的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃—所谓的”雪崩效应”。对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上面的所有资源在几秒钟内饱和。比失败更糟糕的是这些应用程序还可能导致服务之间的延迟...原创 2018-07-25 18:16:30 · 3294 阅读 · 2 评论 -
SpringCloud - 简单入门与项目概览
【1】SpringCloud是什么SpringCloud是基于SpringBoot的提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡和熔断器等组件。除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。SpringCloud利用SpringBoot 的开发便利性巧妙地简化了分布式系统基础设置的开发,SpringCloud为开发...原创 2018-07-15 17:55:42 · 1260 阅读 · 0 评论