主流的RPC框架有哪些

article/2025/10/2 14:35:47

RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等。RPC还有一个特点就是能够跨语言。

1、RMI(远程方法调用)

JAVA自带的远程方法调用工具,不过有一定的局限性,毕竟是JAVA语言最开始时的设计,后来很多框架的原理都基于RMI,RMI的使用如下:

对外接口 

public interface IService extends Remote {  public String queryName(String no) throws RemoteException; 

 服务实现

import java.rmi.RemoteException;  
import java.rmi.server.UnicastRemoteObject;  // 服务实现  
public class ServiceImpl extends UnicastRemoteObject implements IService {  /** */  private static final long serialVersionUID = 682805210518738166L;  /** * @throws RemoteException */  protected ServiceImpl() throws RemoteException {  super();  }  /* (non-Javadoc) * @see com.suning.ebuy.wd.web.IService#queryName(java.lang.String) */  @Override  public String queryName(String no) throws RemoteException {  // 方法的具体实现  System.out.println("hello" + no);  return String.valueOf(System.currentTimeMillis());  }  }  
RMI客户端[java] view plain copy
import java.rmi.AccessException;  
import java.rmi.NotBoundException;  
import java.rmi.RemoteException;  
import java.rmi.registry.LocateRegistry;  
import java.rmi.registry.Registry;  // RMI客户端  
public class Client {  public static void main(String[] args) {  // 注册管理器  Registry registry = null;  try {  // 获取服务注册管理器  registry = LocateRegistry.getRegistry("127.0.0.1",8088);  // 列出所有注册的服务  String[] list = registry.list();  for(String s : list){  System.out.println(s);  }  } catch (RemoteException e) {  }  try {  // 根据命名获取服务  IService server = (IService) registry.lookup("vince");  // 调用远程方法  String result = server.queryName("ha ha ha ha");  // 输出调用结果  System.out.println("result from remote : " + result);  } catch (AccessException e) {  } catch (RemoteException e) {  } catch (NotBoundException e) {  }  }  
}  
RMI服务端[java] view plain copy
import java.rmi.RemoteException;  
import java.rmi.registry.LocateRegistry;  
import java.rmi.registry.Registry;  // RMI服务端  
public class Server {  public static void main(String[] args) {  // 注册管理器  Registry registry = null;  try {  // 创建一个服务注册管理器  registry = LocateRegistry.createRegistry(8088);  } catch (RemoteException e) {  }  try {  // 创建一个服务  ServiceImpl server = new ServiceImpl();  // 将服务绑定命名  registry.rebind("vince", server);  System.out.println("bind server");  } catch (RemoteException e) {  }  }  
}

 2、Hessian(基于HTTP的远程方法调用)

基于HTTP协议传输,在性能方面还不够完美,负载均衡和失效转移依赖于应用的负载均衡器,Hessian的使用则与RMI类似,区别在于淡化了Registry的角色,通过显示的地址调用,利用HessianProxyFactory根据配置的地址create一个代理对象,另外还要引入Hessian的Jar包。

3、Dubbo(淘宝开源的基于TCP的RPC框架)

基于Netty的高性能RPC框架,是阿里巴巴开源的,总体原理如下:

转载于:https://www.cnblogs.com/aspirant/p/8631236.html


http://chatgpt.dhexx.cn/article/MBApLJM7.shtml

相关文章

简单使用iPhone自带视频播放器

利用苹果自带的视频播放器播放视频 在调用方法前&#xff0c;我们需要包含头文件 #import <MediaPlayer/MediaPlayer.h> 然后调用系统的方法&#xff0c;来实现视频播放。只需简单几步即可 1.获取要播放的视频的路径 NSString *path [[NSBundle mainBundle]pathForR…

iOS 音视频录制之播放视频,AVPlayer可播放本地视频和在线视频

文章目录 在开发中&#xff0c;单纯使用AVPlayer类是无法显示视频的&#xff0c;要将视频层添加至AVPlayerLayer中&#xff0c;这样才能将视频显示出来&#xff0c;所以先在ViewController的interface中添加以下属性 property (nonatomic ,strong) AVPlayer *player; property …

【iOS】视频播放之AVPlayer

【iOS】视频播放之AVPlayer iOS平台使用播放视频&#xff0c;可用的选项一般有这四个&#xff0c;他们各自的作用和功能如下&#xff1a; 使用环境优点缺点AVPlayerViewControllerAVKit简单易用不可定制MPMoviePlayerControllerMediaPlayer简单易用不可定制IJKPlayerIJKMedi…

【iOS】AVPlayer 播放音视频

1、常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求。 常用的音频播放器有 AVAudioPlayer、AVPlayer 等。不同的是&#xff0c;AVAudioPlayer 只支持本地音频的播放&#xff0c;而 AVPlayer 既支持本地音频播放&#xff0c;也支持网络音频播放。 常用的视…

【iOS】AVPlayer 视频播放

视频播放器的类别 iOS开发中不可避免地会遇到音视频播放方面的需求。 常用的音频播放器有 AVAudioPlayer、AVPlayer 等。不同的是&#xff0c;AVAudioPlayer 只支持本地音频的播放&#xff0c;而 AVPlayer 既支持本地音频播放&#xff0c;也支持网络音频播放。 常用的视频播放…

iOS音视频播放-AVPlayer简单使用

按公司需求需要对音频文件进行后台播放,借此机会对音频播放做了个总结.主要针对 AVPlayer 进行详细说明. iOS 各播放器比较 名称使用环境优点确点System Sound ServicesAVFoundationC语言的底层写法&#xff0c;节省内存支持的格式有限&#xff0c;音量无法通过音量键控制&…

iOS音视频播放指南(二)

1. 让你的App支持画中画 画中画指可以让视频在小窗中播放,可以一边看视频一边刷知乎 你可以使用AVPlayerViewController或者AVPictureInPictureController来实现画中画播放。 其中AVPictureInPictureController支持你自定义一些播放控件 在支持画中画播放之前,确保你按照iOS音视…

iOS音视频播放指南(一)

1. 简介 苹果目前提供两个框架用来处理音视频播放 1.AVFoundation AVFoundation用于播放、处理音视频。可以通过结构图看到AVFoundation位于UIKit之下,很好理解AVFoundation并不提供用户界面,你可以自己自己构建用户界面来控制媒体的播放处理等功能。 但是苹果更推荐使用AVKit来…

iOS视频播放的基本方法

本文总结了iOS中最常见的视频播放方法&#xff0c;不同的方法都各具特点&#xff0c;我希望能够总结它们的不同&#xff0c;方便在开发中选择合适的技术方案。 Apple为我们提供了多种方法来实现视频播放&#xff0c;包括MPMoviePlayerController&#xff0c;MPMoviePlayerView…

【计算机系统1】4 Nim游戏

目录 目的与要求 内容与方法 步骤与过程 程序总体设计 核心数据结构及算法流程 核心代码 调试过程 界面展示子程序DISPLAY&#xff08;嵌套&#xff1a;球数展示子程序PUTBALL&#xff09; 游戏子程序GAME&#xff08;嵌套&#xff1a;单人每轮子程序PLAY&#xff09; 结论或体…

java nim游戏_LeetCode 292. Nim游戏

题目描述&#xff1a; 你和你的朋友&#xff0c;两个人一起玩 Nim游戏&#xff1a;桌子上有一堆石头&#xff0c;每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人&#xff0c;每一步都是最优解。 编写一个函数&#xff0c;来判断你…

Nim游戏、3的幂、4的幂

&#x1f345; Java学习路线&#xff1a;Java学习路线 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、CSDN哪吒公众号作者✌ 、Java架构师奋斗者&#x1f4aa; &#x1f345; 百日刷题计划&#xff1a;第 12 / 100 天。 &#x1f345; 扫描主页左侧二维码&a…

【数论】博弈论 —— nim游戏

知识点 一 . nim游戏的数学定义 Nim游戏是博弈论中最经典的模型&#xff0c;它又有着十分简单的规则和无比优美的结论 。 Nim游戏是组合游戏(Combinatorial Games)的一种&#xff0c;准确来说&#xff0c;属于“Impartial Combinatorial Games”&#xff08;以下简称ICG&#…

【模板题】几种常见的Nim游戏(博弈论)

一、AcWing 891. Nim游戏 【题目描述】 给定 n n n堆石子&#xff0c;两位玩家轮流操作&#xff0c;每次操作可以从任意一堆石子中拿走任意数量的石子&#xff08;可以拿完&#xff0c;但不能不拿&#xff09;&#xff0c;最后无法进行操作的人视为失败。 问如果两人都采用最优…

Kafka 为什么能那么快 | Kafka高效读写数据的原因

点击上方“服务端思维”&#xff0c;选择“设为星标” 回复”669“获取独家整理的精选资料集 回复”加群“加入全国服务端高端社群「后端圈」 无论 kafka 作为 MQ 也好&#xff0c;作为存储层也罢&#xff0c;无非就是两个功能&#xff08;好简单的样子&#xff09;&#xff0c…

【人人都懂密码学】一篇最易懂的Java密码学入门教程

密码与我们的生活息息相关&#xff0c;远到国家机密&#xff0c;近到个人账户&#xff0c;我们每天都在跟密码打交道&#xff1a; 那么&#xff0c;密码从何而来&#xff1f;生活中常见的加密是怎么实现的&#xff1f;怎么保证个人信息安全&#xff1f;本文将从这几方面进行浅谈…

Kafka必须掌握的核心技术--为什么吞吐量大、速度快?

点击上方“服务端思维”&#xff0c;选择“设为星标” 回复”669“获取独家整理的精选资料集 回复”加群“加入全国服务端高端社群「后端圈」 Kafka是大数据领域无处不在的消息中间件&#xff0c;目前广泛使用在企业内部的实时数据管道&#xff0c;并帮助企业构建自己的流计算应…

哪些软件问题也可导致硬盘录像机死机

硬盘录像机死机除了一些硬件上的问题之外&#xff0c;也有不少是由软件引起的。如&#xff1a; 1、病毒感染 病毒是计算机操作的大患&#xff0c;几乎人人恶之。病毒可以使计算机工作效率急剧下降&#xff0c;造成频繁死机、数据丢失、系统崩溃&#xff0c;甚至损坏主板、硬盘、…

导致硬盘录像机卡死的十大原因分析

硬盘录像机卡死除了一些技术上的问题之外&#xff0c;也有不少是由软件引起的。如&#xff1a; 1、病毒感染 病毒是硬盘录像机操作的大患&#xff0c;几乎人人恶之。病毒可以使硬盘录像机工作效率急剧下降&#xff0c;造成频繁死机、数据丢失、系统崩溃&#xff0c;甚至损坏主板…

谈项目管理和软件测试过程

谈项目管理和软件测试过程&#xff08;一&#xff09; 1. 软件测试在公司的组织保障是基础 1.1 研发部组织结构介绍 以华友公司研发部的组织结构为例&#xff0c;测试部门属于研发部副总裁直接管理&#xff0c;见如下结构图 公司研发部的组织结构图 …