- 博客(46)
- 收藏
- 关注
原创 分布式事务Seata-核心问题
Seata三大组件的协作流程本地事务和分支事务的关联分支事务中如何保证数据一致性TC如何收集分支事务的状态Seata四种分布式事务模式TCC模式在业务中如何实现?如何确保Confirm和Cancel阶段的幂等性Seata框架如何内置重试补偿机制
2025-05-23 13:58:53
480
原创 sentinel核心原理-高频问题
本文详细介绍了限流实现机制中的滑动窗口算法、责任链模式和熔断降级策略,以及QPS限流、并发线程数限流和冷启动规则的实现原理。滑动窗口算法通过动态统计QPS避免固定窗口的边界问题,责任链模式通过Slot链式处理限流逻辑,熔断降级策略则基于慢调用比例和异常
2025-05-19 16:18:50
1161
原创 微服务如何实现服务的高可用
微服务实现高可用主要依赖于集群冗余和故障自动转移机制。具体方案包括:客户端到反向代理的高可用通过Keepalived+VIP实现虚拟IP漂移;反向代理到站点应用的高可用通过Nginx的负载均衡和故障转移实现;站点应用到微服务的高可用通过连接池技术、熔断限流等实现;微服务到缓存的高可用通过分层缓存架构和RedisCluster实现;微服务到写库的高可用通过双主或主从+keepalived实现自动故障转移;微服务到读库的高可用通过读写分离和自动故障转移实现。这些方案共同确保了微服务系统的高可用性和高并发处理能力
2025-05-14 10:38:32
784
原创 微服务,服务粒度多少合适
项目服务化通过提高代码复用性、专注性、解耦合、高质量、易扩展和高效率,显著提升了系统开发和维护的效率。微服务拆分策略建议统一服务层,按子业务、库或接口划分服务,优先采用领域驱动设计(DDD)划分服务边界。在实践场景中,拆分单体系统应识别核心业务链路,优先拆分高频变更模块,并逐步演进。服务粒度的权衡需考虑性能需求和业务复杂度。技术实现上,保证数据一致性可采用Saga模式和最终一致性策略,服务通信设计则建议外部标准化使用RESTful API,内部高性能通信使用gRPC/Dubbo。
2025-05-13 14:19:43
489
原创 拦截器(HandlerInterceptor)中获取请求参数
拦截器(HandlerInterceptor)中获取请求参数HttpServletRequestWrapper
2025-05-08 15:04:18
540
原创 接入层架构演变
(1)单体架构,要解决性能扩展问题,早期,使用DNS轮询架构;(2)现在,可以使用nginx反向代理架构;(3)反向代理,不高可用,需要进一步升级为高可用反向代理架构;(4)高可用反向代理,扩充性能,可以使用多级(LVS&F5)反向代理架构;(5)多级反向代理架构,扩充到无限性能,使用DNS轮询架构;(6) DNS轮询,解决性能扩展问题;VIP+keepalived,解决高可用问题;
2025-04-29 21:07:56
450
原创 分布式事务-Seata
二是框架在JDBC层拦截SQL,自动记录数据变更前后的快照,回滚时用这些快照生成逆向SQL,完全无需业务干预。2、在不改变任何配置文件下,在bin文件夹下就可以直接启动。这样就可以使用了,一下是启动指令,如果seata安装地址在本地可以不知道ip地址(省去 -h <ip地址> )6、到此安装配置成功,在bin文件夹下 执行启动指令 ./seata-server.sh -h <ip地址> -port 8091。4、到nacos添加相关配置文件,文件名保持和上图标注的一样,一下是配置的相关信息。
2025-04-28 13:40:51
799
原创 开发遇到的问题-编译报错
发现maven使用的是jdk1.8.这边没有改过来。jdk8升级到jdk17:编译的时候报以下错误。查看mvn对应的使用jdk版本。
2025-04-11 17:23:08
292
原创 Linux 安装 Nacos
3、进入到所在安装路径(/usr/local/nacos/bin/)进行更改启动文件。4、手动创建数据库库,数据库名称如配置文件中所配置的,并执行config的SQL文件。4、进入配置文件夹修改配置文件(/usr/local/nacos/conf/)2、将安装包放在安装路径下,我所放的路径/usr/local/,使用。linux版本cenos7 ,nocos版本2.2.1。
2025-04-10 10:33:55
1124
原创 Windows版-RabbitMQ自动化部署
一键完成Erlang环境变量配置(ERLANG_HOME系统变量)。一键完成RabbitMQ环境变量配置(RabbitMQ系统变量)。自动化部署脚本(install_rabbitmq_v12.ps1)1、如果登入的时候,出现下面这个,需要把旧的默认管理员删除。执行上述脚本如果出现以下日志代表安装成功。实现快速安装部署RabbitMQ。
2025-04-08 14:33:48
301
原创 SpringBoot启动原理-ApplicationListener
监听器干嘛用的?事件类型有哪些?监听器执行时机是什么时候?底层原理是怎么实现的?是否使用了设计模式,如果使用了,都有哪些角色?监听器实现方式?监听器应用场景
2025-03-24 10:58:21
963
原创 SpringBoot启动原理-ApplicationContextInitializer
ApplicationContextInitializer为什么需要这个接口初始化器如何初始化,作用是什么,执行时机
2025-03-21 13:59:02
695
原创 SpringBoot启动原理
Spring Boot 的启动流程可以概括为:通过 `SpringApplication.run()` 初始化应用上下文,加载自动配置类,并启动内嵌 Web 服务器。核心机制包括:- @SpringBootApplication 注解组合了配置、组件扫描和自动配置;- 自动配置通过条件注解按需加载 Bean,依赖 `spring.factories` 定义;- Starter 简化依赖管理,内嵌容器实现开箱即用。实际开发中,可以通过优化组件扫描范围、禁用非必要配置、懒加载等方式提升启动速度。
2025-03-17 14:04:09
818
原创 Spring循环依赖解决方案
由上面推断 initializeBean 的时候记录缓存,在循环依赖的情况,需要在 populateBean(第二阶段) 的时候再去注入循环依赖的 bean,此时,缓存中是没有循环依赖的 bean 的,就会导致 bean 重新创建实例。如果被循环依赖的 bean 是一个 AOP 增强的代理 bean 的话,bean 的原始引用和最终产生的 AOP 增强 bean 的引用是不一样的,一级缓存就搞不定了。只有碰到 AOP 代理 bean 被循环依赖时的场景,才去特殊处理,提前生成 AOP 代理 bean。
2024-10-16 14:41:42
880
2
原创 Java并发包提供了哪些并发工具类
我们通常所说的并发包也就是JUC及其子包,集中了 Java 并发的各种基础工具类,具体主要包括几个方面:提供了比 synchronized 更加高级的各种同步结构,包括 CountDownLatch、CyclicBarrier、Semaphore 等,可以实现更加丰富的多线程操作,比如利用 Semaphore 作为资源控制器,限制同时进行工作的线程数量。
2024-04-09 22:23:28
241
Windows版+RabbitMQ安装包+自动化安装部署脚本
2025-04-08
yum相关安装包-linux系统
2023-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人