![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dubbo
乐乐Java路漫漫
热衷于互联网JAVA开发,对新技术的探索孜孜不倦,对问题的研究废寝忘食,希望大家一起探索
展开
-
dubbo系列第一篇【服务远程调用的源码解析】
1.十层架构图:重点:服务降级,集群容错, 服务路由,负载均衡,2.总结:(1)【MockClusterInvoker】若没有指定mock属性,或其值为false,则没有降级功能,如果有,则判断是否以force开头,是则强制降级,不需要远程调用,如果不是force开头,则进行远程调用,如果出现异常(如超时异常或发生程序异常)则进行服务降级(2)【AbstractClusterInvoker】服务路由(3) 获取负载均衡策略(4)【FailoverClusterInvoker】集群容错:(5)原创 2020-05-25 07:48:47 · 353 阅读 · 0 评论 -
dubbo系列第二篇【服务订阅的源码解析】
首先来个图看下dubbo十层架构:1.获取动态代理对象 (1)通过工厂创建bean(2) 生成代理对象2.获取invoker总结:在调用代理对象的方法的时候触发代理对象初始化,真正的创建代理对象判断是否是本地调用((1)若dubbo:reference/的url属性不为空,则不是本地调用,(2)如果inJvm为true或scope=local则为本地调用, (3)如果generic=true则为泛化调用,(4)判断exportMap是否存在,如果存在直接调用本地)如果是远程调用,检测注册中心原创 2020-05-24 18:04:29 · 502 阅读 · 0 评论 -
dubbo系列第三篇【本地服务暴露解析】
本地服务暴露exportLocal@SuppressWarnings({"unchecked", "rawtypes"}) /** * always export injvm */ private void exportLocal(URL url) { // 构建URL URL local = URLBuilder.from(url) .setProtocol(LOCAL_PROTOCOL) // 指定当原创 2020-05-24 12:15:10 · 218 阅读 · 0 评论 -
dubbo系列第四篇【服务暴露过程源码详解】
dubbo服务暴露过程入口:org.apache.dubbo.config.spring.ServiceBean#onApplicationEvent// 当Spring容器刷新时会触发其执行@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) { // 若当前service尚未发布,也没有取消发布,则进行发布 if (!isExported() && !isUnexported()原创 2020-05-14 14:57:17 · 409 阅读 · 0 评论 -
dubbo遇到的问题
dubbo缺省会在启动时检查依赖是否可用,不可用就抛出异常,阻止spring初始化完成,check属性默认为true。测试时有些服务不关心或者出现了循环依赖,将check设置为false为了让方便开发测试,线下环境只有一个注册中心,这时候如果又一个正在开发中的服务提供者,可能会影响消费者不能正常运行。可以让服务提供方只订阅不发布,register=false,通过直连指定url<dubbo:reference id="someService" interface="com.abc.service..原创 2020-05-09 12:14:25 · 621 阅读 · 0 评论