Dubbo网络通信-编解码 发表于 2018-10-06 | 分类于 Dubbo Dubbo远程通讯协议头定义 1.为什么Dubbo要自己增加协议扩展? —-为了解决TCP/IP粘包和拆包的问题。 所谓粘包和拆包,就是一个完整的业务数据可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送。 2.TCP为什么会出现粘包与拆包? TCP是以流动的方式传输 ... 阅读全文 »
Dubbo如何实现SOA的服务降级 发表于 2018-10-05 | 分类于 Dubbo 服务开关对于在线商城,在下单交易环节,可能需要调用A、B、C三个接口来完成,其中A和B是必须的,C只是附加功能(如在下单的时候推荐相关商品或push消息),可有可无,在平时系统没有压力,容量充足的情况下,调用下没问题,但是在类似618店庆之类的大促环节,系统满负荷运行,此时完全可以不调用C接口,怎么 ... 阅读全文 »
Dubbo服务响应执行过程 发表于 2018-10-05 | 分类于 Dubbo Dubbo总体设计流程 Provider的响应流程:1234567891011121314151617181920212223242526272829303132NettyHandler.messageReceived -->AbstractPeer.received -->Mu ... 阅读全文 »
Dubbo请求调用分析 发表于 2018-10-04 | 分类于 Dubbo 接下来分析Consumer的请求调用原理。以运行方式启动provider,以debug模式启动consumer。 我们在DemoConsumer类中打断点作为起点来跟踪具体的调用: 1234567891011121314151617181920public class DemoAction ... 阅读全文 »
Dubbo服务引用的设计原理 发表于 2018-10-04 | 分类于 Dubbo 准备首先为了分析服务引用的过程, 需要在源码中修改注册中心的地址如下: dubbo-demo项目的dubbo-demo-consumer/src/test/resources/dubbo.properties 12#dubbo.registry.address=multicast://224.5.6 ... 阅读全文 »
Dubbo服务发布原理 发表于 2018-10-03 | 分类于 Dubbo 序修改dubbo-demo子项目的dubbo-demo-provider模块的main/resources/dubbo-demo-provider.xml中注册中心的配置: 123<!-- 使用multicast广播注册中心暴露服务地址 --><!--<dubbo:regis ... 阅读全文 »
Dubbo的动态编译 发表于 2018-10-02 | 分类于 Dubbo 前面分析SPI机制时,提到createAdaptiveExtensionClass()自动生成和编译一个动态的adpative类。 Compiler的类继承关系: 在Dubbo实现中,默认使用JavassistCompiler进行动态编译,不使用JdKComplier。这一点从Compiler接口 ... 阅读全文 »
Dubbo之Spi机制分析 发表于 2018-10-02 | 分类于 Dubbo 一、Dubbo内核Dubbo内核主要包含SPI、AOP、IOC、Compiler。 二、JDK的SPI1.spi的设计目标: 面向对象的设计里,模块之间是基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可插拔的原则,如果需要替换一种实现,就需要修改代码。为了实现在模 ... 阅读全文 »