- 博客(932)
- 资源 (51)
- 收藏
- 关注
原创 分布式锁的最佳实践之Redisson
本文接讲解Redisson在分布式锁的应用实践。Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。
2024-07-18 15:04:46
336
原创 从库存超卖问题分析锁和分布式锁的应用(二)
本文从一个经典的库存超卖问题分析说明常见锁的应用,假设库存资源存储在Redis里面。此时方法操作是先读后写,非原子性操作,是存在并发问题的。JVM本地锁的实现与优缺点在已经分析过了,这里不再赘述。
2024-07-15 16:02:44
209
原创 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
1139
原创 SpringCloud Alibaba Sentinel 授权规则实践总结
很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。调用方信息通过 ContextUtil.enter(resourceName, origin) 方法中的 origin 参数传入。规则配置resource:资源名,即限流规则的作用对象。
2024-07-05 17:52:01
434
原创 分布式链路追踪Micrometer Tracing和ZipKin基础入门与实践
在分布式与微服务场景下,我们需要解决如下问题:在大规模分布式与微服务集群下,如何实时观测系统的整体调用链路情况。在大规模分布式与微服务集群下,如何快速发现并定位到问题。在大规模分布式与微服务集群下,如何尽可能精确的判断故障对系统的影响范围与影响程度。在大规模分布式与微服务集群下,如何尽可能精确的梳理出服务之间的依赖关系,并判断出服务之间的依赖关系是否合理。在大规模分布式与微服务集群下,如何尽可能精确的分析整个系统调用链路的性能与瓶颈点。
2024-07-02 14:16:44
643
原创 Resilience4j之RateLimiter和常见限流算法总结
Resilience4j提供了一个限流器,它将从epoch开始的所有纳秒划分为多个周期。每个周期的持续时间RateLimiterConfig.limitRefreshPeriod。在每个周期开始时,限流器将活动权限数设置为RateLimiterConfig.limitForPeriod。期间, 对于限流器的调用者,它看起来确实是这样的,但是对于AtomicRateLimiter实现,如果RateLimiter未被经常使用,则会在后台进行一些优化,这些优化将跳过此刷新。
2024-07-02 12:26:51
907
原创 Resilience4j中bulkhead使用实践总结
在各种线程模型和I/O模型中都能很好地工作。它是基于信号量的,与Hystrix不同的是,它不提供“shadow”线程池选项。确保线程池大小正确且与断路器配置一致的责任在于客户端。简而言之,Resilience4j通过两种不同的方法实施了断路器模式以限制并发执行数量:一种是基于信号量的,适用于多种线程和I/O模型;另一种是,利用有界队列和固定线程池。与Hystrix相比,没有提供额外的线程池选项,因此,用户需要自行确保其线程池设置与断路器配置相匹配。
2024-07-01 17:53:00
510
原创 Spring Cloud Circuit Breaker基础入门与服务熔断
当一个组件或服务出现故障时,CircuitBreaker会迅速切换到开放OPEN状态(保险丝跳闸断电),阻止请求发送到该组件或服务从而避免更多的请求发送到该组件或服务。同时,CircuitBreaker还可以提高系统的可用性和健壮性,因为它可以在分布式系统的各个组件之间自动切换,从而避免单点故障的问题。断路器有三个普通状态:关闭(CLOSED)、开启(OPEN)、半开(HALF OPEN),还有两个特殊状态:禁用(DISABLED)、强制开启(FORCED OPEN)。
2024-07-01 16:35:14
715
原创 Spring Cloud OpenFeign基础入门与使用实践总结
OpenFeign是一个声明性web服务客户端。它使编写web服务客户端变得更容易。使用OpenFeign创建一个接口并对其进行注释。它具有可插入的注释支持,包括OpenFeign注释和JAX-RS注释。OpenFeign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,以及对使用Spring Web中默认使用的HttpMessageConverter的支持。
2024-06-28 15:50:38
425
原创 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
630
原创 Spring Cloud Consul作为配置中心实践
Consul 提供了一个键/值存储用于保存配置和其他元数据。Spring Cloud Consul Config 是 Spring Cloud Config Server和Client的一个替代方案。配置信息在特殊的“bootstrap”阶段被加载到 Spring Environment 中。配置默认存储在 /config 文件夹下。
2024-06-27 16:09:30
626
原创 SpringCloud Alibaba Seata2.0分布式事务AT模式实践总结
这里我们划分订单、库存与支付三个module来实践Seata的分布式事务。
2024-06-26 12:32:45
752
原创 SpringCloud Alibaba Seata2.0基础入门与安装
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源。业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
2024-06-24 17:18:57
469
原创 SpringCloud Alibaba Sentinel规则持久化实践总结
默认情况下,一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化。这里我们实践将Sentinel持久化到Nacos中。
2024-06-24 15:40:11
368
原创 SpringCloud Alibaba Sentinel中@SentinelResource使用实践总结
Sentinel 提供了 @SentinelResource 注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。注意:注解方式埋点不支持 private 方法。
2024-06-20 17:51:26
363
原创 SpringCloud Alibaba Sentinel 热点参数限流和系统保护规则
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。热点参数限流支持集群模式。
2024-06-20 15:49:17
538
原创 SpringCloud Alibaba Sentinel 熔断降级实践总结
除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。
2024-06-20 10:29:19
939
原创 SpringCloud Alibaba Sentinel 流量控制之流控效果实践总结
当 QPS 超过某个阈值的时候,则采取措施进行流量控制。流量控制的效果包括以下几种:直接拒绝、Warm Up、匀速排队。对应 FlowRule 中的 controlBehavior 字段。注意:若使用除了直接拒绝之外的流量控制效果,则调用关系限流策略(strategy)会被忽略。
2024-06-20 09:36:33
285
原创 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
596
原创 SpringCloud Alibaba Sentinel基础入门与安装
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
2024-06-19 10:52:57
565
原创 Spring Cloud Alibaba Nacos持久化配置
所谓的持久化就是将Nacos配置持久化存储到数据库里面,在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力。
2024-06-17 17:43:18
301
原创 Spring Cloud Alibaba Nacos作为服务配置中心实践
Spring Cloud Alibaba Nacos作为服务配置中心实践。
2024-06-14 12:07:23
171
原创 Spring Cloud Alibaba Nacos基础入门与安装
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
2024-06-13 17:02:27
913
原创 Spring Cloud Stream 消息驱动基础入门与实践总结
官方定义 Spring Cloud Stream 是一个构建消息驱动微服务的框架。为一些供应商的消息中间件产品提供了个性化的自动化配置实现,引用了发布-订阅、消费组、分区的三个核心概念。简单来讲,就是屏蔽了底层XXMQ,应用层不用关注底层是RabbitMQ还是Kafka。类似于Spring Data抽离持久层屏蔽底层各种数据库的概念。应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream中binder对象交互。
2024-06-13 10:07:28
472
原创 Spring Cloud Bus 消息总线基础入门与实践总结
Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知,然后去更新自身的配置。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道。
2024-06-12 17:08:35
424
原创 Java里强引用、软引用、弱引用、幻引用区别总结
在Java中,引用类型决定了对象的生命周期以及垃圾收集器如何处理这些对象。这里有四种引用类型:强引用、软引用、弱引用和幻象引用(也称虚引用)。这四种引用类型提供了不同程度的控制,使得开发人员能够更精细地管理对象的生命周期和内存使用。
2024-06-12 10:44:53
1007
原创 SpringCloud Gateway中Filters详细说明
前面我们研究了GateWay中各种路由断言的使用。SpringCloud GateWay 还提供了各种过滤器用来对请求和响应进行处理。
2024-06-06 16:25:19
440
原创 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
644
原创 SpringCloud Gateway基础入门与使用实践总结
SpringCloud Gateway 是 Spring Cloud 的一个全新项目,基于 Spring 5.0+Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
2024-06-05 16:42:47
1569
原创 SpringCloud Hystrix服务熔断实例总结
服务熔断是一种自动化的故障隔离机制,用于快速响应故障服务调用,防止调用者线程池被耗尽。服务降级是根据系统状态动态调整服务级别的一种策略,用于在资源受限时提供基础服务,避免系统过载。服务降级每次都会先调用原服务方法,调用失败才会执行服务降级方法;服务熔断状态会直接调用服务降级方法。在实践中,两者常常结合使用,以构建更具弹性和健壮性的分布式系统。Hystrix作为一个容错库,提供了这些机制的实现,允许开发者在微服务架构中更好地控制故障处理和资源管理。
2024-06-05 11:23:39
686
原创 SpringCloud Consul基础入门与注册中心使用实践总结
提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。
2024-06-03 13:35:45
236
2
原创 Flask应用基础入门总结
如下所示这里会生成850b7054a4f6_.py,其实也就是数据模型(数据库表)迁移脚本。这时查看数据库只有一个表alembic_verison,并且是空的。执行迁移脚本,创建数据表并设置版本号。
2023-12-07 15:51:55
882
原创 Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结
Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0CPU版本总结
2023-11-11 20:46:09
2621
原创 使用Gradle创建SpringBoot项目
Spring Boot Gradle 插件在Gradle 提供Spring Boot 支持。它允许您打包可执行jar 或war 归档文件,运行SpringBoot 应用程序,并使用Spring-Boot-dependencies 提供的依赖管理。
2023-11-05 15:44:44
1623
DubboOPS项目和管理后台jar包
2018-11-07
Struts2Spring4Hibernate4整合
2018-11-07
输入一段英文,去掉符号后将英文单词排序输出
2021-12-23
PHP课程设计图书管理系统、学生成绩管理系统、学生宿舍管理系统
2020-11-27
SpringBoot+thymeleaf+UEditor+不修改上传路径.zip
2020-02-04
jdk6-8String类
2019-11-20
dhcp+c3p0.zip
2019-10-27
Netty权威指南 第2版 带书签目录 高清完整版.pdf
2018-11-20
SpringBoot整合Dubbo和Zookeeper升级版
2018-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人