• Thrift、Dubbo、Spring Cloud 和 gRPC


    何为RPC?

    RPC(Remote Procedure Call:远程过程调用):是一种进程间通信方式,是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。通俗的说法就是:比如说现在有两台服务器A和B,一个应用部署在A服务器上,另一个应用部署在B服务器上,如果A应用想要调用B应用提供的方法,由于他们不在一台机器下,也就是说它们不在一个JVM内存空间中,是无法直接调用的,需要通过网络进行调用,那这个调用过程就叫做RPC。

    无论是何种类型的数据,最终都需要序列化转换成二进制流在网络上进行传输,数据的发送方需要将对象序列化转换为二进制流,而数据的接收方则需要把二进制流反序列化为对象。 

    四种RPC框架介绍

    1. Thrift:

      • Thrift 是一个跨语言的服务开发框架,使用 Apache 许可证进行授权。
      • 它支持多种编程语言,包括 C++, Java, Python, PHP 等。
      • Thrift 使用 Protocol Buffers (protobuf) 作为接口定义语言和数据序列化格式。
      • Thrift 提供了一种可扩展且高效的二进制通信协议,适用于构建大规模分布式系统。
      • Thrift 适用于构建高性能、可伸缩性强且易于维护的后端服务。
    2. Dubbo:

      • Dubbo 是阿里巴巴开源的一个高性能、轻量级的分布式服务框架。
      • 它支持多种编程语言,包括 Java, Python, PHP, Node.js 等。
      • Dubbo 使用基于注解的编码方式,简化了服务提供者和消费者的开发过程。
      • Dubbo 提供了负载均衡、容错、路由等功能,使得构建分布式系统更加简单和可靠。
      • Dubbo 适用于构建高性能、高可用性的微服务架构。
    3. Spring Cloud:

      • Spring Cloud 是基于 Spring Boot 的一套微服务解决方案,为开发者提供了一整套工具和服务来构建分布式系统。
      • 它提供了多个组件,如服务注册与发现、配置中心、负载均衡、熔断器等,以帮助开发者快速构建可靠的微服务。
      • Spring Cloud 使用了 Netflix OSS (Open Source Software) 技术栈,与其他 Spring Cloud 组件无缝集成。
      • Spring Cloud 适用于构建可伸缩、弹性且高度可靠的微服务架构。
    4. gRPC:

      • gRPC 是一个高性能、开源和通用的远程过程调用(RPC)框架。
      • 它使用 Google's Protocol Buffers (protobuf) 作为接口定义语言和数据序列化格式。
      • gRPC 支持多种编程语言,并提供了多种传输协议,如 HTTP/2、WebSockets 等。
      • gRPC 采用了一种流式传输协议,使得数据传输更加高效和实时。
      • gRPC 适用于构建高性能、低延迟且可伸缩性强的分布式系统。

    总结:

    • Thrift 是一个用于跨语言服务开发的框架,支持二进制、压缩格式以及 json 格式数据的序列化和反序列化。它适用于构建高性能、可伸缩性强且易于维护的后端服务。
    • Dubbo 是阿里巴巴开源的一个高性能、轻量级的分布式服务框架,提供了负载均衡、容错、路由等功能,适用于构建高性能、高可用性的微服务架构。
    • Spring Cloud 是基于 Spring Boot 的一套微服务解决方案,提供了多个组件来帮助开发者快速构建可靠的微服务。它适用于构建可伸缩、弹性且高度可靠的微服务架构。
    • gRPC 是一个高性能、开源和通用的远程过程调用(RPC)框架,支持多种编程语言和传输协议,适用于构建高性能、低延迟且可伸缩性强的分布式系统。
    项目ThriftSpring CloudDubbogRPC
    代码规范基于thrift的IDL生成代码基于JAX-SR规范无代码侵入基于.Proto生成代码
    通讯协议TCPHTTPTCPHTTP/2
    序列化协议二进制、压缩格式以及JSON格式数据JSON多协议支持,默认hessianprotobuf

  • 相关阅读:
    java -- Stringbuild、Date和Calendar类
    2022双十一哪些电容笔值得买?Ipad10代电容笔品牌推荐
    CI/CD Jenkins容器化安装部署
    dpdk实现dns
    Web开发常用布局方式总结
    JQuery系列之元素操作
    减少无线链接切换导致数据体验变差的技术简介
    【Jenkins】win 10 / win 11:Jenkins 的下载、安装、部署(Jenkins 2.365 基于 Java 17)
    22-9-16学习笔记
    10个python爬虫入门实例
  • 原文地址:https://blog.csdn.net/qq_28165595/article/details/132782847