• 【分布式服务架构】常用的RPC框架


    1. RPC 框架的原理

    RPC(Remote Procedure Call,远程服务调用),用来实现部署在不同机器之间系统的方法调用,使程序像当问本地系统资源一样,通过网络传出资源。
    在这里插入图片描述
    1)Client Code:客户端代码调用实现,负责发起RPC调用
    2)Serialization/Descrialization:负责对RPC调用通过网络传输的内容进行序列化和反序列化,不同的RPC框架有不同的实现机制。
    3)Stub Proxy:可以看作是一种代理对象,屏蔽RPC调用过程中负责的网络处理逻辑,使RPC调用透明化,保持和本地调用的风格一致。
    4)Transport:作为RPC框架底层的通信传输模块,一般通过socket在客户端与服务端之间传递请求和应答信息
    5)Server Code:服务端服务业务逻辑的实现。

    2. 常用的几种RPC框架

    1) RMI

    Java RMI 是一种基于Java的远程调用技术,是Java特有的一种RPC实现。
    特性总结:

    • 支持真正的面向对象的多态性。完全支持面向对象也是RMPI相对于其他的RPC框架的优势之一。
    • Java语言独有,不支持其他语言
    • 使用Java原生的序列化机制,所有的对象都必须实现 java.io.Serializable
    • 底层使用基于BIO实现的Socket完成

    2) CXF/Axis2

    WebService是一种跨平台的RPC技术协议。WebService技术栈有SOAP、UDDI、WSDL组成。

    • SOAP是一种使用XML进行数据编码的通信协议,独立于平台,独立于语言,简单可扩展,因为SOAP基于HTTP协议,所以可以绕过防火墙
    • UDDI是一个独立于平台的框架,是一种通用的描述、发现与集成服务
    • WSDL是使用XML编写的网络服务描述语言,用来描述WebService,以及如何访问WebService。

    3)Thrift

    Apache Thrift是跨不同的平台的语言,协助构建可伸缩的分布式系统的一种RPC实现。支持多种主流的编程语言,Java,C++,Python等。
    Thrift对比XML-RPC/JSON-RPC/SOAP和WSDL的RPC方案,有明显的性能优势。原因是Thrift采用二进制编码协议,使用TCP/IP传输协议的一种RPC实现。

    4)gRPC

    gRPC是Google的一个高性能、开源通用的RPC框架,面向移动和HTTP2设计,支持Java、C、Go等语言。序列化默认使用Protocol Buffers

    5)Http Client

    • JDK自带的java.ne包里面提供了基于HTTP协议最基础的实现。
    • okhttp
    • httpClient/httpComponent

    3. RPC框架和分布式框架的关系

    RPC框架实现了服务消费者调用Client和服务提供者Server之间点对点调用流程,一般包括stub,通信,数据的序列化和反序列化。调用方和服务提供方采用直连的方式进行调用。

    而分布式服务框架,除了包含RPC的特性,还包括多台Server提供服务的负载均衡策略以及实现,服务注册、发布与引入,以及服务的高可用策略、服务治理等。

    例如 Spring Cloud提供了一整套的技术方案。

  • 相关阅读:
    在Java中使用Spring Boot设置全局的BusinessException
    手绘板的制作——手绘(1)
    深度学习基础之激活函数
    大一学生Web课程设计 美食主题网页制作(HTML+CSS+JavaScript)
    ES数据库简单查询
    操作系统-进程与线程(进程的概念、组成、特征、状态与转化)
    SWMM排水管网水力、水质建模及在海绵城市与水环境保护中的应用
    JVM学习(三)--运行时数据区
    【Android】-- 向上个和下个Activity页面发送数据
    山西青年杂志山西青年杂志社山西青年编辑部2022年第16期目录
  • 原文地址:https://blog.csdn.net/wjavadog/article/details/126556137