干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充
前言
不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。
如何找到孙帅本人
本文内容整理自《孙哥说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

相关文章:
干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充
前言 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。 如…...
深度学习初探
1.深度学习模型训练过程 1)数据(数据清洗标注) 2)模型(模型的构建和初始化) 3)损失(前向传播的过程,得到模型的输出和真实标签的差异值,称之为损失&#x…...
nn.BCELoss与nn.CrossEntropyLoss
BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary CrossEntropyLoss的缩写,BCELoss是CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntropyLoss可以用于二分类,也可以用于多分类…...
CSDN浏览如何解决
一、对于平时我们苦恼csdn数据不够好看 当面试等各个场合需要我们装*或者秀技术无法拿出亮眼的时候,刚好我闲时间编译的在线模块适合你 二、如何操作(虚拟平台我已给大家放到最后直接使用即可) 重点:pc端必须拥有python环境 win…...
web前端开发小知识
当今互联网技术迅猛发展,web前端开发也成为了非常热门的职业之一。作为一个web前端开发者,不仅需要掌握各种前端开发技术,还需要了解一些小技巧和小知识。下面,我们将介绍一些web前端开发小知识,希望对你的工作有所帮助…...
Java泛型的简单认识
泛型的认识 自定义泛型,定义了String类型,随后这个泛型就是String类型 于是他的方法都是字符串的类型 泛型接口 泛型方法 所有车可以进行比赛,定义了一个BMW和BENZ两个车类,都继承car,当使用泛型的 如果你顶一个狗对象…...
视频转化为图片或灰度视频
1.视频转化为图片 import cv2video_pathr"D:\Dataset\video/7.mp4" capturecv2.VideoCapture(video_path) # print(capture.get(5))if capture.isOpened():ret,imgcapture.read()index0while ret:if index%200:imgidr"D:\Dataset\image/6/""%07d&quo…...
【动态规划刷题 2】使⽤最⼩花费爬楼梯 解码⽅法
使⽤最⼩花费爬楼梯 746 . 使用最小花费爬楼梯 链接: 746 . 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 …...
Python的基本语法
“有人说,写python就像是坐在一个没有安全带的车上, 我认为这个说法很欠妥当, 应该是一辆没有外壳和座椅, 只有发动机和轮子的车, 并且车上摆满了轮子” python既然是作为一个工具,那么就不需要去深入…...
Kubernetes那点事儿——存储之存储卷
Kubernetes那点事儿——存储之存储卷 前言一、K8s数据卷一、临时存储卷emptyDir二、节点存储卷hostPath三、网络存储NFS 前言 在K8s中用Volume为容器提供了外部的存储能力。 Pod需要设置卷来源(spec.volume)和挂载点(spec.containers.volumeM…...
Go语言中‘String’包中的‘Cut‘函数的实现
Go语言中‘String’包中的’Cut’函数的实现 Cut函数用于在字符串**‘s’中查找子串’sep’,并将字符串’s’在子串 ‘sep’ 第一次出现的位置分割成两部分:before和after** package main import("fmt" "strings" ) func main(…...
【JAVASE】顺序和选择结构
⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 顺序和选择 1. 顺序结构2. 分支结构2.1 …...
Oracle恢复删除的数据
不下心删除了生产库的数据或者不小心删除了一部分数据,如何恢复找回。 Oracle恢复删除数据的方法 方案一 利用oracle提供的闪回方法进行数据恢复,适用于delete删除方式 首先获取删除数据的时间点: select * from v$sql where sql_text l…...
(无人机方向)ros小白之键盘控制无人机(终端方式)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一:配置pycharm的ros开发环境二:核心代码讲解三 效果演示XTDrone 四 完整代码 前言 ubuntu 18.04 pycharm ros melodic 做一个在终端中…...
【python学习笔记】argparse --- 命令行选项、参数和子命令解析器
argparse 是 Python 的标准库中的一个模块,用于解析命令行参数。它提供了一种简单而灵活的方式来处理命令行输入,并生成易于使用的帮助文档。 使用 argparse 模块可以轻松地定义命令行参数和选项,并自动生成用法帮助和错误消息。示例&#x…...
【Java框架】RPC远程调用
RPC架构 一、RPC概述 RPC(Remote Procedure Call)叫作远程过程调用,它是利用网络从远程计算机上请求服务,可以理解为把程序的一部分放在其他远程计算机上执行。通过网络通信将调用请求发送至远程计算机后,利用远程计…...
云原生全栈体系(一)
云平台核心 第一章 为什么用云平台 环境统一按需付费即开即用稳定性强 一、国内常见云平台 阿里云、百度云、腾讯云、华为云、青云… 二、国外常见云平台 亚马逊 AWS、微软 Azure … 三、公有云 购买云服务商提供的公共服务器 公有云是最常见的云计算部署类型。公有云资…...
【【51单片机直流电机调速】】
学会电机调速,掌握中国速度 PWM的生成方法 先用户设定一个比较值,然后计数器定时自增。 当计数器<比较值,输出0 当计数器>比较值,输出1 main.c #include <REGX52.H> #include"delay.h" #include"…...
【Spring Boot】
目录 🍪1 Spring Boot 的创建 🎂2 简单 Spring Boot 程序 🍰3 Spring Boot 配置文件 🍮3.1 properties 基本语法 🫖3.2 yml 配置文件说明 🍭3.2.1 yml 基本语法 🍩3.3 配置文件里的配置类…...
使用docker 部署自己的chatgpt
直接docker部署 docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEYyour_api_key chenzhaoyu94/chatgpt-web:latestDocker compose部署 version: 3services:app:image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可ports…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
