软考:CORBA架构
CORBA过时了吗
CORBA指南
个人小结:
IPC,进程间通信,Socket应用在不同机器之间的通信
RPC是一种技术思想而非一种规范
- 但站在八九十年代的当口,简单来说,就是我在本地调用了一个函数,或者对象的方法,实际上是调用了远程机器上的函数,或者远程对象的方法,但是这个通信过程对于程序员来说是透明的,即达到了一种位置上的透明性。
RPC,远程过程调用中间件。
- 数据格式和编码不同
- 以前没有跨平台的语言
所以后面出现了CORBA架构,但是随着Java的出现,EJB框架,自身就支持了RPC调用。
RPC可以解决后台的瓶颈问题,就是说传统的RPC,需要特定的框架来支持。
说白了,就是如何传递对象,后面使用XML传递,再后来,使用Web Service SOAP协议来描述,通过HTTP、TCF或者传输协议进行传递。
CORBA
客户端和服务端架构下,分布式调用的产物。
ORB 对象请求代理,处理通信过程
IDL:接口描述语言,共享接口定义,通过编译工具可以将IDL文件编译成多种语言的客户端stub代码和服务端skeleton代码。
分布式对象解决方案,解决的问题是什么?
分布式对象解决方案主要解决的问题包括:
-
跨平台通信:分布式对象技术允许不同硬件平台、操作系统和编程语言之间的通信。它通过中间件来屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使得应用软件能够比较平滑地运行于不同平台上。
-
对象间的方法调用:在分布式系统中,对象可能分布在不同的地址空间和网络节点上。分布式对象解决方案允许这些对象之间进行方法调用,就像它们在同一个进程中一样。
-
数据一致性:在分布式系统中,由于数据分布在不同的节点上,保证数据的一致性是一个挑战。分布式对象解决方案通过事务管理和锁机制来确保数据的一致性。
-
容错性和可靠性:分布式系统可能面临节点故障的问题。分布式对象解决方案通过冗余和故障转移机制来提高系统的容错性和可靠性。
-
扩展性:随着数据量的增长,系统需要动态扩展以适应不断增长的需求。分布式对象解决方案支持通过添加更多的节点来扩展系统,从而提高存储容量和处理能力。
-
安全性:分布式系统需要保护数据免受未授权访问和篡改。分布式对象解决方案提供数据加密和访问控制等安全功能来保护数据的安全性。
-
分布式事务处理:在跨多个数据库或服务的事务操作中,需要保证事务的一致性、隔离性、持久性和原子性。分布式对象解决方案提供了如两阶段提交(2PC)、三阶段提交(3PC)和Try-Confirm-Cancel(TCC)等分布式事务解决方案。
-
分布式锁:为了解决分布式系统中的并发问题,确保在多个节点上同时访问共享资源时的数据一致性和安全性,分布式对象解决方案提供了分布式锁机制,如基于Redis或Zookeeper的分布式锁。
-
性能优化:分布式对象存储解决方案关注系统的性能优化,包括网络延迟、磁盘I/O、CPU利用率等方面的优化,以提高系统的整体性能和响应速度。
-
元数据管理:在分布式对象存储中,元数据的管理至关重要,因为它包含了关于对象的信息,如名称、大小、创建时间、修改时间以及存储位置等。高效的元数据管理系统能够快速响应客户端的查询请求,并指导数据访问路径,提高数据访问的效率和准确性。
这些解决方案使得分布式系统能够更加灵活、可扩展、可靠和安全地处理大规模数据和复杂的计算任务。
Java语言本身跨平台,Java RMI只专注于一种语言的解决方案,编写简单。无需CORBA那样为了适配各种语言而引入IDL。 这句话怎么理解?
这句话主要在比较Java RMI(Remote Method Invocation)和CORBA(Common Object Request Broker Architecture)两种分布式计算技术,强调了Java RMI在特定场景下的优势。下面是对这句话的详细解释:
Java语言本身跨平台:
Java语言设计之初就提出了“一次编写,到处运行”(Write Once, Run Anywhere,简称WORA)的理念。这意味着用Java编写的程序可以在不同的操作系统上运行,而无需修改代码。这是因为Java程序在运行时会被编译成字节码(.class文件),这些字节码可以在任何安装了Java虚拟机(JVM)的平台上执行。
Java RMI专注于Java语言:
Java RMI是一种Java特有的技术,它允许Java程序调用运行在其他Java虚拟机上的Java对象的方法。由于RMI是为Java语言设计的,因此它不需要像CORBA那样支持多种编程语言。
编写简单:
Java RMI的API相对简单,Java开发者可以比较直观地使用它来实现远程方法调用。开发者只需要继承java.rmi.Remote接口并实现相应的远程接口,然后使用java.rmi.server.UnicastRemoteObject类来导出远程对象,就可以进行远程调用了。
无需CORBA那样的IDL:
CORBA是一种更为通用的分布式计算框架,它支持多种编程语言。为了实现不同语言之间的互操作性,CORBA引入了接口定义语言(Interface Definition Language,简称IDL)。IDL是一种独立于编程语言的接口描述语言,它定义了远程对象的接口。开发者需要使用IDL来定义接口,然后使用IDL编译器生成不同语言的存根代码(Stubs和Skeletons),以实现不同语言之间的通信。
相比之下,Java RMI不需要IDL,因为它只关注Java语言。Java RMI在编译时自动生成远程对象的存根代码,这简化了开发过程,减少了开发者需要编写的代码量。
总结来说,这句话强调了Java RMI在Java语言环境下的优势:它利用了Java的跨平台特性,提供了一种简单直观的方式来实现Java程序之间的远程方法调用,而无需像CORBA那样为了支持多种语言而引入复杂的IDL机制。这使得Java RMI在纯Java环境中的分布式计算变得更加容易和高效。
RPC和目前的Web Rest关系对比
RPC(Remote Procedure Call,远程过程调用)是一种允许一个程序(客户端)通过网络向另一个程序(服务器)请求服务的协议。它使得开发者可以像调用本地函数一样调用远程服务器上的函数或方法,而无需关心底层网络通信的细节
。
HTTP + JSON + REST是一种常见的Web服务实现方式。HTTP是一种应用层通信协议,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而REST(Representational State Transfer)是一种软件架构风格,用于设计网络服务。RESTful API通常使用HTTP动词(如GET、POST、PUT、DELETE)来操作资源,并通过URI(Uniform Resource Identifier)来标识资源的位置
。
RPC和HTTP + JSON + REST的关系和区别主要体现在以下几个方面:
通信协议:
RPC可以使用多种传输协议,如TCP、UDP、HTTP等,而HTTP + JSON + REST主要基于HTTP协议。
RPC的通信协议可以自定义,而HTTP是一种标准化的协议。
数据格式:
RPC可以使用多种数据格式,如XML、JSON、Protocol Buffers等,而HTTP + JSON + REST通常使用JSON作为数据交换格式。
JSON因其轻量级和易于使用,成为RESTful API最常用的数据格式。
服务契约:
RPC通常需要一个接口定义语言(IDL)来定义服务接口,而RESTful API的服务契约是通过HTTP方法和URL来定义的。
RESTful API的接口设计遵循REST原则,强调资源的概念,而RPC更侧重于函数或操作的调用。
跨语言能力:
RPC框架如gRPC支持多种语言,可以实现跨语言的服务调用,而RESTful API由于基于HTTP和JSON,也具有很好的跨语言能力。
开发和使用:
RPC框架通常提供了客户端存根和服务器端骨架的生成,简化了远程调用的开发。例如,gRPC使用Protocol Buffers作为其接口定义语言,并能生成多种语言的存根代码
。
RESTful API的开发通常更直观,因为它基于HTTP方法和资源的概念,易于理解和使用。
适用场景:
RPC适合于需要高度抽象和封装的分布式系统内部通信,可以提供更丰富的远程调用功能。
RESTful API适合于构建面向公众的Web服务,因为它简单、易于理解和使用,且易于与HTTP缓存、代理等Web基础设施集成。
总的来说,RPC和HTTP + JSON + REST都是实现分布式系统和服务导向架构的有效手段,选择使用哪种技术取决于具体的应用场景和需求。RPC提供了更多的控制和灵活性,而HTTP + JSON + REST则以其简单性和广泛的适用性而流行。
相关文章:
软考:CORBA架构
CORBA过时了吗 CORBA指南 个人小结: IPC,进程间通信,Socket应用在不同机器之间的通信 RPC是一种技术思想而非一种规范 但站在八九十年代的当口,简单来说,就是我在本地调用了一个函数,或者对象的方法&…...
qt QSaveFile详解
QSaveFile 是 Qt 提供的一个类,用于安全地保存文件。它的主要特点是在写入文件时确保数据完整性,以防止文件损坏。使用 QSaveFile,您可以创建一个临时文件,并在成功写入后将其重命名为目标文件,这样可以避免在写入过程…...
【Linux】线程池详解及其基本架构与单例模式实现
目录 1.关于线程池的基本理论 1.1.线程池是什么? 1.2.线程池的应用场景: 2.线程池的基本架构 2.1.线程容器 2.2.任务队列 2.3.线程函数(HandlerTask) 2.4.线程唤醒机制 3.添加单例模式 3.1.单例模式是什么&…...
运输层知识点汇总3
目录 前言 二、为什么在TCP首部中有一个首部长度字段,而UDP的首部就没有这个字段? 三、一个TCP报文段的数据部分最多为多少字节?为什么?如果用户要传送的数据的字节长度超过TCP报文段中的序号字段可能编出的最大序号࿰…...
浔川社团官方联合会提前入驻
近期,我们浔川社团官方发现文章再次被不明网站转发。这一情况引起了我们的高度警觉和深刻反思。我们一直致力于为大家提供高质量、有价值的内容,用心创作每一篇文章,以展现我们社团的风采和理念。然而,这些不明网站未经授权的转发…...
比例数据可视化(Python实现板块层级图绘制)——Instacart Market Basket Analysis
【实验名称】 实验一:绘制板块层级图 【实验目的】 1. 掌握数据文件读取 2. 掌握数据处理的方法 3. 实现板块层级图的绘制 【数据介绍】Instacart Market Basket Analysis 1. 数据说明 数据共有300 0000orders, 20 0000users, …...
C++研发笔记8——C语言程序设计初阶学习笔记6
在第一部分——课前准备的学习中,我就提到了学习C语言的过程中,练习是必不可少的环节,所以本篇笔记我们来进行记录我们学习《C语言程序设计初阶》阶段的第一篇练习文章。 题目一 下面哪个不是C语言内置的数据类型: A.char B.d…...
0softmax和背后的最大熵(极大似然法)
只要无穷阶矩都一样,那么两个分布一定一样。 整理思路:1、设定样本的概率模型与目标概率模型一致(两个模型特性函数一致)建立服从伯努利分布的变量(此处需要理解样本空间及变量的关系)对两个模型进行降维&a…...
6,000 个网站上的假 WordPress 插件提示用户安装恶意软件
黑客使用窃取的凭证感染 WordPress 网站,并向其发送虚假插件,通过虚假的浏览器更新提示向最终用户发送恶意软件和信息窃取程序。 该恶意活动基于ClickFix假浏览器更新恶意软件的新变种,自 2024 年 6 月以来已使用假 WordPress 插件感染了超过…...
最新Compose环境版本
1.gradle gradle 8.10.2 插件版本 8.7.1 Android Studio Ladybug | 2024.2.1 Patch 1 2.model 下 的 build.gradle.kts plugins {alias(libs.plugins.android.application)alias(libs.plugins.kotlin.android)alias(libs.plugins.kotlin.compose)id("kotlin-kapt&qu…...
流媒体协议.之(RTP,RTCP,RTSP,RTMP,HTTP)(一)
闲着没事做,记录一下开发项目用过的协议,项目中,大多是是实时显示播放的,通过私有协议,传输到上位机,实时播放,延时小于200ms,仿照这些协议,定义的数据格式。如果用这些协…...
【智能大数据分析 | 实验四】Spark实验:Spark Streaming
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML&a…...
es实现自动补全
目录 自动补全 拼音分词器 安装拼音分词器 第一步:下载zip包,并解压缩 第二步:去docker找到es-plugins数据卷挂载的位置,并进入这个目录 第三步:把拼音分词器的安装包拖到这个目录下 第四步:重启es 第…...
【日志】Unity3D模型导入基本问题以及浅谈游戏框架
2024.10.22 真正的谦逊从来不是人与人面对时的谦卑,而是当你回头看那个曾经的自己时,依旧保持肯定与欣赏。 【力扣刷题】 暂无 【数据结构】 暂无 【Unity】 导入外部模型资源报错问题 在导入外部资源包的时候一般都会报错,不是这个资源模…...
1.8K Star,简洁易用 Web 端创意画板
Hi,骚年,我是大 G,公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 在数字创作的时代,找到一款功能强大且易于使用的绘图工具…...
WPF中的<Style.Triggers>
Triggers介绍 在XAML中,Triggers是Style元素的一部分,用于定义在特定条件触发时应用的样式更改。这些触发器可以响应各种事件和属性值的变化,例如控件的状态变化(如鼠标悬停、焦点状态)、数据绑定值的变化等。 以下是…...
pod相关面试题总结(持续更新)
1:当一个Pod有多个容器时,如果连接到指定的容器? #查看当前空间下的pod [rootmaster210 pods]# kubectl get pods NAME READY STATUS RESTARTS AGE linux85-nginx-tomcat 2/2 Running 0 63s [rootmaster210 …...
Matlab学习03-符号的替换及运算(接上一篇)
在上一篇的学习中,我知道了符号变量的声明👇 Matlab学习02-matlab中的数据显示格式及符号变量-CSDN博客 接下来开始学习符号运算相关的内容,并学习最为核心的matlab程序设计。之前的学习都是为了程 序设计做铺垫,程序设计又是为了…...
Windows中API-磁盘管理笔记
硬盘是由一组堆积的盘片组成类似于圆柱体组成,每个盘片的数据都以电磁方式存储在同心圆或轨道中,轨道的最小可寻址单元是扇区;基本磁盘:最常用于windows的存储类型,指的是**包含分区的磁盘。**在基本磁盘上只能创建和删…...
010 操作符详解 上
写代码的实质是在写方法体 —— 刘铁猛 操作符概览 操作符本质 操作符的本质是函数的“简记法” 操作符 简写Add函数 34 等同Add(3,4)操作符不能脱离与它关联的数据类型可以说操作符就是与固定数据类型关联的一套算法的简记法 如下图所示算法的简记法 操作符的优先级 可以使…...
【贪心算法】(第十篇)
目录 加油站(medium) 题目解析 讲解算法原理 编写代码 单调递增的数字(medium) 题目解析 讲解算法原理 编写代码 加油站(medium) 题目解析 1.题目链接:. - 力扣(LeetCode&a…...
029.爬虫专用浏览器-抓取跨域#document下的内容
一、iframe下的#document是什么 #document 是一个特殊的 HTML 元素,表示 <iframe> 元素内部的文档对象。当你在 HTML 页面中嵌入一个 <iframe> 元素时,浏览器会创建一个新的文档对象来表示 <iframe> 内部的内容。这 个文档对象就是 #…...
SIP 业务举例之 Call Hold(呼叫保持)
目录 1. Call Hold(呼叫保持)简介 2. 信令流程 呼叫保持 呼叫恢复开始 恢复通话完成 3. 本例 Call Hold 建立了几个 Dialog? 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历,模拟面试,学习…...
eks节点的网络策略配置机制解析
参考链接 vpc-cni网络策略最佳实践,https://aws.github.io/aws-eks-best-practices/security/docs/network/#additional-resourcesvpc cni网络策略faq,https://github.com/aws/amazon-vpc-cni-k8s/blob/0703d03dec8afb8f83a7ff0c9d5eb5cc3363026e/docs/…...
【C】用c写贪吃蛇
1.输入正确的账号密码及其用户名,登录成功进入贪吃蛇游戏界面, 2.随机生成蛇头★、食物▲的位置(x,y),并使用□打印地图 3.使用w s a d按键,完成蛇头的上下左右移动 4.蛇头碰撞到食物后,吃下食物变成蛇身的一部分●…...
qt QLineEdit详解
一、概述 QLineEdit 是 Qt 框架中用于创建单行文本输入框的类。它非常适合用于接收用户输入,例如用户名、密码或其他简单的文本信息。它提供了许多有用的编辑功能,支持多种输入模式和文本限制,并支持撤销、重做、剪切、粘贴以及拖放等功能。…...
DevEco Studio的使用 习题答案<HarmonyOS第一课>
一、判断题 1. 如果代码中涉及到一些网络、数据库、传感器等功能的开发,均可使用预览器进行预览。 正确(True)错误(False) 错误(False)回答正确 2. module.json5文件中的deviceTypes字段中,配置了phone,tablet,2in1等多种设备类型,才能进行多设备预览。 正确(True)…...
鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题
1. TCP数据传输粘包简介 在本系列的第6篇文章《鸿蒙网络编程系列6-TCP数据粘包表现及原因分析》中,我们演示了TCP数据粘包的表现,如图所示: 随后解释了粘包背后的可能原因,并给出了解决TCP传输粘包问题的两种思路,第一…...
【华为路由】OSPF多区域配置
网络拓扑 设备接口地址 设备 端口 IP地址 RTA Loopback 0 1.1.1.1/32 G0/0/0 10.1.1.1/24 RTB Loopback 0 2.2.2.2/32 G0/0/0 10.1.1.2/24 G0/0/1 10.1.2.1/24 RTC Loopback 0 3.3.3.3/32 G0/0/0 10.1.2.2/24 G0/0/1 10.1.3.1/24 RTD Loopback 0 4.4.4…...
【C++初阶】一文讲通C++内存管理
文章目录 1. C/C内存分布2. C语言中动态内存管理方式3. C内存管理方式3. 1 new/delete操作内置类型3. 2 new和delete操作自定义类型 4. new与delete的原理4. 1 operator new与operator delete函数4. 2 内置类型4. 3 自定义类型 5. 定位new表达式(placement-new)6. malloc/free和…...
深圳营销型网站公司/seo免费外链工具
文章目录1. 基本分页存储管理基本地址变换机构1. 基本分页存储管理 分页存储: 将内存空间分为一个个大小相等的分区(eg:每个分区4KB),每个分区就是一个页框 每个页框有一个编号,即页框号,页框…...
做网站同行/企业网站优化外包
编写完自己的程序,如何生成其对应的开发者文档以方便我们日后查看呢?使用 javadoc 开发工具即可生成一个开发者文档。本文将介绍使用 javadoc 如何生成开发者文档以及注意的问题。 1.文档注释 注释分为: 单行注释:// 注释内容多…...
phpcms做网站建栏目/网络策划方案
Gym-101502K Malek and Summer Semester 题目链接 题意: M这学期修了n门课,给出这些课的分数,判断这学期M是否通过。 M要通过这学期,必须至少通过ceil(n*m)门课。 m输入会给出,一门课的成绩>50才算做通过。ceil(x)…...
自己怎么做卡密网站/百度快照的作用是什么
云计算在图书馆领域的应用与研究已陆续展开,图书馆的云时代即将到来。重塑图书馆生存和发展的环境、推动图书馆自身变革是云计算环境下图书馆发展的未来趋势。 云计算是分布式处理(Distributed Computing)、并行处理(Parallel Com…...
域名停靠app大全下载网站入口/腾讯企点qq
Python做为一个脚本语言,可以很方便地写各种工具。当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现)。 如果要以命令行执行,那你需要一个命令行参数解析的模块来帮你做这个…...
wordpress 小工具天气/网站搭建服务
3.0之后推荐用actionbar,Menu已经过时但是我们还是了解一下吧,Menu学习在java语句中添加menu组件 重写onCreateOptionsMenu(Menu menu)方法Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuItem menuItem1 menu.add(100, 100, 1, "系…...