`
357029540
  • 浏览: 725864 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

dubbo学习总结

阅读更多

        对应dubbo来说,相信很多人都听说过,也有很多人都使用过,我们也可以通过官网文档(http://dubbo.apache.org/zh-cn/docs/user/quick-start.html)进行学习,目前官方文档介绍的是2.6.4的版本,跟目前2.7.x的版本相差也有点远了,很多代码都进行了重构,比如说DefaultFuture,在2.6.4版本中它实现了ResponseFuture接口,在接收到服务端返回的消息后通过doReceived(Response res)的done.signal()方法来将线程唤醒告知其消息已经正常返回,但是在2.7.x的版本中它却继承了java.util.concurrent.CompletableFuture类,它直接通过CompletableFuture的complete()方法来直接实现了线程的消息完成操作。目前2.7.x的dubbo只支持Java 8+的环境。

        对于dubbo来说主要就是用来进行分布式的远程服务调用,如果从简单的角度来讲我们只需要实现客户端通过网络连接服务端应用即可,即client+transport+server就可以实现一套远端服务调用了,但是为了更好的管理客户端和服务端的连接以及实现服务治理,dubbo提供了注册中心管理客户端和服务端的对象,同时针对多个服务端的时候提供了loadbalance机制进行服务端连接的选取,在服务端连接出错的时候提供了容错机制,以及当容错机制提供的操作完成后仍不能解决的mock机制即在客户端返回默认值,有时候我们也可以对客户端和服务端的连接进行路由配置,有点类似于黑白名单,指定客户端只能连接某些ip的服务端或者服务端只接收来自某些ip的客户端的请求,这个路由我们也可以通过dubbo admin去配置,这些内容都在官方文档里面有具体的说明,到时自己去翻阅下。

       通过官方文档我们自己需要去了解下各种参考手册,通过参考手册能够快速的上手服务的配置,在dubbo中最重要的就是URL,在URL上面我们会把大多数的配置放在里面,在代码中进行各种获取操作的时候基本都是通过URL来进行获取的。在dubbo中针对各种不同的配置采用了SPI的方式进行扩展,这里的SPI和Java的SPI不一样,这个是dubbo自己进行扩展了的,如果需要自己扩展某一类型的SPI,需要在自己的项目路径下面新建目录如META-INF/dubbo/org.apache.dubbo.registry.RegistryFactory的全限定名文件。针对扩展点的加载dubbo提供了ExtensionLoader.getExtensionLoader(xxx.class).getExtension(extensionName)来进行运行时的加载,xxx表示具体的需要加载的扩展接口类,extensionName表示定义好了的扩展的实现类,通过这种加载方式,我们就可以根据需要完全动态生成代理类在具体调用时使用,这个代理类的生成是保存在内存中的,并没有实际输出任何的class文件。

       在源码的阅读上面,其实官网已经介绍的非常清楚了,虽然跟现在的版本有点脱节,但是对比起来还是可以阅读的,因为现在dubbo托管到了Apache下面,所以在很多类上面都做了修改,但是为了兼容以前的老版本,在2.7.x的版本中以前的com.alibaba目录下的代码都继承了新的org.apache目录的类,源码阅读根据官网从上往下分析也会得出一个代码的加载顺序其实就是按照这个源码阅读的顺序来的,先要进行SPI扩展类的加载同时进行URL地址的拼接,毕竟URL是整个dubbo的中心,SPI加载完成后就可以将服务端需要提供的服务导出到注册中心进行注册,注册完成后客户端就可以从注册中心进行服务的引入了,同时客户端也把自己的信息注册到注册中心从而实现服务治理,在客户端引入服务后,那么我们需要怎么来实现远程调用,这个在前面也已经说明过,最后服务调用过程的源码分析基本就把整个dubbo应用串联起来了,这个里面主要分析了序列化,编解码以及服务的请求和响应过程中涉及到的handler、invoker、netty的一系列调用流程。

       以上就是dubbo的一些学习总结,总之还是需要多去官网看看它的一些描述定义,因为是alibaba提供的,所以有中文文档,不用担心看不懂,这个还是需要在实际开发中才能纯熟记住,看了几遍后也只能有个大概的模糊印象,因为没有实际的业务场景,所以自己只是写了一个小demo,采用了springboot+dubbo的xml+注解的形式,xml主要用于服务端,注解在客户端使用,地址是https://github.com/422518490/spring-boot-dubbo 。

     下面有一点小疑问是关于@Method注解的用法,这个注解目前只能在别的注解上面使用,但是定义好新的注解后怎么让这个新注解起作用呢,没有搞明白,难道还需要自己去把这个新注解获取出来去解析一遍,即使这样,但是怎么起作用呢,没有搞明白,希望了解的朋友告知下。

0
0
分享到:
评论

相关推荐

    dubbo学习总结思维导图,十分详细

    dubbo学习总结思维导图,十分详细。精确到各个知识点。

    Dubbo学习总结

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

    dubbo技术的一些总结

    dubbo在项目里的一些心得dubbo在项目里的一些心得dubbo在项目里的一些心得

    分布式框架Dubbo学习小案例

    学习dubbo和zookeeper的小案例, dubbo是阿里巴巴公司生产的一个rpc实现框架, rpc是远程过程调用协议, 也就是一个项目调用另一个项目中的方法.数据通过网络传输.

    dubbo学习笔记.pptx

    本文适合但不限于软件开发人员阅读。本文档能够使阅读者对dubbo的整体架构和原理有一个宏观且全面的了解,内容主要对dubbo的发展历史、架构组成、工作原理、应用场景等进行了介绍。

    dubbo2.0-源码阅读

    学习dubbo中的一些总结 !

    Dubbo.docx

    适合快速了解dubbo的小白,大佬绕过,就是简单地总结一下自己不会的,一些常见的dubbo比较容易遗漏的学习笔记,供大家学习,让自己方便记忆。

    dubbo+zk 分发全套教程 附两套实战项目(40G)

    --第05章选举模式和ZooKeeper的集群安装---第06章使用ZooKeeper原生JavaAPI进行客户端开发---第07章ApacheCurator客户端的使用---第08章Dubbo入门到重构服务---第09章分布式锁---第10章课程总结---project.zip---zk_...

    分布式服务框架dubbox学习总结

    分布式服务框架dubbox学习总结

    Java面试学习总结资料分享

    Java面试学习总结资料分享: java核心基础,IO java多线程和高并发 java集合框架 JVM 计算机网络 : TCP UDP HTTP webSocket Mysql+Mybatis相关知识 Spring +Spring Boot rabbitMQ + Redis Netty Dubbo

    java面试学习指南全集.zip

    总结Dubbo.md 总结Java基础.md 总结Java多线程.md 总结Java集合.md 总结JVM.md 总结Mybatis.md 总结MySQL.md 总结Redis.md 总结RocketMQ.md 总结Spring.md 总结计算机网络.md linux-基础.md 京东所有问题汇总.md ...

    30、整合Dubbo+Zookeeper.pdf

    看B站视频项目总结的系列文档,仅供个人学习使用

    想学习的看过来了spring4.0、springboot、springcloud详细视频课程(硅谷)

    12.硅谷学习_SpringCloud_SpringCloud_VS_Dubbo区别对比 13.硅谷学习_SpringCloud_SpringCloud功能域和官网资料介绍 14.硅谷学习_SpringCloud_SpringCloud国内使用情况 15.硅谷学习_SpringCloud_Rest微服务案例-...

    分布式微服务学习总结——分布式微服务概述

    最近刚看完springcloud、dubbo的学习视频,但感觉不是那么扎实,所以打算写一个系列的博客来巩固自身所学。 当然有些内容是参考了别的博客,毕竟我也是初探分布式微服务的,并不是所谓的大神,只是一个新手在初探...

    线上学习第一周总结

    线上的郑老师是一位经验丰富,技术精湛的大佬,第一个星期,就安排上了四个知识点的学习:docker ,nginx,spring boot和dubbo以及zookeeper。docker 主要是用于软件运行的环境的统一,Nginx主要是用于解决大并发时...

    【重磅】史上最全的阿里云分享的云原生技术学习资料合集(120份).zip

    从 2019 到 2020,Apache Dubbo 年度总结与展望 从代码到部署,云原生应用 DevSecOps 实践 攻克痛点:如何保证复杂微服务架构下的数据一致性 构建安全可靠的微服务 Nacos 在颜铺 SaaS 平台的应用实践 函数计算最佳...

    springboot知识点整理

    学习尚硅谷视频整理的文档 Spring Boot 1 1 Spring Boot入门 4 1.1 简介 4 1.2 微服务(martin fowler发表了一篇文章) 5 1.3 环境约束 7 1.4 第一个Spring Boot项目(jar):HelloWorld 8 1.5 入门案例详解 11 ...

    leetcode题库-Learning-Summary:学习总结

    leetcode题库 一 二 三 四 五 六 七 八 九 Java基础 JavaWeb Java进阶 ...对目前所做的题目总结,不定时更新。...排序算法总结 链表算法总结 系统设计类总结 ...[Dubbo] [Netty]

    【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识.rar

    JavaGuide 【Java学习+面试指南】 一份...数据通信(消息队列、Dubbo ... ) 网站架构 面试指南 备战面试 常见面试题总结 面经 工具 Git Docker 资源 书单 Github榜单 Java基础 Java 基础知识回顾 Java 基础知识疑难点/

Global site tag (gtag.js) - Google Analytics