摘要:
SpringBoot打包、shell部署、assembly插件打包 一 引言 springboot默认以jar包形式,通过java -jar指令运行。而springboot的程序打包,可以分为jar和war两种。 但这样的启动方式实际上不是很友好,我们常常看到各类组建通过bin目录下的start.s 阅读全文
摘要:
# 六SpringSecurity异常处理 在 Spring Security 的过滤器链中,ExceptionTranslationFilter 过滤器专门用来处理异常。且异常分为下面两大类: ### 1 认证异常(authenticationException)和授权异常(AccessDenie 阅读全文
摘要:
# 五SpringSecurity重要配置类--3HttpSecurity/WebSecurity #### HttpSecurity(build方法构造过滤器链)和WebSecurity(build->performBuild构造 FilterChainProxy) ![image-2023082 阅读全文
摘要:
# 五SpringSecurity重要配置类--2SecurityConfigurer Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这些 xxxConfigurer 实际上都是 SecurityConfigurer 的实现。 Sec 阅读全文
摘要:
# 五 SpringSecurity重要配置类--1SecurityFilterChain SecurityFilterChain作用其实跟Servlet的FilterChain一样,同样维护了很多Filters,这些Filters 是由Spring Security提供的,每个 Security 阅读全文
摘要:
# 四 SpringSecurity重要代理类--DelegatingFilterProxy/FilterChainProxy ![image-20230828222011650](https://img2023.cnblogs.com/blog/2492369/202308/2492369-202 阅读全文
摘要:
# 三 SpringSecurity过滤器核心类 spring security是基于AOP和servlet过滤器的安全框架。Spring Security在我们进行用户认证以及授予权限的时候,通过各种各样的拦截器来控制权限的访问。 对于基于HttpRequest的方式对端点进行保护,我们使用一个F 阅读全文
摘要:
# 二 SpringSecurity核心组件类--2SecurityContext/UserDetailsService/AuthenticationManager #### 2.1 SecurityContext `SecurityContext`是安全的上下文,在用户通过spring secur 阅读全文
摘要:
# 二 SpringSecurity核心组件类--1 Security如何向容器添加bean--ObjectPostProcessor 从原理上,new出来对象和spring容器内bean无关,但是spring security框架中同样new很多对象,但是最终也被容器管理。这个功能是通过Objec 阅读全文
摘要:
# 一SpringSecurity概念及入门开发 # 一 SpringSecurity概念及入门开发 认证和鉴权是两个过程。 认证:是输入账号密码(包括其他方案如jwt中,从server获得token)然后传至server,决定认证是否成功。认证成功后才可以访问后端资源; 鉴权:是认证成功后,访问后 阅读全文
摘要:
# 五 事务型MQ的最终一致性事务方案--3 如何保证事务成功及正确开发 ### 3.2.4 RocketMQ的事务消息机制,如何保证事务成功 #### 1 理解RocketMQ如何保证整个事务流程一致性 ![image-20230612180427396](https://img2023.cnbl 阅读全文
摘要:
# 四 事务型MQ的最终一致性事务方案--2RocketMQ事务消息的回查 ### 3.2.3 回查事务状态 根据终结事务的源码中,当事务消息在第一阶段prepared时,发送commitlog并被分发到RMQ_SYS_TRANS_HALF_TOPIC队列中。在prepared消息发送成功后,pro 阅读全文
摘要:
# 三 事务型MQ的最终一致性事务方案--1RocketMQ事务消息的发送与提交 该方案,在MQ事务最终一致性方案的基础上,使用RocketMQ提供的事务消息功能。其简化了非事务型MQ最终一致性方案的流程。如下: ![image-20230612180003947](https://img2023. 阅读全文
摘要:
# 二 非事务型MQ的最终一致性事务方案 # 二 非事务型MQ的最终一致性事务方案 ## 2.1 非事务型MQ的方案及流程 对于非事务型MQ,使用该消息中间件实现最终一致性事务的方案,参照第一部分的设计思路: ![image-20230511153852987](https://img2023.cn 阅读全文
摘要:
# 一 基于MQ的最终一致性事务(原理) 无论是 2PC & 3PC 还是 TCC、事务状态表,基本都遵守 XA 协议的思想,即这些方案本质上都是事务协调者协调各个事务参与者的本地事务的进度,使所有本地事务共同提交或回滚,最终达成一种全局的 ACID 特性。在协调的过程中,协调者需要收集各个本地事务 阅读全文
摘要:
# 六 TCC-transaction的事务恢复 # 五 TCC-transaction的事务恢复 由于2.X提供了embedded和server的部署模式,在embedded模式下,事务恢复仍旧由tcc-client实现;在server模式时,事务恢复交给tcc-server模块实现。这里,我仅以 阅读全文
摘要:
# 五 TCC-transaction的事务执行流程 # 四 TCC-transaction的事务执行流程 ![image-20230523155316088](https://img2023.cnblogs.com/blog/2492369/202306/2492369-2023061218172 阅读全文
摘要:
# 四 TCC-transaction分布式事务关键组件--3事务存储器、TCC-Client/Server ### 2.2.4 事务存储器 在 TCC 的过程中,根据应用内存中的事务信息完成整个事务流程。But 实际业务场景中,将事务信息只放在应用内存中是远远不够可靠的。可能会出现如下的问题: 1 阅读全文
摘要:
# 三 TCC-transaction分布式事务关键组件--2事务拦截器 ### 2.2.3 事务拦截器 TCC有两个拦截器: ```java CompensableTransactionInterceptor:可补偿事务拦截器 用于tcc事务的流程执行begin(try)、commit(confi 阅读全文
摘要:
# 二 TCC-transaction分布式事务关键组件--1Participant参与者、TransactionManager事务管理器 # 二 TCC-transaction关键组件类及原理 ## 2.1 框架原理 ### 2.1.1 基本使用 在一个模块配置Tcc-transaction并使用 阅读全文
摘要:
# 一TCC-transaction分布式事务(TCC事务原理) # 一 TCC事务原理 ## 1.1 TCC事务原理 tcc分布式事务是一个两阶段的事务解决方案,但是是业务层级的事务定义(2PC/3PC依赖于XA规范的数据库db来实现)。解决了事务运行过程中,对资源锁定(独占数据库)的大颗粒度的问 阅读全文
摘要:
# Spring的@Transactional失效场景和事务注解方法之间调用(二) # 三 @Transactional注解的方法之间调用(同类和不同类之间) 针对methodA方法调用methodB,且methodB中抛出异常的情况: | 同类调用 | 不同类调用 | | : : | : : | 阅读全文
摘要:
# Spring的@Transactional失效场景和事务注解方法之间调用(一) # 一 spring声明式事务的原理 ## 1.1 原理概述 ![image-20230526172356437](https://img2023.cnblogs.com/blog/2492369/202306/24 阅读全文
摘要:
七Dubbo各模块的层次核心接口及组件类--6Proxy--RPC模块 7.6 Proxy(RPC模块) 服务代理层:实现服务接口的透明代理,生成服务的客户端stub和服务器端skeleton。 | 模块 | Dubbo层 | 各层核心接口 | | : : | : : | : : | | | Ser 阅读全文
摘要:
七Dubbo各模块的层次核心接口及组件类--5Registry 7.5 Registry(Registry模块) registry层,封装服务地址URL的注册与发现,以服务URL为中心,扩展接口为RegistryFactory,Registry,RegistryService。 | 模块 | Dub 阅读全文
摘要:
七Dubbo各模块的层次核心接口及组件类--4Cluster层-4.2LoadBalance(待完善) 7.4.4 LoadBalance 7.4.4.1 RandomLoadBalance 基于权重随机算法的 RandomLoadBalance 7.4.4.2 RoundRobinLoadBala 阅读全文
摘要:
七Dubbo各模块的层次核心接口及组件类--4Cluster层--Cluster-Directory-Router 7.4 Cluster(Cluster模块) 路由层:封装多个提供者的路由及负载均衡,并桥接注册中心,以invoker为中心。 | 模块 | Dubbo层 | 各层核心接口 | | : 阅读全文
摘要:
七Dubbo各模块的层次核心接口及组件类--3Protocol-RPC模块 7.3 Protocol(RPC模块) 远程调用层:封装rpc调用,以invocation和result为中心,扩展接口为protocol、invoker和exporter。 | 模块 | Dubbo层 | 各层核心接口 | 阅读全文
摘要:
七Dubbo各模块的层次核心接口及组件类--2Exchange--Remoting模块 7.2 Exchange(remoting模块) 信息交换层:封装请求/响应模式,同步转异步,以request、response为中心,Exchanger 、ExchangeChannel ExchangeCli 阅读全文
摘要:
七Dubbo各模块的层次核心接口及组件类--1Transport--Remoting模块 | 模块 | Dubbo层 | 各层核心接口 | | : : | : : | : : | | | Service | ServiceBean ReferanceBean | | dubbo-config | C 阅读全文
摘要:
六Dubbo核心技术归纳--3Dubbo中Invoker的作用及转换 6.3 dubbo的核心模型Invoker Dubbo中invoker是provider和consumer实现RPC调用的关键,invoker的构建过程,是Dubbo服务的init初始化过程;invoker.invoke的调用是D 阅读全文
摘要:
五Dubbo服务引用源码分析--4网络处理-4.3consumer端接收响应 5.3.4 consumer端接收响应 然后,consumer端返回到DubboInvoker.doInvoke过程中 DubboInvoker @Override protected Result doInvoke(fi 阅读全文
摘要:
五Dubbo服务引用源码分析--4网络处理-4.2provider端处理请求 5.3.3 provider端处理请求(请求消息处理) 在前述章节中,知道在NettyServer初始化过程中,向dubbo的底层netty通信框架的pipeline上添加了编解码handler、NettyHandler的 阅读全文
摘要:
五Dubbo服务引用源码分析--4网络处理-4.1consumer端发送请求 5.3 服务请求网络处理(connect、received) 本章节中,主要分析的consumer< >provider两端底层通信过程中,关于provider端对于connect连接消息处理、consumer端发送请求、 阅读全文
摘要:
五Dubbo服务引用源码分析--3服务引用-下 紧接上文,对服务引用源码分析: TAG 1.1.2 FailOverClusterInvoker.doInvoke()--cluster中调用服务 返回AbstractClusterInvoker.invoke() 上面挑选出了可以正常执行的invok 阅读全文
摘要:
五Dubbo服务引用源码分析--3服务引用-上 5.2 服务引用 在服务引用的部分,同样首先把握整体架构,有个大致流程和方向的把握。在Dubbo官方使用者手册中,对集群容错的架构设计,可以通过其对服务引用的框架结构进行参考: https://dubbo.gitbooks.io/dubbo-user- 阅读全文
摘要:
五Dubbo服务引用源码分析--2创建远程调用的代理-2.5开启consumer端NettyClient /**…………NettyClient--开启consumer端………… */ 此时url=dubbo://192.168.0.100:20880/com.alibaba.dubbo.demo.D 阅读全文
摘要:
五Dubbo服务引用源码分析--2创建远程调用的代理-2.4DubboProtocol.refer 继续上篇文章内容,向下分析DubboProtocol.refer的源码: /**…………DubboProtocol.refer………………*/ INV InvokerDelegate(protocol 阅读全文
摘要:
五Dubbo服务引用源码分析--2创建远程调用的代理-2.3zookeeperRegistry.subscribe订阅 /**…………………订阅-通知…………………… */ //REFER2.2.3.1 zookeeperRegistry.subscribe-订阅SUB listener参数是reg 阅读全文
摘要:
五Dubbo服务引用源码分析--2创建远程调用的代理-2.2RegistryProtocol.refer /**…………RegistryProtocol.refer………………*/ REFER1 qos/filter/listener.refer QosProtocolWrapper @Overri 阅读全文