Dubbo服务导出到本地的方法


本篇内容主要讲解“Dubbo服务导出到本地的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Dubbo服务导出到本地的方法”吧!这样,就走到了Dubbo暴露服务的入口的方法。这也是Dubbo官方文档中提及的入口方法,参考 服务导出接下来研究一下 Dubbo 导出服务的过程。Dubbo 服务导出过程始于Spring容器发布刷新事件,Dubbo在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一部分是前置工作,主要用于检查参数,组装 URL。第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。第三部分是向注册中心注册服务,用于服务发现。下面将会对这三个部分代码进行详细的分析。服务导出的入口方法是ServiceBean的onApplicationEvent。onApplicationEvent 是一个事件响应方法,该方法会在收到Spring上下文刷新事件后执行服务导出操作。方法代码如下这个方法首先会根据条件决定是否导出服务,比如有些服务设置了延时导出,那么此时就不应该在此处导出。还有一些服务已经被导出了,或者当前服务被取消导出了,此时也不能再次导出相关服务。注意这里的 isDelay 方法,这个方法字面意思是“是否延迟导出服务”,返回 true 表示延迟导出,false 表示不延迟导出。但是该方法真实意思却并非如此,当方法返回 true 时,表示无需延迟导出。返回 false 时,表示需要延迟导出。与字面意思恰恰相反,这个需要大家注意一下。 前置工作主要包含两个部分,分别是配置检查,以及 URL 装配。在导出服务之前,Dubbo 需要检查用户的配置是否合理,或者为用户补充缺省配置。配置检查完成后,接下来需要根据这些配置组装 URL。在 Dubbo 中,URL 的作用十分重要。Dubbo 使用 URL 作为配置载体,所有的拓展点都是通过 URL 获取配置。这一点,官方文档中有所说明。下面的export方法会走到doExport()方法。以下是配置检查的相关分析,代码比较多,需要大家耐心看一下。下面对配置检查的逻辑进行简单的总结,如下:检测 dubbo:service 标签的 interface 属性合法性,不合法则抛出异常检测 ProviderConfig、ApplicationConfig 等核心配置类对象是否为空,若为空,则尝试从其他配置类对象中获取相应的实例。检测并处理泛化服务和普通服务类检测本地存根配置,并进行相应的处理对 ApplicationConfig、RegistryConfig 等配置类进行检测,为空则尝试创建,若无法创建则抛出异常配置检查并非本文重点,因此这里不打算对 doExport 方法所调用的方法进行分析(doExportUrls 方法除外)。在这些方法中,除了appendProperties方法稍微复杂一些,其他方法逻辑不是很复杂。因此,大家可自行分析。Dubbo 允许我们使用不同的协议导出服务,也允许我们向多个注册中心注册服务。Dubbo在doExportUrls方法中对多协议,多注册中心进行了支持。相关代码如下上面代码首先是通过loadRegistries加载注册中心链接,然后再遍历ProtocolConfig集合导出每个服务。并在导出服务的过程中,将服务注册到注册中心。我们先来看一下loadRegistr 香港云主机ies方法的逻辑。先可以打开看下该方法可以得到什么。ProtocolConfig主要封装了标签的信息,意思是使用Dubbo协议暴露服务。前置工作做完,接下来就可以进行服务导出了。服务导出分为导出到本地(JVM)和导出到远程。下面两个是url和local的具体值,因为Dubbo采用自适应拓展机制,exportLocal(URL url)中用到的protocol是自适应拓展,protocol的export方法会用到URL中protocol参数从而决定具体生成protocol的哪个实例,所以URL的protocol值可以关注下。下面分析下面这句代码。它是核心方法,分为两步。在 Dubbo 中,Invoker是一个非常重要的模型。在服务提供端,以及服务引用端均会出现Invoker。Dubbo 官方文档中对Invoker进行了说明,这里引用一下。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。这里面getInvoker方法创建了一个匿名Invoker对象,我理解是通过invoke实行远程调用时,会走wrapper.invokeMethod方法,而wrapper实际上是一个代理类,调用wrapper.invokeMethod最终会走proxy,也就是DemoService的sayHello方法。Wrapper创建比较复杂,可以参考 Dubbo中JavaAssist的Wrapper.getWrapper生成代理分析。到此,相信大家对“Dubbo服务导出到本地的方法”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: 怎么卸载电脑上的声卡驱动

这篇文章主要介绍了怎么卸载电脑上的声卡驱动,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法/步骤:1.打开电脑中的控制面板界面,随后选择卸载程序进入操作。2.弹出相关界面后,直接找到其中的re…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/30 12:22
Next 07/30 12:23

相关推荐