展开

关键词

dubbodubbo SPI

常出现的地方有日志门面接口实现类加载、Spring SPI、JDK SPI、dubbo SPI、hadoop、solr cloud、elasticjob等,这里主要介绍下JDK SPI和dubbo SPI1 getEncoder(String encodingName);public abstract Decoder getDecoder(String encodingName);其中有一种提供者的编解实现为 2. dubbo的SPI机制dubbo中使用了大量的SPI,如rpc协议(Protocol),过滤器(Filter),序列化(Serialization),底层传输方式(Transporter),代理工厂 在ExtensionLoader的注释上说明了其在jdk spi上做的几点改进:自动注入关联扩展点。 总结这里介绍了jdk spi和dubbo spi的相应机制,通过spi机制极大地提高了接口设计的灵活性,这也是dubbo能够达到高拓展性的一个基础。

27430

Dubbo 解析 —— Directory

前言由于明天还要加班(心疼自己一秒),之前答应过小伙伴每周更新一篇dubbo解析的,鉴于上次讲到了集群容错的总体架构,这次主要讲讲第一个关键词 directory,这个内容不多,比较适合这种时间比较紧的分享 .后面还会陆续分享dubbo解析系列,但是不止于dubbo.直入主题首先来看一下 directory接口的实现类,他主要有两个实现类,一个是 StaticDirectory,一个是 RegistryDirectory 其实这个也是道很好的面试题,他还是可以区分三种人 一种是停留在使用层面的,没看过的,因此他不会懂得这两个实现类 第二种是看过官网如下描述,因此认为directory的实现类都是动态变化的 Directory 代表多个 Invoker,可以把它看成 List,但与 List 不同的是,它的值可能是动态变化的,比如注册中心推送变更第三种则是有看过的,其实从 StaticDirectory中的 Static 主要用在服务对多注册中心的引用本文介绍的重点是 RegistryDirectory,首先来看看他的继承结构这个 NotifyListener中的 notify方法就是注册中心的回调,也就是它之所以能根据注册中心动态变化的根所在

43650
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年50元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Dubbo 解析 —— Cluster

    前言 今天是小长假的倒数第二天,本来国庆是要加班四天的,后来因为要有事要回家才得以幸免,但是后天上班之后都要搬砖搬到手脱皮是必须的了.但是再忙每周一篇解析的承诺都依然记得,dubbo系列写完了还有很多系列 解析这个系列的,按照学习曲线,制定出一个循序渐进学习的目录.另外鉴于也有一些朋友问到我 怎么看和 为什么看这两个老生常谈的问题.首先 怎么看这个问题,在今后的分析系列的内容中,我也力求能更多的把自己当时的思考思路向大家展示出来 ,然而看恰恰相反.之所以会有这个疑惑是因为你有两个问题一直得不到答案,1.看了到底有没有用 2.需要看到什么程度才能涨工资.你甚至希望有人给出一个标准,然后你才放心的头悬梁,锥刺股去学,在这两个问题没有得到肯定的回答之前 该类的是这么多实现类中最多的.代全部贴出来篇幅就太大了,我用一个流程图来告诉大家这个类是干什么的大家可以根据我这个流程图对照理一下思路,这三个判断也是很容易看出来的,比如URL中merger属性是否有值 我们来看看的实现这里就涉及到了 线程池,但是由于本篇篇幅会很大,所以线程池的会专门有个专题来讲,可以继续简书关注肥朝至于这个 execute方法是干嘛的,这个时候可以用上农日常工具推荐里面介绍的

    49450

    Dubbo解析 —— Router

    前言估算了一下, dubbo里面涉及的东西还是比较多的.比如谈到框架的时候,设计模式都是一个老生常谈的话题,再比如我们开发中我们不常用的一些概念, spi、 javassist,以及和zookeeper 相关的一些知识,比如 ZKClient的使用,这些和 dubbo关系很密切,但是这些假如我不做一些前戏铺垫就直接把贴出来,那真的没啥意义.因为看还是要有一些基础,所以我的目标是,即使看不懂, 解析-集群容错架构设计中提到这里就暂时不多做叙述ScriptRouter在 dubbo的测试用例中就有用到,这个类的不多,也就124行.引用官网的描述脚本路由规则 支持 JDK 脚本引擎的所有脚本 如果看过我前两篇dubbo解析dubbo解析-集群容错架构设计和dubbo解析-directory就明白,我的分析过程都是以 官方文档为依据,所以这个问题的答案自然也在官方文档.下面引用一段官网文档的描述所有配置最终都将转换为 同时这里分享一个 IDEA中 debug查看表达式内容的技巧,比如 router.getUrl()表达式的值,如下图所示从这里我们看到,此时实现类是 ConditionRouter,由于接下来的逻辑如果直接让大家看图可能不够清晰

    67860

    Dubbo 解析 —— LoadBalance

    前言终于到了集群容错中的最后一个关键词,也就是 LoadBalance(负载均衡),负载均衡必然会涉及一些算法.但是也不用太担心,算法这个词虽然高大上,但是算法也有简单和复杂之分.既然是解析类的文章 ,那么就有义务让看不懂代的看文章总结都能明白原理的义务.所以本篇尽量用一些简单的数学式子和流程图和大家一起梳理一下这些集群容错算法.为了方便大家找到前几篇dubbo集群容错的文章,这里做一下小的目录跳转 ,后面会再弄一篇专门的目录 dubbo解析-集群容错架构设计 dubbo解析-directory dubbo解析-router dubbo解析-cluster 插播面试题为了能够带着面试题去看文章 ,我把这个插播面试题的环节放在了前面比较显眼的位置 谈谈dubbo中的 负载均衡算法及特点 最小活跃数算法中是如何统计这个活跃数的 简单谈谈你对 一致性哈希算法的认识 直入主题我们还是按照惯例来看看接口的继承图下面就对这四种负载均衡策略依次解析 Android的同学一定不会陌生,因为在 LinearLayout布局中就有这个概念,在前端的CSS框架 Bootstrap的栅格和也有类似概念.说白了,这里说的权重就是用来控制这个随机的概率的,我们来看代实现

    57140

    dubbo研究(一)

    1. dubbo研究(一)1.1. dubbo启动加载过程我们知道,现在流行注解方式,用spring管理服务,dubbo最常用的就是@Reference和@Service了,那么我首先找到这两个实现的地方 可以看到实现方法以BeanPostProcessor结尾,看过spring的都知道,这是spring加载过程的一环,具体在哪个过程,可以异步我整理的知识架构之一https:www.processon.comviewlink5cb096e3e4b09a003b2f1972

    18510

    dubbo解析——Directory

    这个NotifyListener中的notify方法就是注册中心的回调,也就是它之所以能根据注册中心动态变化的根所在.上文中,Directory的doList方法,这是一个抽象方法,通过调用子类RegistryDirectory + for service + getConsumerUrl().getServiceKey() + on consumer + NetUtils.getLocalHost() + use dubbo

    21410

    dubbo解析——cluster

    registry + directory.getUrl().getAddress() + on the consumer + NetUtils.getLocalHost() + using the dubbo registry + directory.getUrl().getAddress() + on the consumer + NetUtils.getLocalHost() + using the dubbo 下面补充一下使用方法(网上基本没有使用方法的教程,楼主才疏学浅,花了几个小时才摸索出来): (1)consumer侧,提供合并merge方法 这里有几个步骤: a、在resources目录下,新建META-INF及dubbo item.getResult()); } return result; }}(2)将reference的cluster属性设置为mergeable,group设置为“*”,并且设置合并方法,如下: (3)同一套代, 接下来再看下:public Result invoke(final Invocation invocation) throws RpcException { 获取Directory中的invoker

    14010

    dubbo解析——Router

    从图中可以看出,他有三个实现类,分别是ConditionRouter,MockInvokersSelector,ScriptRouter

    13320

    Dubbo学习一

    首先,我们知道dubbo在以前都是基于zookeeper作为配置中心的,同时是建立在spring基础之上的。 因此,就需要思考一些问题: 首先dubbo是怎样和spring集成的,也即dubbo集成在spring上需要具备什么条件? 接着dubbo作为一个服务治理的微服务框架,那它的生产者和消费者与注册中心怎样进行交互的。 dubbo是基于spring的基础之上进行开发的RPC框架。 的入口--dubbo-config-spring。 registerApplicationListeners(registry); 进行bena的解析 BeanDefinition beanDefinition = super.parse(element, parserContext); 设置资

    19110

    dubbo学习二

    昨天我们已经知道dubbo的入口可以通过自定义标签找到DubboNamespaceHandler找到解析自定义标签的相关类了。 而我们知道实现Aware接口的Bean在被初始化之后,可以拿到一些对应的资。 获取配置资映射到dubbo.properties setExternalConfig(getConfigurations(getConfigFile(), environment)); 在Spring Environment里获取配置资映射到application.dubbo.properties setAppExternalConfig(getConfigurations(StringUtils.isNotEmpty url在dubbo中是非常重要的。一、组装过程:1.首先添加协议信息,如果协议为空,则默认为dubbo协议2.添加side信息信息3.将原来的一些相关的服务提供者信息的map添加到map。

    24930

    深度解剖dubbo

    -----------学习dubbo,能给你带来什么好处? -----------1.提升SOA的微服务架构设计能力   通过读dubbo是一条非常不错的通往SOA架构设计之路,毕竟SOA的服务治理就是dubbo首先提出来的,比起你去看市面上的SOA微服务架构的书籍 2.提升自己在部门团队的技术影响力   你所在的部门团队如果使用了dubbo框架,必然需要懂dubbo底层核心的人;如果你把dubbo的架构原理掌握好,一般出现dubbo的疑难杂症,只要你参与探讨和解决 ----------------------duboo底层核心知识点------------------------------tcp的单工、半双工、全双工、编、解、粘包、拆包。 参考实例:深度解剖dubbo http:www.roncoo.comcourseview90c28309c72d472ab2b58e3802faeba6

    597100

    Dubbo-从HelloWorld开始

    ,并在春节之际进入Apache孵化器,在开的道路上又猛跨一大步,其背后定然有我们值得学习借鉴的地方,更何况有阿里技术的背书开项目是很好的学习素材,希望借助学习Dubbo,了解序列化、分布式、网络通讯等方面的知识 Dubbo是Alibaba开的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。 鉴于Dubbo中,配置文件中的默认配置是multicast,但是我在运行的时候总是出现cant assign address的情况,所以改用zookeeper。 网上找了一份PDF版的阅读心得,如果有需要,下方留下你的邮箱如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力! 如果您想持续关注我的文章,请扫描二维,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。 ?

    43880

    Dubbo之Spring整合

    在解析标签的时候会调用 DubboNamespaceHandler#parse 方法,而真正的解析逻辑委托给内部的 DubboBeanDefinitionParser#parse 方法;补充部分关键代: 的xml标签解析流程就非常清晰了,如果你想通过XML配置的方式来使用dubbo,那么当你配置好xml之后,随着 Spring 的启动,就会自动解析dubbo对应的那些标签了。 注解启动注解是为了让我们摆脱繁琐的XML配置,但对代有一定侵入,高版本的dubbo和springboot整合其实非常方便,引入依赖之后只需要在启动类上添加 @EnableDubbo 注解即可。 至此,注解模式下,dubbo服务注册与引用流程已经很清晰了,具体的实现细节可以查看dubbo在springboot应用中的自动化配置也是通过一个 starter 来完成了,官方Git地址:dubbo-spring-boot-project那么,在自动化配置模式先,dubbo与springboot

    36810

    Dubbo解析——限流

    Dubbo限流Dubbo的限流作用于提供方。可以在高并发的情况,保证系统的稳定性、安全性。避免让系统被流量压垮,导致整体服务不可用。 实践提供者添加类似配置 添加filter及dubbo paramter,表示每tps.interval的时间间隔内,能执行tps个请求。 令牌桶算法Dubbo默认使用令牌桶算法实现限流。某段时间内,桶里面只能放进n个令牌,然后来一个请求就减少一个令牌,如果桶里面的令牌没有了,则不能继续执行请求。

    21810

    dubbo解析-详解cluster

    前言今天是小长假的倒数第二天,本来国庆是要加班四天的,后来因为要有事要回家才得以幸免,但是后天上班之后都要搬砖搬到手脱皮是必须的了.但是再忙每周一篇解析的承诺都依然记得,dubbo系列写完了还有很多系列 解析这个系列的,按照学习曲线,制定出一个循序渐进学习的目录.另外鉴于也有一些朋友问到我怎么看和为什么看这两个老生常谈的问题.首先怎么看这个问题,在今后的分析系列的内容中,我也力求能更多的把自己当时的思考思路向大家展示出来 ❈该类的是这么多实现类中最多的.代全部贴出来篇幅就太大了,我用一个流程图来告诉大家这个类是干什么的? 通常用于实时性要求较高的读操作,但需要浪费更多服务资。可通过 forks=2 来设置最大并行数。❈我们来看看的实现? ❈看看实现?

    27810

    Dubbo解析 —— Zookeeper 订阅

    前言上周写完了服务暴露总结之后发现遗漏了一个很重要的点,在dubbo解析-zookeeper连接中我们对面试高频题dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,那发布者和订阅者还能通信吗进行了解析 .知道dubbo会对zookeeper的信息进行一个本地的文件缓存.如果你只是简单的回答出这个本地的文件缓存,可能面试官会点到为止,但是如果你按照我那样从角度分析,甚至连缓存到哪个磁盘文件都一清二楚 其实坦白说,虽然我解析以面试题为切入,但是我在dubbo解析-zookeeper创建节点中也提到了,看并不是以面试为最终目的.因此,简书上关注肥朝,每周一篇dubbo解析,互相交流进步, 里面到处都是并发编程,所以面试喜欢问多线程这个真的不是在装逼,线程的意识还是很重要的,同时如果关注肥朝每周一篇dubbo解析(真不是套路),面试问到项目哪里用到了多线程例子再也不用担心了,把dubbo 里面的例子套一下妥妥的.dubbo在操作文件的时候还会对文件进行加锁,看要特别留心这些异常信息,方便出问题时快速定位(其实也是在粗暴式点题怎么看)更新完文件后,对比新旧的信息是否有变化,有则重新暴露服务写在最后欢乐的时间总是短暂的

    51470

    Dubbo解析 —— zookeeper连接

    前言上周的dubbo解析-远程暴露中讲解了远程暴露的大致过程,但是期间大家也发现了,这个过程涉及到了很多分支,比如 netty, zookeeper.当然设计模式就不说了,这个贯穿在整个框架的始终. demo,再逐个细节分析.因此我的每周一篇dubbo解析也尝试使用该种 先主体,后枝干的方式.由于 dubbo涉及到的知识体系(包括一些拓展)比较庞大,所以根据我的估算,以目前一周一篇的形式,到明年的更新不完的 (面试高频题) zookeeper的java客户端你使用过哪些 友情提示由于 服务暴露这一节的内容几乎是环环相扣的,比如本章节是在上一章节dubbo解析-远程暴露中的一个分支的细化讲解.因此不建议跳跃性阅读 .建议阅读本篇前先阅读以下几篇 dubbo解析-服务暴露原理 dubbo解析-本地暴露 dubbo解析-远程暴露 前期预热今天我们要讲的其实就是一行代.也就是getRegistry(originInvoker ,当你决心坚持去做一件事的时候,才会注意到,期间会遇到各种阻力和意外.这是dubbo解析的第九篇,也就是坚持周更超过两个月.正如前面所说,战斗才刚刚开始.我们下周见.鉴于本人才疏学浅,不对的地方还望斧正

    53050

    dubbo学习笔记----registry

    注册工厂 public interface RegistryFactory { Registry getRegistry(URL url); } ...

    38240

    dubbo解析-详解LoadBalance

    前言❈终于到了集群容错中的最后一个关键词,也就是LoadBalance(负载均衡),负载均衡必然会涉及一些算法.但是也不用太担心,算法这个词虽然高大上,但是算法也有简单和复杂之分.既然是解析类的文章 ,那么就有义务让看不懂代的看文章总结都能明白原理的义务.所以本篇尽量用一些简单的数学式子和流程图和大家一起梳理一下这些集群容错算法. ❈为了方便大家找到前几篇dubbo集群容错的文章,这里做一下小的目录跳转,后面会再弄一篇专门的目录:dubbo解析-集群容错架构设计dubbo解析-directorydubbo解析-routerdubbo 解析-cluster插播面试题为了能够带着面试题去看文章,我把这个插播面试题的环节放在了前面比较显眼的位置谈谈dubbo中的负载均衡算法及特点最小活跃数算法中是如何统计这个活跃数的简单谈谈你对一致性哈希算法的认识直入主题我们还是按照惯例来看看接口的继承图 看不懂代没关系,我讲一下他的思路,这部分代概括起来就两部分,一部分是活跃数和权重的统计,另一部分是选择invoker.也就是他把最小活跃数的invoker统计到leastIndexs数组中,如果权重一致

    43130

    扫码关注云+社区

    领取腾讯云代金券