美文网首页分布式框架源码解析
一 捋代码--dubbo源码学习目录

一 捋代码--dubbo源码学习目录

作者: 爱编程的凯哥 | 来源:发表于2018-10-22 16:25 被阅读144次

        从早期的lamp(linux、apache、mysql、php)架构到分布式集群部署,创造服务的架构层出不穷,dubbo作为处理分布系统中地址维护、降级容错以及限流监控架构中十分优秀的框架,值得分析学习下。

温馨提示:本文只讲dubbo的实现源码,如果研究dubbo的使用,请参考别的文章!

温馨提示:本文只讲dubbo的实现源码,如果研究dubbo的使用,请参考别的文章!

温馨提示:本文只讲dubbo的实现源码,如果研究dubbo的使用,请参考别的文章!

内容摘要

1. dubbo简介

2. dubbo扩展机制spi源码欣赏

3. dubbo源码服务发布流程

4. dubbo服务引用源码分析

5. dubbo服务调用源码欣赏-消费端

6. dubbo服务调用源码欣赏-服务端

7.  手写dubbo调用原理

 1. dubbo简介 

         参考链接:[dubbo官网](http://dubbo.apache.org/zh-cn/docs/dev/design.html)

       相信大家dubbo的这张依赖图都看过吧:

    

        图中我们可以看到dubbo的想法很实用,provider做为服务方,consumer作为消费方,registry作为注册中心,这就好比:provider好比某皮革厂小p和大p,consumer好比某皮革采购方小c,registry好比互联网。小c通过互联网查到有小p和大p两个皮革厂,就开始选择用个皮草厂的产品(这个时候会有很多策略),最终小c选择了大p皮革厂,就开时和大p签合同购买皮革(这就是调用invoke过程),最中大p将货物发给了小c,完成一次交易-----小c和大p此次通话购物,在dubbo中有个名称叫Invocation会话域,此次通过结束,会话域就完了。    

      刚才说到了invocation会话域,在dubbo的领域模型设计很有值得我们玩味的东西,引用官方说法:    

   1. Protocol 是服务域,它是 Invoker 暴露和引用的主功能入口,它负责 Invoker 的生命周期管理。

    2.Invoker 是实体域,它是 Dubbo 的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起 invoke 调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。

    2.Invocation 是会话域,它持有调用过程中的变量,比如方法名,参数等。

    好了,闲言少叙,书归正文,如果想看具体dubbo架构整体架构,还是去看http://dubbo.apache.org/zh-cn/docs/dev/design.html官网介绍吧,下面我们直入我们的主题,那我们先看下我们要演示的示例:

spi

Protocol adaptiveExtension = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension()

服务发布

<dubbo:registry id="nina-register2" address="127.0.0.1" port="2181" protocol="zookeeper" file="/Users/kai.yang/Documents/学习/dubbo"/> 

<dubbo:protocol id="dubbo" port="20880" name="dubbo" server="netty4" client="netty4"/>

<dubbo:service interface="com.alibaba.dubbo.kai.api.TestApi" ref="testApi" version="0.0" />

消费引用

<dubbo:registry id="nina-register" address="127.0.0.1" port="2181" protocol="zookeeper"/>

<dubbo:reference interface="com.alibaba.dubbo.kai.api.TestApi" id="TestApi" protocol="dubbo" check="true" version="0.0" timeout="1000000"/>

调用

ClassPathXmlApplicationContext classPathXmlApplicationContext=new ClassPathXmlApplicationContext("dubbo-client.xml");

classPathXmlApplicationContext.start();

TestApi bean = classPathXmlApplicationContext.getBean(TestApi.class);

System.out.println(bean.go());

System.in.read();

好了,下面开始表演!

        下一节 dubbo扩展机制spi源码

相关文章

网友评论

    本文标题:一 捋代码--dubbo源码学习目录

    本文链接:https://www.haomeiwen.com/subject/spdgzftx.html