iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中PRC框架如何使用
  • 577
分享到

Java中PRC框架如何使用

2023-06-20 20:06:51 577人浏览 薄情痞子
摘要

Java中PRC框架如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。面试题1:说说你对rpc框架的理解?  RPC (Remote Procedure Call)即远

Java中PRC框架如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

面试题1:说说你对rpc框架的理解?

  RPC (Remote Procedure Call)即远程过程调用,是分布式系统常见的一种通信方法。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。

  除 RPC 之外,常见的多系统数据交互方案还有分布式消息队列Http 请求调用、数据库和分布式缓存等。

  其中 RPC 和 HTTP 调用是没有经过中间件的,它们是端到端系统的直接数据交互。

通俗点说

  • RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

  • RPC会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)。

  • 客户端发起请求,服务器返回响应(类似于Http的工作方式)RPC在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。

追问1:RPC框架实现原理是什么样的

在RPC框架中主要有三个角色:提供者、消费者和注册中心。如下图所示:

Java中PRC框架如何使用

  • 提供者: 暴露服务的服务提供方。

  • 调用者: 调用远程服务的服务消费方。

  • 注册中心: 服务注册与发现的注册中心。

Java中PRC框架如何使用

原理图如上,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

比如说,A服务器想调用B服务器上的一个方法:Employee getEmployeeByName(String fullName)

RPC整个调用过程,主要经历如下几个步骤:

1、建立通信

首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接。

主要是通过在客户端和服务器之间建立tcp连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。

2、服务寻址

要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么。

通常情况下我们需要提供B机器(主机名或IP地址)以及特定的端口,然后指定调用的方法或者函数的名称以及入参出参等信息,这样才能完成服务的一个调用。

可靠的寻址方式(主要是提供服务的发现)是RPC的实现基石,比如可以采用redis或者ZooKeeper来注册服务等等。

Java中PRC框架如何使用

  • 从服务提供者的角度看:当提供者服务启动时,需要自动向注册中心注册服务;

  • 当提供者服务停止时,需要向注册中心注销服务;

  • 提供者需要定时向注册中心发送心跳,一段时间未收到来自提供者的心跳后,认为提供者已经停止服务,从注册中心上摘取掉对应的服务。

  • 从调用者的角度看:调用者启动时订阅注册中心的消息并从注册中心获取提供者的地址;

  • 当有提供者上线或者下线时,注册中心会告知到调用者;

  • 调用者下线时,取消订阅。

3、网络传输

序列化

当A机器上的应用发起一个RPC调用时,调用方法和其入参等信息需要通过底层的网络协议如TCP传输到B机器,由于网络协议是基于二进制的,所有我们传输的参数数据都需要先进行序列化(Serialize)或者编组(marshal)成二进制的形式才能在网络中进行传输。然后通过寻址操作和网络传输将序列化或者编组之后的二进制数据发送给B机器。

反序列化

当B机器接收到A机器的应用发来的请求之后,又需要对接收到的参数等信息进行反序列化操作(序列化的逆操作),即将二进制信息恢复为内存中的表达方式,然后再找到对应的方法(寻址的一部分)进行本地调用(一般是通过生成代理Proxy去调用,

通常会有jdk动态代理、CGLIB动态代理、Javassist生成字节码技术等),之后得到调用的返回值。

4、服务调用

B机器进行本地调用(通过代理Proxy)之后得到了返回值,此时还需要再把返回值发送回A机器,同样也需要经过序列化操作,然后再经过网络传输将二进制数据发送回A机器,而当A机器接收到这些返回值之后,则再次进行反序列化操作,恢复为内存中的表达方式,最后再交给A机器上的应用进行相关处理(一般是业务逻辑处理操作)。

面试题2:常见的RPC框架有哪些?

  • Thrift:thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 c++, Java, python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, javascript, node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

  • dubbo:Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。 Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,Dubbo自2011年开源后,已被许多非阿里系公司使用。

  • spring cloudspring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。Spring Cloud基于Spring Boot, 使得开发部署极其简单。

面试题3:说说RPC和SOA、SOAP、REST的区别吧

1、REST

可以看着是HTTP协议的一种直接应用,默认基于JSON作为传输格式,使用简单,学习成本低效率高,但是安全性较低。

2、SOAP

SOAP是一种数据交换协议规范,是一种轻量的、简单的、基于XML的协议的规范。而SOAP可以看着是一个重量级的协议,基于XML、SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,当前已经得到了各个厂商的支持 。

他主要的优点是:易用、灵活、跨语言、跨平台。

3、SOA

面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/WEB Service技术之后的自然延伸。

关于Java中PRC框架如何使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: Java中PRC框架如何使用

本文链接: https://www.lsjlt.com/news/299898.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中PRC框架如何使用
    Java中PRC框架如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。面试题1:说说你对RPC框架的理解?  RPC (Remote Procedure Call)即远...
    99+
    2023-06-20
  • Java面试题冲刺第十四天--PRC框架
    目录面试题1:说说你对RPC框架的理解?追问1:RPC框架实现原理是什么样的1、建立通信2、服务寻址3、网络传输4、服务调用面试题2:常见的RPC框架有哪些?面试题3:说说RPC和S...
    99+
    2024-04-02
  • 如何在java中使用WebMagic框架
    本篇文章为大家展示了如何在java中使用WebMagic框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. ...
    99+
    2023-06-14
  • Java之Junit框架如何使用
    JUnit是Java中最流行的单元测试框架之一,它可以帮助开发者编写和运行单元测试。以下是使用JUnit框架的一般步骤:1. 首先,...
    99+
    2023-08-17
    Java Junit
  • 如何在Java中使用AbstractQueuedSynchronizer同步框架
    这篇文章将为大家详细讲解有关如何在Java中使用AbstractQueuedSynchronizer同步框架,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。AbstractQueuedSync...
    99+
    2023-05-31
    java abstractqueuedsynchronizer
  • 如何在Java框架中使用Unix对象?
    Java是一种使用广泛的编程语言,拥有强大的功能和丰富的开发库。在Java中,使用Unix对象可以为我们的开发带来便利。本文将介绍如何在Java框架中使用Unix对象,以及如何使用Unix对象来处理文件和目录。同时,我们还将提供一些示例代码...
    99+
    2023-11-09
    框架 unix 对象
  • 如何在 Java 中使用最新的 NPM 框架?
    随着前端技术的不断发展,NPM(Node Package Manager)已经成为了前端开发不可或缺的工具。NPM 是一个包管理器,可以通过它方便地安装和管理 JavaScript 的包。Java 开发者也可以通过 NPM 来管理自己的包...
    99+
    2023-07-08
    容器 npm 框架
  • Golang中GinWeb框架如何使用
    Golang中GinWeb框架如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。安装Go版本要求: Go1.12及以上1....
    99+
    2024-04-02
  • bootstrap框架中table如何使用
    这篇文章主要讲解了“bootstrap框架中table如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“bootstrap框架中table如何使用”吧!...
    99+
    2024-04-02
  • 如何在Dreamweaver中使用框架
    今天就跟大家聊聊有关如何在Dreamweaver中使用框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  增加新框架      要给框架页面增加新框架,就是像拆分表格的单...
    99+
    2023-06-08
  • tp5框架中如何使用redis
    tp5框架中使用redis的示例:打开tp5框架的编辑器,输入以下代码使用redis:...
    99+
    2024-04-02
  • tp框架中如何使用redis
    tp框架中使用redis的示例:直接调用框架自带的Redis类:例如:路径为:\ThinkPHP\Library\Think\Cache\Driver\Redis.class.php。示例代码:public function test(){...
    99+
    2024-04-02
  • C#中WinForm框架如何使用
    在C#中使用WinForm框架可以通过以下步骤:1. 创建一个新的WinForm应用程序项目。2. 打开设计视图,在工具箱中选择所需...
    99+
    2023-08-09
    C# WinForm
  • 如何在Bash和Java开发中使用Laravel框架?
    Laravel框架是一个流行的PHP框架,它提供了许多有用的功能和工具,使得开发人员可以更加高效地进行Web应用程序的开发。虽然Laravel框架主要用于PHP开发,但是它也可以在Bash和Java开发中使用。在本文中,我们将探讨如何在Ba...
    99+
    2023-06-03
    bash 开发技术 laravel
  • Android中如何使用Atlas框架
    本篇文章为大家展示了Android中如何使用Atlas框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  Atlas是什么  Atlas是一个Android客户端容器框架,主要提供了组件化、动态性...
    99+
    2023-06-02
  • Xamarin.iOS中如何使用OxyPlot框架
    小编给大家分享一下Xamarin.iOS中如何使用OxyPlot框架,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Xamarin.iOS中使用OxyPlot框架在...
    99+
    2023-06-04
  • Spring框架中的Java函数:如何使用它们?
    Spring框架是一个很流行的Java框架,它提供了许多有用的功能和组件,以帮助开发人员构建高质量的Java应用程序。其中一个重要的组件是Java函数,它们可以帮助我们轻松地编写复杂的业务逻辑。在本文中,我们将深入探讨Spring框架中的J...
    99+
    2023-09-16
    函数 spring 框架
  • Xamarin.Forms中如何使用OxyPlot框架
    小编给大家分享一下Xamarin.Forms中如何使用OxyPlot框架,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Xamarin图表开发基础教程(7)OxyPlot框架Xamarin.Forms中使用OxyPlot框架...
    99+
    2023-06-04
  • go中如何使用xorm框架
    这篇文章主要介绍go中如何使用xorm框架,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、创建数据库连接xorm支持单引擎和多引擎,多引擎的场景对于初学者来说,没有必要考虑,所以我们主要学习的是单引擎的数据库连接,...
    99+
    2023-06-15
  • Node.js 中如何使用Express框架
    这期内容当中小编将会给大家带来有关Node.js 中如何使用Express框架,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Node.js Express 框架Expre...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作