干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

这篇具有很好参考价值的文章主要介绍了干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充,Dubbo专栏,dubbo

第一章

1:协议端口

	<!-- dubbo应用的名称 -->
    <dubbo:application name="dubbo-02-provider"/>
    <!-- protocol是协议的意思,这里采用是dubbo的协议,默认的端口号是20880 -->
    <dubbo:protocol name="dubbo" port="20880"/>

补充说明1:
显示指定Dubbo服务启动的端口号:一个服务器上起多个Provider都这样显示的指定port端口号的话,会造成端口号冲突。

解决方式:我们可以port设置为-1,服务启动时默认采用20880(dubbo协议默认端口),此端口被占用默认会+1,一直到加端口不占用为止。强烈建立端口号设置为-1

    <!-- protocol是协议的意思,这里采用是dubbo的协议,默认的端口号是20880 -->
    <dubbo:protocol name="dubbo" port="-1"/>

2:第一个程序运行过程浅析

从形象和概念上进行一个分析,源码后续在进行分析~

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充,Dubbo专栏,dubbo

解释说明1:

提供者里边我们编写了一个Service层之后,基xml里边的配置暴露Dubbo服务,真正将一个Service发布成一个Dubbo服务的是<dubbo:service/>这个标签。为暴露出来的服务齐了一个名字,指定了通信的协议和端口号。

消费者当中也配置了dubbo服务的名称。通过<dubbo:reference>指定了PRC的接口和对象id,并将此对象交由Spring工厂进行管理。同时也指定了所发布的提供者的UserService的URL。

消费者和提供者之间进行通信是跨越JVM实例通信的,是一种跨进程通讯,这种通讯方式一定是走网络通信的。所以,我们的URL当中包含了提供者暴露的Dubbo服务的IP、端口号、协议、具体的接口的全限定名称,它具体涨这个样子

    <dubbo:reference interface="com.suns.service.UserService" id="userService"  
    url="dubbo://192.168.8.1:20880/com.suns.service.UserService"/>

分析到这里,我们可以看到概念上,我们整个流程是通的。

3:两个问题

问题分析1:

为什么提供者提供了UserService的实现,在另外一个虚拟机的消费者当中可以记性调用呢?消费者当中调用的到底是什么?

并没有直接调用远端JVM实例当中的UserServiceImpl,实际上是调用的是UserServiceImpl的代理对象 Proxy,这个代理对象是在消费者的JVM实例当中的。这个对象是从消费者的JVM实例当中的Spring工厂获取的。比如:($Proxy20@4109)是基于JDK的动态代理的方式创建的,他是基于Proxy.newProcyInstance();

问题分析2:

代理的核心工作是什么呢?

代理设计模式在Java开发中是广泛使用的。代理仿佛就是一个伟大而又理想的中间商,让你更好的去访问后续的内容。消费者和实际的消费对象之间是割裂的,被代理对象所连接。

代理对象被Consumer实际调用,对consumer屏蔽了网络的通信过程(通信方式 协议 序列化),最后通过代理传递通信的数据。
通信必须得有对方的地址,所以代理对象当中必须得有一个URL

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充,Dubbo专栏,dubbo文章来源地址https://www.toymoban.com/news/detail-613601.html

到了这里,关于干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 干翻Dubbo系列第十五篇:Rest协议基于SpringBoot的规范化开发

    文章目录 一:Rest协议 1:协议概念 2:协议作用 二:搭建开发环境 1:父项目里边引入的新的版本内容 2:Api中的操作 3:Provider模块 4:Consumer模块 三:编码 1:API模块 2:Provider模块 3:Consumer模块         Rest协议就是我们我们一开始基于SpringBoot或者是SpringMVC开发说的Re

    2024年02月10日
    浏览(53)
  • Vue系列第四篇:Vue2 + Element开发登录页面

           Vue开发中Element是一个比较受欢迎的界面库,实际开发中Vue2搭配Element UI开发,Vue3搭配Element plus开发,今天就用Vue2 + Element来开发登录页面。 目录 1.Element UI介绍 1.1官网 1.2element-ui安装 2.开发环境准备 2.1core-js安装 2.2浏览器自动打开和关闭useEslint校验配置 2.3Element UI全局

    2024年02月16日
    浏览(49)
  • 【Spring进阶系列丨第四篇】学习Spring中的Bean管理(基于xml配置)

    在之前的学习中我们知道,容器是一个空间的概念,一般理解为可盛放物体的地方。在Spring容器通常理解为BeanFactory或者ApplicationContext。我们知道spring的IOC容器能够帮我们创建对象,对象交给spring管理之后我们就不用手动去new对象。 那么Spring是如何管理Bean的呢? 简而言之,

    2024年02月05日
    浏览(65)
  • 奇淫技巧系列第一篇:熟练使用Fetch一个干翻PostMan的顶级技巧

    不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利 按照如下的请求进行复制: 复制出来的东西如下: 接着我们拿着fetch的命令拿到控制台

    2024年02月09日
    浏览(45)
  • 11. Springboot集成Dubbo3(二)示例demo

    目录 1、前言 2、注册中心 3、快速开始 3.1、添加dubbo3依赖 3.2、dubbo3-api ​编辑 3.3、dubbo3-server 3.3.1、添加依赖 3.3.2、实现IUserService 3.3.3、添加配置文件application.properties 3.3.4、修改Application启动类 3.3.5、出错解决 3.4、dubbo3-portal 3.4.1、添加依赖 3.4.2、定义Controller 3.4.3、添加配置

    2024年02月20日
    浏览(46)
  • 第四篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas生物信息学领域应用

    生物信息学是一门将计算机科学和生物学相结合的跨学科领域,旨在利用计算机技术和统计学方法来处理、分析和解释生物学数据。在生物信息学研究中,研究人员处理的数据种类繁多,包括基因组数据、蛋白质数据、生物医学图像数据等。 Pandas 是一个基于 Python 编程语言的

    2024年03月09日
    浏览(91)
  • 第四篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:pyttsx3自动化脚本经典案例

    使用 pyttsx3 库创建自动化脚本有几个主要作用: 语音提示和反馈:通过将文本转换为语音输出,你可以为自动化脚本添加语音提示和反馈功能。这样,你可以通过语音提示告知用户脚本的进度、状态或结果,提供更直观和人性化的交互体验。 语音报告和通知:自动化脚本可

    2024年02月21日
    浏览(71)
  • 【Dubbo3云原生微服务开发实战】「Dubbo前奏导学」 RPC服务的底层原理和实现

    Dubbo是一款高效而强大的RPC服务框架,它旨在解决微服务架构下的服务监控和通信问题。该框架提供了Java、Golang等多语言的SDK,使得使用者可以轻松构建和开发微服务。Dubbo具备远程地址发现和通信能力,可通过Dubbo独有的身临其境的服务治理特验为主导,以提高开发人员的功

    2024年02月05日
    浏览(49)
  • Netty通信在中间件组件中的广泛使用-Dubbo3举例

    Netty是一个高性能异步IO通信框架,封装了NIO,对各种bug做了很好的优化解决。所以很多中间件底层的通信都会使用Netty,比如说:Dubbo3,rocketmq,ElasticSearch等。 比方说,我们使用dubbo作为rpc跨进程远程通信,其实底层使用的还是Netty客户端与服务端的交互。我们封装好dubbo,然

    2024年02月07日
    浏览(46)
  • 【Spring Boot 3】整合nacos + Dubbo3 的Spring cloud Alibaba项目

    在springboot3不再兼容jdk8的时候,随之而来的便是各种框架不兼容引发的bug,虽然各位框架的开发大佬在加班加点的更新适配,但能够创建一个适用并且不报错的项目依旧是一件耗时耗力的事情。 我们都知道在String Cloud项目中默认使用Feign组件进行服务间的通信,REST API的调用

    2024年03月22日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包