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

news2024/9/30 5:30:39

前言

不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。

如何找到孙帅本人

本文内容整理自《孙哥说Dubbo系列视频课程》,老师实力十分雄厚,B站搜孙帅suns可以找到本人,或者直接添加老师微信号suns45

第一章

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:第一个程序运行过程浅析

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

在这里插入图片描述

解释说明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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/804025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从源码分析Handler面试问题

Handler 老生常谈的问题了&#xff0c;非常建议看一下Handler 的源码。刚入行的时候&#xff0c;大佬们就说 阅读源码 是进步很快的方式。 Handler的基本原理 Handler 的 重要组成部分 Message 消息MessageQueue 消息队列Lopper 负责处理MessageQueue中的消息 消息是如何添加…

githack的安装步骤+一次错误体验

一.githack的安装步骤 1.要在Kali Linux上安装GitHack工具&#xff0c;您可以按照以下步骤操作&#xff1a; 打开终端并使用以下命令克隆GitHack存储库&#xff1a; git clone https://github.com/lijiejie/GitHack.git2.进入GitHack目录&#xff1a; cd GitHack3.安装依赖项…

『HarmonyOS』万物互联,分布式操作系统

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位喜欢写作&#xff0c;计科专业大二菜鸟 &#x1f3e1;个人主页&#xff1a;starry陆离 &#x1f552;首发日期&#xff1a;2022年7月5日星期二 &#x1f30c;上期文章&#xff1a;『首期文章』 &#x1f4da;订阅专栏&…

leetcode刷题(柠檬水找零、接雨水、宝石与石头、将数组和减半的最少操作次数、更新数组后处理求和查询、删除每行中的最大值、并行课程③)

目录 1、柠檬水找零 2、接雨水 3、宝石与石头 4、将数组和减半的最少操作次数 5、更新数组后处理求和查询 6、删除每行中的最大值 7、并行课程③ 1、柠檬水找零 class Solution:def lemonadeChange(self, bills: List[int]) -> bool:dollars [0, 0] # 美元数组&am…

每日一题——有序链表去重

题目 删除给出链表中的重复元素&#xff08;链表中元素从小到大有序&#xff09;&#xff0c;使链表中的所有元素都只出现一次。 例如&#xff1a;给出的链表为1→1→2,返回1→2。 给出的链表为1→1→2→3→3,返回1→2→3。 数据范围&#xff1a;链表长度满足 0≤n≤100&#…

深度学习训练营之DCGAN网络学习

深度学习训练营之DCGAN网络学习 原文链接环境介绍DCGAN简单介绍生成器&#xff08;Generator&#xff09;判别器&#xff08;Discriminator&#xff09;对抗训练 前置工作导入第三方库导入数据数据查看 定义模型初始化权重定义生成器generator定义判别器 模型训练定义参数模型训…

7.28

1.思维导图 2.qt的sever #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器类 #include<QTcpSocket> //客户端类 #include<QMessageBox> //对话框类 #include<QList> …

计组 [指令系统] 预习题目

PPT第5章 第2部分预习题目 预习内容及相关问题 什么是R,I,J型指令&#xff0c;它们的特点&#xff1f; &#xff08;二&#xff09;R型指令的数据通路 &#xff08;指令功能与其对应的逻辑结构&#xff09; 功能&#xff1a;R[rd] ← R[rs] op R[rt]&#xff0c;如&#xff1a…

React的UmiJS搭建的项目集成海康威视h5player播放插件H5视频播放器开发包 V2.1.2

最近前端的一个项目&#xff0c;大屏需要摄像头播放&#xff0c;摄像头厂家是海康威视的&#xff0c;网上找了一圈都没有React集成的&#xff0c;特别是没有使用UmiJS搭脚手架搭建的&#xff0c;所以记录一下。 海康威视的开放平台的API地址&#xff0c;相关插件和文档都可以下…

行列转换.

表abc&#xff1a; &#xff08;建表语句在文章末尾&#xff09; 想要得到&#xff1a; 方法一 with a as(select 年,产 from abc where 季1), b as(select 年,产 from abc where 季2), c as(select 年,产 from abc where 季3), d as(select 年,产 from abc where 季4) selec…

图像识别概述

图像识别的过程 图像识别技术的过程分以下几步&#xff1a; 1. 信息的获取&#xff1a; 是指通过传感器&#xff0c;将光或声音等信息转化为电信息。也就是获取研究对象的基本信息并通过某种方法将其转变为机器能够认识的信息。 2. 预处理&#xff1a; 主要是指图像处理中的…

行业追踪,2023-07-28

自动复盘 2023-07-28 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Android中绘制的两个天气相关的View

文章目录 一、前言二、降雨的代码三、风向代码 一、前言 开发天气相关软件时候&#xff0c;做了两个自定义View&#xff0c;这里进行记录&#xff0c;由于涉及类较多&#xff0c;这里仅包含核心代码&#xff0c;需要调整后才可以运行&#xff0c;自定义View范围仅包含网格相关…

机器学习伦理:探讨隐私保护、公平性和透明度

文章目录 &#x1f340;引言&#x1f340;隐私保护&#x1f340;公平性&#x1f340;透明度&#x1f340;结论 随着机器学习技术的不断发展和应用&#xff0c;我们必须面对伦理问题&#xff0c;以确保这些智能系统的发展和使用是符合道德和法律规范的。本文将就机器学习伦理的关…

Revit二次开发 插件加密、打包、发布、授权全套教程

目录 代码加密及授权 添加授权工具引用 添加授权验证代码段 使用VMProtect进行代码保护 代码加密标记 代码加密 发布产品 软件打包 软件发布 相关文件的获取地址 本教程基于mxbim.com所提供的服务。 Revit二次开发 插件加密、打包、发布、授权全套教程 本网站(www.…

实锤研究,ChatGPT能力掉线!

早在一个多月前&#xff0c;ChatGPT性能下降的传闻便开始在网上流行&#xff0c;不少订阅了Plus版的用户纷纷表示&#xff0c;感觉ChatGPT在经历了几轮更新后开始降智&#xff0c;甚至有时反应速度也会出现问题。而如今&#xff0c;这一传闻终于得到了证实。 就在本周&#xf…

如何学好Java并调整学习过程中的心态:学习之路的秘诀

文章目录 第一步&#xff1a;建立坚实的基础实例分析&#xff1a;选择合适的学习路径 第二步&#xff1a;选择合适的学习资源实例分析&#xff1a;参与编程社区 第三步&#xff1a;动手实践实例分析&#xff1a;开发个人项目 调整学习过程中的心态1. 不怕失败2. 持续学习3. 寻求…

ORA-38760: This database instance failed to turn on flashback database

早晨接一个任务&#xff0c;使用rman备份在虚拟化单机上恢复实例&#xff0c;恢复参数文件、控制文件和数据文件都正常&#xff0c;recover归档时报错如下&#xff1a; Starting recover at 2023-07-28 10:25:01 using channel ORA_DISK_1 starting media recovery media reco…

实时云渲染技术:VR虚拟现实应用的关键节点

近年来&#xff0c;虚拟现实&#xff08;Virtual Reality, VR&#xff09;技术在市场上的应用越来越广泛&#xff0c;虚拟现实已成为一个热门的科技话题。相关数据显示&#xff0c;2019年至2021年&#xff0c;我国虚拟现实市场规模不断扩大&#xff0c;从2019年的282.8亿元增长…

攻防世界-Reverse-simple-unpack

题目描述&#xff1a;菜鸡拿到了一个被加壳的二进制文件 1. 思路分析 提示很清楚了&#xff0c;加壳的二进制文件&#xff0c;正好对这一块知识点是残缺的&#xff0c;先了解下加壳到底是什么 通过这段描述&#xff0c;其实加壳的目的是使得逆向起来更难了&#xff0c;因此这里…