- 博客(12)
- 收藏
- 关注
原创 Hystrix原理分析
背景:最近因为一些外部原因导致部分线上应用大面积短时报异常,现象为线程池被打满,异步请求经常被hang住或超时。虽然业界已不再维护hystrix转而使用sentinel,但由于项目中使用的OpenFeign集成了hystrix,因此借此机会系统了解下其原理。一、Hystrix特性线程隔离分类:线程池隔离,信号量隔离作用:提高系统稳定性和可用性维度:默认服务维度,可自定义熔断状态:关闭状态,半开状态,断开状态作用:保护下游服务;保护本系统不会因资源被占满而拖垮维度:方法维度降级
2022-02-22 19:19:30
576
原创 分布式事务之——Seata原理分析
本文涉及到较多的数据库事务概念,阅读本文前请确保具备必要的相关知识。事务概述事务特性Atomicity-原子性:同一个事务的所有操作,要么全部完成,要么全部不完成Consistency-一致性:在事务开始之前和结束之后,数据库的完整性未被破坏(符合预期)Isolation-隔离性:可以防止多个事务交叉执行时导致数据不一致;隔离级别由低到高依次为:读未提交(Read uncommitted)读已提交(read committed,RC),Oracle等多数数据库的默认隔离级别可重复
2022-02-22 18:32:28
2310
原创 分布式调度平台XXL-JOB原理分析
一、简介1.1、调度框架/工具单节点调度:Timer,ScheduledExecutorService,Spring Task分布式调度:Quartz,XXL-Job,Elastic-Job,TBSchedule,DolphinScheduler,……调度框架对比:https://www.cnblogs.com/davidwang456/p/9057839.html,https://www.cnblogs.com/ssslinppp/p/12485273.html1.2、XXL-JOB
2022-02-22 17:47:14
3610
原创 RocketMQ系列(三)——原理篇
前言 本篇是RocketMQ系列的第三篇原理(填坑)篇,会从客户端侧(Producer、Consumer)逐一对第一篇中提到的各种特性的实现原理进行解析。文中会出现较多的代码,建议对照源码阅读。 前篇说到RocketMQ是阿里巴巴团队开发并经过长期实践后捐赠给Apache开源基金会的消息中间件,所以就存在阿里和Apache两个版本的源码,本文使用的是Apache的rocket-client 4.4.0.2版,其它版本可能存在细微差别。一些核心问题公共机制 长连接与心跳机制发送环节 消息发送核心
2020-12-25 15:39:21
1174
原创 RocketMQ系列(二)——应用篇
本篇以应用角度讲解RocketMQ的本地安装、启动与简单配置,以及各主要类的功能及使用方式。更多其它了解请参考: RocketMQ系列(一)——基础篇 RocketMQ系列(三)——原理篇一、本地安装与部署 以windows平台为例,Linux、Mac OS类似1、安装包下载地址 https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip 解压后即可使用,记得配置环境变量 ROCKETMQ
2020-12-25 14:52:54
545
原创 RocketMQ系列(一)——基础篇
前言 本篇是RocketMQ系列的第一篇,主要针对对RocketMQ感兴趣或想系统学习RocketMQ的同学,内容相对基础,包括各种名称与术语解释、集群架构以及所支持的各种特性与适用场景。想深入了解其原理的请阅读后面的章节。RocketMQ系列(二)——应用篇RocketMQ系列(三)——原理篇 RocketMQ是一款分布式消息中间件,由阿里巴巴中间件团队开发并用于生产环境,2016年捐赠给Apache开源基金会,随后成为Apache的顶级项目。 常见的消息中间件还包括:RabbitMQ、Kafk
2020-12-25 13:32:19
1277
原创 JAVA线程同步技术
1、同步技术分类1.1 关键字● synchronized● volatile1.2 类方法● Object: wait、notify、notifyAll● Thread: sleep、join、yield2、synchronizedmonitor:分为对象监视器和类监视器,不同类型监视器加锁互不影响作用域:方法体,代码块用于方法之上,对该实例对象或类的monitor加锁public synchronized [static] void fun(…)用于
2020-12-24 12:49:42
96
原创 OpenFeign的使用及源码分析
前言 本文从使用者的角度入手,通过对其前置知识点网络客户端和代理模式及原理等相关知识作为切入点,逐步深入到OpenFeign的内部,从反(启动加载过程)正(核心调用链路)两个方向分析了其实现原理,最后简单的总结了下组件中涉及到的设计模式(部分),欢迎大家补充修正。 如果你对网络客户端和代理模式原理比较熟悉,可跳过一二小节直接进入到第三小节的阅读。一、网络连接方式 常见的网络连接实现方式有以...
2019-06-26 15:14:06
1696
原创 浅谈Java代理技术
一、代理模式1、定义 为其他对象提供一种代理以控制对这个对象的访问。 代理模式是常用的Java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等; 代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务...
2019-06-26 14:43:17
360
原创 mybatis源码分析—sql动态解析
一、相关类DynamicContext:动态上下文,持有方法的参数对象,以及解析替换后的sqlXMLScriptBuilder:从XNode中解析并构建SqlNode,构建过程中会通过TextSqlNode#isDynamic()检查原始sql中是否含有${}判断是否为动态sql,有则是XNode:其中的字符类型的body保存解析后的sql,用于构造SqlNodeSqlNode:sql节点...
2019-06-26 14:25:03
491
原创 mybatis源码分析—加载篇
一、Spring+Mybatis的典型配置1.1、pom文件引入依赖<!-- mybatis --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis....
2019-06-26 14:09:07
162
原创 mybatis源码分析—主要类说明
顶层类/接口Configuration:MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中;应用作用域SqlSession:作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要的增删改查功能;线程作用域MappedStatement:MappedStatement维护一条<select|update|de...
2019-06-26 13:54:24
203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人