隔离和降级:虽然限流可以避免因高并发引起的服务故障,但服务还会因为其他原因而故障。而要将这些故障控制在一定范围,避免雪崩,就要靠线程隔离(船舱模式)和熔断降级手段了。不管时线程隔离还是熔断降级,都是对客户端(调用方)的保护。Feign整合sentinel:SpringCloud中,微服务调用都是通过Feign来实现的,因此做客户端保护必须整合Feign和Sentinel。1.修改需要做保护客户端x
延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时,异常等,Hystrix能保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。向调用方返回一个符合预期的,可处理的备选相应(fallBack),而不是长时间的等待或者抛出调用方法无法处理的异常,这样就保证了服务调用方的线程不会长时间,不必要的占用,从而避免了故障在分布式系统中的蔓延,乃至
转载 2024-09-04 11:46:26
32阅读
hytrix默认超时1秒,如下源码处
原创 2022-03-23 17:01:40
286阅读
SpringBoot整合Feign( 整合Ribbon和Hytrix)1.首先引入feign的maven依赖<!--feign客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifact...
原创 2021-11-19 10:45:54
423阅读
一.Spring事务特性事务(Transaction)是并发控制的单元,是用户定义的一组操作序列。从数据库角度,就是一组SQL指令,如果执行过程中没有错误,则全部执行成功;如果执行出现错误,则撤销执行过的所有指令。Spring事务管理功能是基于底层DBMS本身的事务处理机制实现。1.事务隔离级别  隔离级别是指若干个并发的事务之间的隔离程度。  ISOLATION_DEFAULT:默认值,使用数据
JDK 1.8Apache Dubbo 2.7.2和2.7.7ZK 3.5.9Apache dubbo-admin (master分支并把dubbo版本修改为2.7.2)代码地址 https://github.com/skx001/dubbo-samples-metrics   https://github.com/skx001/dubbo-admin  
转载 2024-04-26 08:39:22
0阅读
Spring Boot 自定义过滤器(Filter)Filter 过滤器主要是用来过滤用户请求的,它允许我们对用户请求进行前置处理和后置处理,比如实现 URL 级别的权限控制、过滤非法请求等等。Filter 过滤器是面向切面编程——AOP 的具体实现(AOP切面编程只是一种编程思想而已)。自定义 Filter 只需要实现 import javax.servlet.Filter 接口即可。Filte
转载 2024-06-11 21:37:08
145阅读
Redis 是一套 key-value 高性能数据库,使用它可以大大提高我们的开发效率,在SpringBoot中,自动配置也帮我们节约了大量的配置。 使用它只需要以下几步pom<dependency> <groupId>org.springframework.boot</groupId> <artifactI
转载 2024-06-20 17:04:43
208阅读
文章目录一、摘要二、基础知识介绍2.1 JDBC2.1.1 简单示例2.1.2 JDBC事务存在的问题:2.1.2 Spring事务解决该问题的方式2.2 AOP设计思想2.2.1 代理模式2.2.2 静态代理2.2.3 动态代理2.2.4 为什么使用AOP2.2.5 AOP会使用哪种代理2.2.6 AOP代码编写关键对象及AOP执行流程2.3 ThreadLocal实现原理2.4 Mysql存
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。2. 线程池的使
SpringBoot关于@Async线程配置我们在Spring项目的时候,会用到异步注解 @Async 注解,从 Spring原理之@Async 我们可以知道其实他底层用到的默认的所谓的线程池并不是真的线程池,每次调用都会创建一个新的线程,那么我们如何来修改这个默认的线程池或者说使用我们自定义的线程池呢?1、修改@Async默认线程池关于@Async的原理,可以查看 Spring原理之@Asyn
springboot隔离@Async异步任务的线程池1.代码实现:在​​#yyds干货盘点# springboot配置@Async异步任务的线程池​​基础代码上进行修改设置多个线程池@EnableAsync@Configurationpublic class TaskPoolConfig { @Bean public Executor taskExecutor1() {
原创 精选 2022-01-06 09:31:36
1875阅读
 从实现的技术上来分类,Java定时任务目前主要有三种:Java自带的java.util.Timer类,这个类允许调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行;而且作业类需要集成java.util.TimerTask,一般用的较少。Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按
转载 2023-12-16 16:38:42
88阅读
其实配置线程池没什么好讲的,就那几个参数,不过在项目包中提供了一个帮助类,可以方便的只用传参数,方法内部去构建线程池对象,避免配置多个线程池时每个方法内部产生大量重复代码.准备Spring提供了一些类可以帮助我们快速构建线程池bean对象。基于线程池任务的org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 基于定时任务使
转载 2023-10-14 08:17:01
175阅读
一、Spring注解事务的使用、事务失效的场景@Transactional 注解必须添加在public方法上,private、protected方法上是无效的 在使用@Transactional 的时候一定要记住,在private,protected方法上添加@Transactional 注解不会有任何效果。相当于没加一样。即使外部能调到protected的方法也无效。和没有添加@Transact
SpringBoot是一款很强大的框架我们先配置核心线程池核心文件@Configuration @EnableAsync public class BeanConfig { @Bean public TaskExecutor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskEx
转载 2023-09-22 20:22:38
140阅读
 项目中最近使用了多个定时任务处理业务需求,于是在实现业务逻辑过程中,产生了上图一些思考和疑问,现在利用空余时间进行一次复盘。项目搭建项目搭建环境:JDK1.8+SpringBoot主启动类:加上@EnableScheduling新建定时任务配置类:ScheduledTask;定义两个定时任务,简单打印一下线程名字和时间戳源码如下: @Component public class Sch
转载 2024-03-25 10:44:59
196阅读
ThreadLocal介绍ThreadLocal可以创建只能由同一线程读取和写入的变量。ThreadLocal保证了各个线程的数据互不干扰,实现了线程间的数据隔离。实际上ThreadLocal的值是放入了当前线程的一个ThreadLocalMap实例中,所以只能在本线程中访问,其他线程无法访问。可以创建一个指定泛型类型的ThreadLocal对象,这样我们就不需要每次使用get()方法返回的值做强
概念(1)线程线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。(2)线程同步:当多个线程同时读写同一份共享资源的时候,可能会引起冲突。线程同步需要牢记以下4点: a. 线程同步就是线程排队。同步就是排队。线程同步的目的就是避免线程“同步”执行。这可真是个无聊的绕口令。 b. 只有共享资源的读写访问才需要同步。如果不是共
通过实现AsyncConfigurer自定义线程池,包含异常处理。 实现AsyncConfigurer接口对异常线程池更加细粒度的控制
原创 2021-07-06 13:44:56
3286阅读
  • 1
  • 2
  • 3
  • 4
  • 5