摘要: 五Dubbo服务引用源码分析--2创建远程调用的代理-2.1ReferenceBean.getObject 5.1 创建远程调用的代理--getBean(DemoService.class)->getObject 在5.0消费端启动部分,已经分析了代理对象创建的时机: getBean(DemoSer 阅读全文
posted @ 2023-03-13 14:45 LeasonXue 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 五Dubbo服务引用源码分析--1消费端启动 在消费端consumer引用服务进行分析时,首先看Dubbo的开发者手册,把握分析的切入点,并全局把握大致的流程。 1 服务消费的过程中,首先是引用配置的初始化--即ReferenceConfig初始化,需要加载consumer.xml配置信息,将ref 阅读全文
posted @ 2023-03-13 14:45 LeasonXue 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 四Dubbo中Zookeeper注册中心 4.1 zk连接 4.2 zk创建节点 4.3 zk订阅 4.4 ZKClient使用 4.5 注册和订阅、通知解析--todo?? 阅读全文
posted @ 2023-03-13 14:44 LeasonXue 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 三Dubbo服务暴露源码分析--3远程暴露-下 //PTC2.2.2 DubboProtocol.serverMap.put(key, createServer(url)) DubboProtocol private final Map<String, ExchangeServer> serverM 阅读全文
posted @ 2023-03-13 14:43 LeasonXue 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 三Dubbo服务暴露源码分析--3远程暴露-中 紧接上文,分析PTC2.2.1.1 Exchangers.bind(url, requestHandler)-BIND的绑定操作: BIND1 ExchangeHandlerAdapter--处理client请求invoker.invoke(invoc 阅读全文
posted @ 2023-03-13 14:42 LeasonXue 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 三Dubbo服务暴露源码分析--3远程暴露-上 3.2 远程暴露 在Dubbo开发者手册中,给出了服务调用的流程图如上。其中,圈住部分为provider端的远程服务暴露部分的主流程。后续的分析,可以对照流程图,把握执行方向。 ServiceConfig private void doExportUr 阅读全文
posted @ 2023-03-13 14:41 LeasonXue 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 三Dubbo服务暴露源码分析--2本地暴露 3.1 本地暴露(exportLocal) ServiceConfig private void exportLocal(URL url) { //url中protocol如果不为injvm,重新设置URL为injvm://的协议头 if (!Consta 阅读全文
posted @ 2023-03-13 14:41 LeasonXue 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 三Dubbo服务暴露源码分析--1服务端启动 分析provider端暴露原理,首先从官方文档找到总体的逻辑,在把握全局逻辑后,找到源码研究切入点,并顺藤摸瓜,后面的细节也就呼之欲出。 上述过程可知,provider端服务暴露的起点,是serviceConfig类。 服务暴露逻辑: 1 service 阅读全文
posted @ 2023-03-13 14:40 LeasonXue 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 二Dubbo设计基础--6设计模式 2.6 设计模式 2.3.1 责任链模式 在[wrapper机制](#2.2 Wrapper机制)中使用到该模式。 1 责任链原型 (1)抽象出接口AbstractHandler 有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递, 阅读全文
posted @ 2023-03-13 14:38 LeasonXue 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 二Dubbo设计基础--5Dubbo与Spring的融合 2.5.1 标签解析原理 spring使用过程会遇到各种标签元素进行解析,该功能与spring核心组件有关。而核心组件中springAOP、springBean、springContext都包含spring.handlers文件,文件内容表明 阅读全文
posted @ 2023-03-13 14:37 LeasonXue 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 二Dubbo设计基础--4Dubbo-URL 2.4.1 Dubbo中的URL 一个标准的 URL 格式至多可以包含如下的几个部分 protocol://username:password@host:port/path?key=value&key=value 在 dubbo 中,也使用了类似的 UR 阅读全文
posted @ 2023-03-13 14:36 LeasonXue 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 二Dubbo设计基础--3Mock机制和Stub机制 2.3.1 Mock机制 (https://maimai.cn/article/detail?fid=1414002536&efid=1ClnCEtvvjXp5j1knp2Trw) Cluster是一个通用代理类,会根据URL中的cluster参 阅读全文
posted @ 2023-03-13 14:35 LeasonXue 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 二Dubbo设计基础--2Wrapper 2.2 Dubbo中Wrapper 注意,区别Dubbo中Wrapper.getWrapper和wrapper机制。前者用在provider端构造invoker时,javassist字节码方式,构建字节码——>>class对象——>>反射创建实例,构造目标服 阅读全文
posted @ 2023-03-13 14:35 LeasonXue 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 二Dubbo设计基础--1扩展点加载 2.1 扩展点加载 2.1.1 java的SPI SPI是Service Provider Interfaces的简称。根据Java的SPI规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即Service Provider(服务提供者)。然后在使 阅读全文
posted @ 2023-03-13 14:34 LeasonXue 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 一Dubbo架构设计 1.1结构设计 官网用户手册的介绍如下: https://dubbo.gitbooks.io/dubbo-user-book/content/demos/fault-tolerent-strategy.html 上述过程是服务调用call过程,consumer端invoker. 阅读全文
posted @ 2023-03-13 14:33 LeasonXue 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 五Netty源码分析--4Bootstrap.connect client端与server端bootstrap配置和启动流程大致相同,server端需要bind端口并监听,来对外提供连接服务;而client端,执行b.connect连接server端。 4.1 Bootstrap.connect() 阅读全文
posted @ 2023-03-10 17:27 LeasonXue 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 五Netty源码分析--3Bootstrap.bind--下 TAG1.3.1.1.3 register0 AbstractChannel private void register0(ChannelPromise promise) { try { // 检查channel是否是open状态(因为在 阅读全文
posted @ 2023-03-10 17:27 LeasonXue 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 五Netty源码分析--3Bootstrap.bind--中 TAG1.2.2 ServerBootstrapAcceptor(连接处理器--server接受client端连接--子channel创建) 该处过程是为serversocketchannel.pipeline添加一个初始化的handle 阅读全文
posted @ 2023-03-10 17:26 LeasonXue 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 五Netty源码分析--3Bootstrap.bind--上 第三节 ServerBootstrap.bind()源码解析 3.1 ServerBootstrap配置方法 首先从ServerBootstrap的配置方法跟入,看如何实现 TAG0.1 parent属性设置 group传入,分别设置pa 阅读全文
posted @ 2023-03-10 17:26 LeasonXue 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 五Netty源码分析--2ServerBootstrap分析 第二节 ServerBootstrap分析 使用NIO原生类库开发异步服务器时,需要使用多路复用器selector、serverSocketChannel、SocketChannel、selectionKey等,相比于传统BIO开发,NI 阅读全文
posted @ 2023-03-10 17:25 LeasonXue 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 五Netty源码分析--1NioEventLoopGroup初始化分析 以NettyRPC项目为例,源码分析: public void run() { //netty的reactor线程组 EventLoopGroup bossGroup = new NioEventLoopGroup(); Eve 阅读全文
posted @ 2023-03-10 17:25 LeasonXue 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 四Netty组件类--7EventLoop和EventLoopGroup 18.2 NioEventLoopGroup 体系结构图如下: NioEventLoopGroup也是Executor,且是线程池的Executor,它的execute()方法在父类AbstractEventExecutorG 阅读全文
posted @ 2023-03-10 17:24 LeasonXue 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 四Netty组件类--6Netty的线程模型 18.1 Netty的线程模型 18.1.0 Netty中IO线程的工作流程 IO线程处理的关键点: 每一IO线程在执行上述操作时是串行执行的,即注册在一个 Selector(事件选择器)中的所有通道,**同一时间只有一个通道的事件被处理。**这也是为什 阅读全文
posted @ 2023-03-10 17:24 LeasonXue 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 四Netty组件类--5ChannelHandlerContext 17.5 ChannelHandlerContext 17.5.1 ChannelHandlerMask 对事件的inbound和outbound定义 final class ChannelHandlerMask { private 阅读全文
posted @ 2023-03-10 17:23 LeasonXue 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 四Netty组件类--4ChannelHandler 17.3 ChannelHandler功能说明 17.3.1 ChannelHandler接口功能 1 channelHandler: channelHandler实际为inbound和outbound的拦截器(拦截过滤器原理) handlerA 阅读全文
posted @ 2023-03-10 17:23 LeasonXue 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 四Netty组件类--3ChannelPipeline 17.1 ChannelPipeline功能说明 channePipeline是容器,可以动态编排职责链(职责链中node节点是ChannelHandler包装成的ChannelContextHandler),职责链可以有选择的监听、处理自己关 阅读全文
posted @ 2023-03-10 17:22 LeasonXue 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 四Netty组件类--2Selector多路选择器 16.4 Selector源码与机制 选择器selector是NIO的关键,是实现多路复用的核心类。Nio是由事件驱动的,selectableChannel.register方法,将当前channel注册到指定selector上,通过询问操作系统, 阅读全文
posted @ 2023-03-10 17:22 LeasonXue 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 四Netty组件类--1Channel通道 16.1 Channel功能说明 Netty中channel是socket连接的抽象,为用户提供关于底层socket状态(连接还是断开),以及对socket的读写等操作。 父子channel: channel有父子channel的概念。server端负责链 阅读全文
posted @ 2023-03-10 17:21 LeasonXue 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 三Netty--Netty入门应用 Netty的开发过程,需要注意对比和NIO开发流程的对应关系。 仍旧以TimeServer为例,简单介绍Netty开发流程。 3.2 Server端开发 3.2.1 TimeServer代码 public class TimeServer { //server端b 阅读全文
posted @ 2023-03-10 17:21 LeasonXue 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 二Netty--NIO入门 第二章 NIO入门 网络编程基本模型: ​ server和client模型,两个进程相互通信。server端提供位置(ip+port),client端通过connect向服务端监听的地址(ip+port)发起连接请求。通过三次握手,建立连接,然后通过socket进行通信。 阅读全文
posted @ 2023-03-10 17:20 LeasonXue 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 一Netty框架--Java的I/O演进 第一章 Java的I/O演进之路 1.1 I/O基础入门 Java1.4早期版本,对io支持不完善,存在如下问题: **buffer:**没有数据缓冲区,io性能存在问题 **channel:**没有channel概念,只有输入InputStream和输出流 阅读全文
posted @ 2023-03-10 17:19 LeasonXue 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务源码分析--9事务方法执行流程 6.5.3 事务方法执行流程 在AOP章节的调用逻辑中,执行业务方法methodA,会被JdkDynamicAopProxy.invoke拦截执行,然后获取拦截器链,执行链式调用invocation.proceed。 当执行到事务拦截器Transac 阅读全文
posted @ 2023-03-10 17:18 LeasonXue 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务源码分析--8创建事务代理 6.5.2 创建事务代理 在spring初始化过程中,会进行相关的初始化配置,包括构建拦截器链。 spring事务时基于AOP的around增强实现,因此初始化过程,同AOP有大致相同的流程。 Spring事务初始化流程: TAG0.1 Abstract 阅读全文
posted @ 2023-03-10 17:18 LeasonXue 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务源码分析--7事务配置 spring事务有声明式和非声明式事务,这里以声明式注解事务为例,分析源码实现。 6.5.1 事务配置 用@EnableTransactionManagement开启和配置事务。 @Target(ElementType.TYPE) @Retention(Re 阅读全文
posted @ 2023-03-10 17:18 LeasonXue 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务--6Spring事务原理概览 6.4 spring事务原理概览 6.4.1 spring事务机制 spring事务的实现是基于数据库事务和AOP实现的;spring事务的隔离级别由数据库实现;spring事务的传播行为由spring实现,传播行为,定义了事务与子事务获取连接、事务 阅读全文
posted @ 2023-03-10 17:18 LeasonXue 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务--5声明式事务的核心类 6.3 实现声明式事务注解的核心类 事务的配置核心类,主要是实现@EnableTransactionManagement(@EnableXXXXXX等功能)核心的类。这些类用来注册相关的bean。 6.3.1 @EnableTransactionManag 阅读全文
posted @ 2023-03-10 17:17 LeasonXue 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务--4事务同步管理器 6.2.4 事务同步管理器 6.2.4.1 TransactionSynchronizationManager--(conn) 事务同步管理器,管理每个线程的资源(对于事务,DataSource创建的连接对象connection等称作事务的资源)和事务同步(T 阅读全文
posted @ 2023-03-10 17:17 LeasonXue 阅读(892) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务--3事务组件类 6.2.3 事务组件类 6.2.3.1 AbstractBeanFactoryPointcutAdvisor--(advisor) AbstractBeanFactoryPointcutAdvisor作为spring事务中的advisor类,主要包裹了advice 阅读全文
posted @ 2023-03-10 17:17 LeasonXue 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务--2事务抽象类 6.2 Spring事务重要组件类 6.2.1 事务抽象类 事务抽象类之间的构建关系,最终需要获得transactionInfo对象,该对象位于TransactionInterceptor的父类TransactionAspectSupport的内部类中,其包装了事 阅读全文
posted @ 2023-03-10 17:17 LeasonXue 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 六Spring事务--1事务的概念及使用 6.1 相关概念 spring事务涉及的知识点: (1)ACID Spring 支持编程式和声明式事务管理,在不需要应用程序服务器的情况下实现 (2)局部事务、全局事务 局部事务是特定于一个单一的事务资源,如一个 JDBC 连接,而全局事务可以跨多个事务资源 阅读全文
posted @ 2023-03-10 17:17 LeasonXue 阅读(196) 评论(0) 推荐(0) 编辑