
dubbo
dubbo使用、dubbo源码
bboyzqh
时刻保持好奇心~
展开
-
dubbo线程模型的理解
dubbo默认的底层网络通讯使用的是Netty,所以dubbo的线程模型与netty的线程模型是分开不的,简要理解如图所示:欢迎关注微信公众号:方辰的博客原创 2021-02-13 23:47:16 · 227 阅读 · 0 评论 -
同一dubbo服务暴露两次原理分析
文章目录1.背景2. 原理3. 引发的思考1.背景今天有测试开发反馈说某个api线上暴露了2个服务,登上一台机器连接dubbo端口,如下:dubbo>ls com.yt.smc.api.redbagrain.app.SmcRedbagRainActivityAppApicom.yt.smc.api.redbagrain.app.SmcRedbagRainActivityAppApi...原创 2019-12-26 10:58:39 · 1422 阅读 · 0 评论 -
dubbo源码:dubbo配置集群容群优先级配置原理
文章目录1 集群容错模式配置优先级配置2.配置原理2.1 原理初探:Directory实例的overrideDirectoryUrl属性2.2 ClusterUtils进行消费端和远程参数合并,同时更新providerUrl,并对Directory实例的overrideDirectoryUrl属性进行更新1 集群容错模式配置优先级配置在服务端和消费端都配置集群容错模式时,以消费端配置优先级最...原创 2019-05-21 19:43:22 · 760 阅读 · 0 评论 -
dubbo源码:dubbo集群容错机制介绍及原理
文章目录1.概要1.1 dubbo调用主流程1.2 dubbo集群配置2. 集群容错方案2.1 集群容错方案简介AvailableClusterBroadcastClusterFailbackClusterFailfastClusterFailoverCluster(默认)FailsafeClusterForkingClusterMergeableClusterRegistryAwareClust...原创 2019-05-21 19:38:11 · 863 阅读 · 0 评论 -
dubbo源码:dubbo中条件路由配置及原理
文章目录1.概要2.dubbo路由规则配置2.1 硬编码方式2.2 dubbo admin方式3. dubbo路由通知及规则解析3.1 dubbo路由配置原理1.概要当消费者请求时,首先有路由规则遴选出符合条件的服务提供者。然后在这些服务提供者之中应用负载均衡进一步选择,最后进行集群容错策略。2.dubbo路由规则配置目前dubbo支持的路由类型:conditon(条件)、script(脚...原创 2019-05-21 19:31:24 · 4888 阅读 · 0 评论 -
dubbo源码:HashedWheelTimer解析
文章目录1.概要2源码分析1.概要旧的dubbo使用了Executors.newScheduledThreadPool来进行定时重试,新的提交在2018-12-11号使用了HashedWheelTimer,其原理不再解释,直接分析dubbo中的HashedWheelTimer类,如下:时间轮由 HashedWheelBucket 数组构成,每个 HashedWheelBucket 维持一...原创 2019-05-16 13:54:49 · 896 阅读 · 0 评论 -
dubbo源码:dubbo中的负载均衡
文章目录2.介绍2.1 RandomLoadBalance2.2 RoundRobinLoadBalance2.3 LeastActiveLoadBalance2.4 ConsistentHashLoadBalance2.5 参考###1. 概要dubbo中支持的负载均衡有以下4种,**RandomLoadBalance:**随机负载均衡,用户可设置接口的"weight"属性配置来调整权重...原创 2019-05-08 22:00:50 · 246 阅读 · 0 评论 -
dubbo源码:Google protocol buffer 序列化协议使用及接入
文章目录1. Google protocol buffer 使用1.1 安装过程1.2 使用过程1.2.1 本地 protoc 命令使用1.2.2 idea中使用2. Google protocol buffer 接入dubbo1. Google protocol buffer 使用1.1 安装过程方式一:https://github.com/protocolbuffers/protob...原创 2019-04-22 23:36:17 · 2870 阅读 · 0 评论 -
dubbo源码:dubbo hessian2序列化协议
文章目录1.dubbo hessian2 序列化协议2. dubbo hessian2 序列化协议在dubbo中的应用2.1 调用链路分析2.2 序列化原理分析3. dubbo jdk序列化协议1.dubbo hessian2 序列化协议Dubbo 默认的hessian2序列化协议内部嵌入了Hessian-lite源码,其中Hessian-lite最初是阿里巴巴dubbo嵌入官方hessian...原创 2019-04-22 23:35:33 · 4544 阅读 · 0 评论 -
dubbo源码:dubbo之Listener
文章目录1. ExporterListener2. InvokerListener3. 总结1. ExporterListener本地服务暴露过程本地服务暴露过程会按照 ProtocolFilterWrapper -> ProtocolListenerWrapper -> InjvmProtocol 调用顺序,在 ProtocolListenerWrapper 中会构建 Li...原创 2019-04-16 19:58:33 · 1152 阅读 · 0 评论 -
dubbo源码:dubbo RpcContext获取不到参数值问题分析
文章目录背景原因分析解决办法背景在一次服务调用中(服务采用的dubbo框架),调用方法之前会有一次Spring AOP参数的检验(调用方是否设置"userId"),若没有直接返回,代码如下:@Component@Aspectpublic class CmcLoginAspect { @Pointcut("execution(com.yt.asd.common.domain.Rpc...原创 2019-04-09 11:08:45 · 5915 阅读 · 3 评论 -
dubbo源码:dubbo group解析
文章目录背景源码解析1. 服务端启动2. 消费端启动2.1 引用服务生成MockClusterInvoker过程2.2 生成MockClusterInvoker后的check2.2.1 消费者在订阅服务提供者后,刷新invoker列表之前会构造消费URL对应的服务者提供URL2.2.2 ZookeeperRegistry类中doSubscribe通知刷新invoker列表3.总结背景工程中经常...原创 2019-04-08 14:06:43 · 1920 阅读 · 0 评论 -
dubbo源码:dubbo服务端与消费端交互过程
文章目录概要服务端启动过程消费端启动过程消费端调用过程概要服务端启动过程Step 1:生成注册中心Registry URL集合对dubbo的registries属性进行校验(<dubbo:registry标签或properties文件中读取dubbo.registry.address属性),并获取注册中心的地址,生成Registry URL集合Step 2:根据配置参...原创 2019-03-30 14:29:24 · 757 阅读 · 0 评论 -
dubbo源码:dubbo对接口的代理方式
文章目录1.背景2. dubbo对接口的代理2.1 dubbo服务端和消费端启动都默认采用Javassist代理2.2 服务端设置JDK代理2.3 消费端设置JDK代理3. dubbo对非接口类的代理4.总结1.背景当dubbo消费者启动时才会对引用的服务创建代理,这里面有个疑问,众所周知,dubbo通过JDK和Javassist来对接口进行动态代理,问题来了:(1)dubbo对接口什么时候...原创 2019-03-27 11:39:13 · 1728 阅读 · 0 评论 -
dubbo源码:获取dubbo Filter中invoker的目标方法
这里使用的代理是dubbo默认javassist动态代理private Object getTargetClass(Object invoker) throws Exception { Field invokerField = invoker.getClass().getDeclaredField("invoker"); invokerField.setAccessible(true)...原创 2019-03-27 11:38:32 · 1631 阅读 · 0 评论 -
dubbo源码六:DubboInvoker中的doInvoke方法解析
文章目录一、RpcInvocation的构造二、获取信息交换层的ExchangeClient,实例化是ReferenceCountExchangeClient三、远程调用1. 获取本次调用是不是异步调用,放到 isAsync 变量中2. 方法返回类型是否是CompletableFuture类型,放到 isAsyncFuture 变量中3. 判断方法中有没有返回值,默认值是true,放到 isOne...原创 2018-11-20 19:46:26 · 5512 阅读 · 0 评论 -
dubbo源码五:服务调用过程
文章目录一、Cluster层二、Protocol 层1.ConsumerContextFilter 的invoke 方法2.FutureFilter 的invoke 方法3.MonitorFilter中的invoke方法4.DubboInvoker中invoke方法消费端代码示例(参考incubator-dubbo源码中dubbo-demo模块):ClassPathXmlApplication...原创 2018-11-18 16:31:02 · 1290 阅读 · 0 评论 -
dubbo源码三:消费端启动过程
服务端配置文件&amp;amp;lt;dubbo:application name=&amp;quot;demo-provider&amp;quot;/&amp;amp;gt;&amp;amp;lt;dubbo:registry address=&amp;quot;multicast://224.5.6.7:1234&amp;quot;/&amp;amp;gt;&am原创 2018-11-14 22:45:20 · 532 阅读 · 0 评论 -
dubbo源码二:dubbo服务注册过程
流程同dubbo服务暴露过程类似,这里只挑出服务注册过程,因为在 dubbo 服务暴露过程中并没有看到服务注册,这里详细分析一下。工程中的配置文件如下:&amp;lt;!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识--&amp;gt;&amp;lt;dubbo:application name=&quot;debbo-provider&qu原创 2018-11-08 19:13:30 · 3552 阅读 · 0 评论 -
dubbo源码一:ExtensionLoader及获取适配类过程解析
一、核心代码ExtensionLoader第一次加载过程,以Protocol接口为为例,入口是:public static void main(String[] args) { Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();}二、获取Prot...原创 2018-11-07 11:45:45 · 867 阅读 · 0 评论 -
dubbo源码四:dubbo服务暴露过程
dubbo标签解析spring通过在DubboNamespaceHandler注册dubbo解析器DubboBeanDefinitionParser,在加载Bean的时候同时解析dubbo标签并加载dubbo标签解析后的Bean暴露dubbo服务dubbo标签解析完成后,会把dubbo:service标签解析解析成类型为ServiceBean的RootBeanDefinition,并...原创 2018-11-03 18:19:17 · 1126 阅读 · 0 评论