Rumah Java javaTutorial rpc框架有哪些

rpc框架有哪些

Oct 29, 2020 pm 03:04 PM
rangka kerja rpc

rpc框架有:1、RMI,远程方法调用;2、Hessian,基于HTTP的远程方法调用;3、Dubbo,淘宝开源的基于TCP的RPC框架。

rpc框架有哪些

rpc框架有:

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

对于RPC有一个逻辑关系图,以RMI为例:


其他的框架结构也类似,区别在于对象的序列化方法,传输对象的通讯协议,以及注册中心的管理与failover设计(利用zookeeper)。

客户端和服务端可以运行在不同的JVM中,Client只需要引入接口,接口的实现以及运行时需要的数据都在Server端,RPC的主要依赖技术是序列化、反序列化和传输协议,JAVA里对应的就是对象的序列化、反序列化以及序列化后数据的传输。RMI的序列化和反序列化是JAVA自带的,Hessian里的序列化和反序列化是私有的,传输协议则是HTTP,Dubbo的序列化可以多种选择,一般使用Hessian的序列化协议,传输则是TCP协议,使用了高性能的NIO框架Netty。对于序列化,我还了解一些,像Google的ProBuffer、JBoss Marshalling和Apache Thrift等,之前有写一篇介绍ProBuffer的博文

1、RMI(远程方法调用)

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

对外接口

<span style="font-size:12px;">public interface IService extends Remote {

    public String queryName(String no) throws RemoteException;

}</span>
Salin selepas log masuk

服务实现

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)
     *
     */
    @Override
    public String queryName(String no) throws RemoteException {
        // 方法的具体实现
        System.out.println("hello" + no);
        return String.valueOf(System.currentTimeMillis());
    }
    
}
Salin selepas log masuk

RMI客户端

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) {
            
        }
    }
}
Salin selepas log masuk

RMI服务端

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) {
            
        }
    }
}
Salin selepas log masuk

服务注册管理器写在了Server里,当然也可以抽出来单独作为一个服务,在其他一些框架中,往往用Zookeeper充当注册管理角色。

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

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


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

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


在了解Dubbo之前,要先对Zookeeper有深入的理解,当理解了zookeeper后,Dubbo也就了无秘密了。

Dubbo的详细说明在淘宝开源里说的非常详细,在工作中很多生产项目都用了Dubbo,过程中也发现了很多需要注意的地方,尤其是那繁多的配置,设置不当都会让人烦脑,最好能再基于现有开源的Dubbo再定制优化一下。

相关免费学习推荐:java基础教程

Atas ialah kandungan terperinci rpc框架有哪些. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Rangka kerja RPC tulisan tangan sebenarnya bukan hanya untuk berpura-pura menjadi 13! Rangka kerja RPC tulisan tangan sebenarnya bukan hanya untuk berpura-pura menjadi 13! Aug 16, 2023 pm 05:01 PM

Anda mungkin belum ditanya, mungkin anda bertuah, atau mungkin anda belum berada di tahap ini. Biasanya gaji bulanan lebih daripada 20k, dan pada dasarnya mereka akan bertanya beberapa soalan reka bentuk. Dari perspektif penemuduga: Menyoal jenis soalan ini adalah lebih baik daripada menulis esei lapan bahagian, yang melibatkan banyak perkara teknikal. Contohnya: pengetahuan tentang corak reka bentuk, protokol komunikasi, ejen dinamik, virtualisasi, kumpulan benang, dsb.

Penemuduga Alibaba: Sila tulis tangan rangka kerja RPC untuk saya. Penemuduga Alibaba: Sila tulis tangan rangka kerja RPC untuk saya. Aug 17, 2023 pm 04:24 PM

RPC ialah protokol komunikasi komputer. Protokol ini membenarkan program yang dijalankan pada satu komputer untuk memanggil subrutin pada komputer lain tanpa pembangun perlu memprogramkan interaksi ini secara tambahan.

Prinsip dan aplikasi rangka kerja RPC dalam bahasa Go Prinsip dan aplikasi rangka kerja RPC dalam bahasa Go Jun 01, 2023 pm 03:01 PM

1. Konsep rangka kerja RPC Dalam sistem teragih, data selalunya perlu dipindahkan antara pelayan dan pelanggan yang berbeza Rangka kerja RPC (RemoteProcedureCall) ialah cara teknikal yang biasa digunakan. Rangka kerja RPC membenarkan aplikasi memanggil fungsi atau kaedah persekitaran pelaksanaan lain melalui pemesejan jauh, dengan itu membolehkan program berjalan pada komputer yang berbeza. Pada masa ini terdapat banyak rangka kerja RPC di pasaran, seperti gRPC Google, Thrift, Hessian, dll. Artikel ini terutamanya memperkenalkan

Bagaimana untuk membangunkan rangka kerja RPC dalam PHP? Bagaimana untuk membangunkan rangka kerja RPC dalam PHP? May 13, 2023 pm 03:22 PM

RPC (RemoteProcedureCall) ialah protokol komunikasi antara proses yang membenarkan proses yang berbeza untuk berkomunikasi dan bekerjasama melalui rangkaian pada mesin fizikal yang berbeza. Rangka kerja RPC semakin menarik perhatian kerana ia dapat membantu pembangun dengan mudah melaksanakan pembangunan sistem teragih. Dalam artikel ini, kami akan memperkenalkan langkah demi langkah cara menggunakan PHP untuk membangunkan rangka kerja RPC. 1. Apakah rangka kerja RPC? Rangka kerja RPC ialah rangka kerja yang digunakan untuk melaksanakan panggilan prosedur jauh. Dalam berasaskan RPC

Apakah rangka kerja rpc yang ada? Apakah rangka kerja rpc yang ada? Aug 03, 2023 am 10:17 AM

Rangka kerja rpc termasuk: 1. gRPC, rangka kerja RPC sumber terbuka berprestasi tinggi yang dibangunkan oleh Google 2. Apache Thrift, rangka kerja RPC merentas bahasa yang dibangunkan dan sumber terbuka oleh Facebook; prestasi, rangka kerja RPC yang ringan, sesuai untuk sistem teragih berskala besar;

Penilaian rangka kerja RPC bahasa Go: prestasi, kemudahan penggunaan, perbandingan sokongan komuniti Penilaian rangka kerja RPC bahasa Go: prestasi, kemudahan penggunaan, perbandingan sokongan komuniti Feb 27, 2024 pm 09:12 PM

Sebagai bahasa pengaturcaraan moden yang penting, bahasa Go semakin digunakan dalam pembangunan sistem teragih. Apabila membina sistem teragih, pilihan rangka kerja RPC (panggilan prosedur jauh) selalunya penting. Artikel ini akan menjalankan penilaian mendatar bagi rangka kerja RPC bahasa Go semasa, membandingkan kelebihan dan kekurangannya dari segi prestasi, kemudahan penggunaan dan sokongan komuniti, serta melampirkan contoh kod khusus. 1. Perbandingan prestasi Dalam sistem teragih, prestasi selalunya merupakan salah satu petunjuk utama yang diberi perhatian oleh pembangun. Berikut adalah beberapa yang utama

Cara melaksanakan rangka kerja RPC konkurensi tinggi dalam bahasa go Cara melaksanakan rangka kerja RPC konkurensi tinggi dalam bahasa go Aug 05, 2023 pm 12:49 PM

Pengenalan kepada cara melaksanakan rangka kerja RPC konkurensi tinggi dalam bahasa Go: Dengan perkembangan pesat Internet, aplikasi konkurensi tinggi telah menarik lebih banyak perhatian. Menggunakan rangka kerja RPC (RemoteProcedureCall) ialah penyelesaian biasa. Artikel ini akan memperkenalkan cara melaksanakan rangka kerja RPC konkurensi tinggi dalam bahasa Go dan akan disertakan dengan contoh kod. Pengenalan kepada rangka kerja RPC: RPC ialah protokol komunikasi yang membenarkan atur cara komputer memanggil subrutin dalam ruang alamat lain (biasanya terletak pada komputer jauh) tanpa

Apakah rangka kerja RPC dalam PHP7.0? Apakah rangka kerja RPC dalam PHP7.0? May 29, 2023 am 11:10 AM

Dengan perkembangan teknologi komputer yang berterusan, sistem teragih telah menjadi arus perdana, dan panggilan prosedur jauh (RPC) merupakan cara penting untuk melaksanakan sistem teragih. Sebagai bahasa pengaturcaraan Web yang popular, PHP juga mempunyai rangka kerja RPC sendiri, antaranya beberapa rangka kerja RPC baharu telah diperkenalkan dalam versi PHP7.0. Artikel ini akan memperkenalkan rangka kerja RPC biasa dan ciri-cirinya dalam PHP7.0. PHPRemoteProcedureCall(phpRPC)phpRPC ialah RP yang ringan

See all articles