摘要: Invoker调用 代理有几种方式:普通代理、JDK、Javassist库动态代理、Javassist库动态字节码代理。 生成代理的目的是你调用invoker的相关函数后,就等同于是调用DubboInvoker中的相关函数,也就是将本地调用转为网络调用并获得结果。 Dubbo提供了三种代理工厂,默认 阅读全文
posted @ 2018-07-19 17:46 写出高级BUG 阅读(658) 评论(0) 推荐(0) 编辑
摘要: ExtensionLoader.java中注意到injectExtension函数是为了设置所生成的对象的field;其方法为对于有set函数的field进行设置。此时用到了ExtensionFactory;说白了ExtensionFactory就是根据类型和名字来获取对象。 下面我们来看看Exte 阅读全文
posted @ 2018-07-19 16:49 写出高级BUG 阅读(863) 评论(0) 推荐(0) 编辑
摘要: Filter Filter是Dubbo里面非常重要的模块,Dubbo里面日志记录、超时等功能都是在这一部分实现。 如上一节在介绍扩展点加载时所述,在生成Protocol的invoker时,实际上使用了装饰模式,第一个是filter,第二个是listener。 我们先来看filter,具体Protoc 阅读全文
posted @ 2018-07-19 16:21 写出高级BUG 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 与JDK的SPI机制类似,Dubbo也在META-INF路径下定义了多种扩展接口。只是JDK SPI机制是Java后台帮你实现读取文件并对接具体的实现类,而Dubbo是自己去读文件。 扩展点配置 扩展点机制有几个要点: 1. 根据关键字去读取配置文件,获得具体的实现类 比如在dubbo-provid 阅读全文
posted @ 2018-07-19 15:54 写出高级BUG 阅读(1449) 评论(0) 推荐(0) 编辑
摘要: SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说,有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。 当服务的提供者提供了一种接口 阅读全文
posted @ 2018-07-19 14:17 写出高级BUG 阅读(3426) 评论(0) 推荐(0) 编辑
摘要: 根据上一小节对于spring扩展schema的介绍,大概可以猜到dubbo中相关的内容是如何实现的。 再来回顾Dubbo实践(一)中定义的dubbo-provider.xml: 对应的自定义schema文件,对应的handler配置,可以在dubbo-{version}.jar 中 META-INF 阅读全文
posted @ 2018-07-19 12:42 写出高级BUG 阅读(3601) 评论(0) 推荐(0) 编辑
摘要: 先回顾Dubbo实践(一)中定义的dubbo-provider.xml: 本节将分析这一部分的实现过程,即如何通过配置文件生成实现类对象。 在很多情况下,我们需要为系统提供可配置化支持,简单的做法可以直接基于Spring的标准Bean来配置,但配置较为复杂或者需要更多丰富控制的时候,会显得非常笨拙。 阅读全文
posted @ 2018-07-19 11:39 写出高级BUG 阅读(690) 评论(0) 推荐(0) 编辑
摘要: Dubbo框架在初始化和通信过程中使用了多种设计模式,可灵活控制类加载、权限控制等功能。 工厂模式 Provider在export服务时,会调用ServiceConfig的export方法。ServiceConfig中有个字段: Dubbo里有很多这种代码。这也是一种工厂模式,只是实现类的获取采用了 阅读全文
posted @ 2018-07-19 11:00 写出高级BUG 阅读(643) 评论(0) 推荐(0) 编辑
摘要: 整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口; 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其 阅读全文
posted @ 2018-07-19 10:13 写出高级BUG 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 架构 节点角色说明 调用关系说明 Dubbo 架构具有以下几个特点,分别是连通性、健壮性、伸缩性、以及向未来架构的升级性。 连通性 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小; 监控中心负责统计各服务调用次数,调用时间等 阅读全文
posted @ 2018-07-19 09:47 写出高级BUG 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 通讯协议 1. HTTP协议 2. HTTPS协议 3. Protocol Buffers协议 服务治理 1. disconf实践(一)Ubuntu16.04部署disconf 2. disconf实践(二)基于XML的分布式配置文件管理,不会自动reload 3. disconf实践(三)基于XM 阅读全文
posted @ 2018-07-19 01:07 写出高级BUG 阅读(429) 评论(0) 推荐(0) 编辑
摘要: Protocol Buffers是Google开发一种数据描述语言,能够将结构化数据序列化,可用于数据存储、通信协议等方面。 不了解Protocol Buffers的同学可以把它理解为更快、更简单、更小的JSON或者XML,区别在于Protocol Buffers是二进制格式,而JSON和XML是文 阅读全文
posted @ 2018-07-19 00:07 写出高级BUG 阅读(531) 评论(0) 推荐(0) 编辑