Thrift、Dubbo、Spring Cloud 和 gRPC

2023-11-19

何为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)框架,支持多种编程语言和传输协议,适用于构建高性能、低延迟且可伸缩性强的分布式系统。
项目 Thrift Spring Cloud Dubbo gRPC
代码规范 基于thrift的IDL生成代码 基于JAX-SR规范 无代码侵入 基于.Proto生成代码
通讯协议 TCP HTTP TCP HTTP/2
序列化协议 二进制、压缩格式以及JSON格式数据 JSON 多协议支持,默认hessian protobuf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Thrift、Dubbo、Spring Cloud 和 gRPC 的相关文章

随机推荐

  • IMU姿态计算

    总述 IMU即惯性测量单元 主要用于对机体的加速度与角速度的测算 使用场景很多 例如 平衡车 惯性导航等等 姿态 姿态角 Euler angles 是用于描述物体在三维空间中的旋转姿态的一种表示方法 它由三个角度组成 通常表示物体绕三个轴
  • html3D创意相册附源码

    3D创意相册 效果图如下 文件目录 图片名称 jpg index html
  • VB+SQLite组合,真香!(一)

    微信公众号 网管小贾 个人博客 www sysadm cc 嗨 你好 我是网管小贾 当你看到这个标题时 是不是感觉很奇怪呢 老掉牙的VB和 玩具 数据库SQLite搞在一起是个什么玩意 待我慢慢道来哈 SQLite众所周知 是个文件数据库
  • 非常厉害的全文检索技术Elasticsearch

    目录 一 Elasticsearch是什么 二 关于安装 三 kibana的安装和使用 最后 今天是刘小爱自学Java的第157天 感谢你的观看 谢谢你 全文检索技术Elasticsearch的学习 牵扯到的知识点太多太多了 首先要创建一个
  • Cadence Allegro PCB设计88问解析(九) 之 Allegro中封装(footprint)3D模型添加

    一个学习信号完整性的layout工程师 今天整理下PCB封装的3D 模型添加 此步骤并不是所有的公司使用 因为我们平常给器件添加一个实际的高度 就已经OK了 只不过我们在看整版的3D模型是 每个器件都是方方正正的 不太美观 所以有的人要求完
  • JavaScript基础

    编程之修 重在积累 而非资质 资质虽然重要 可是后天的努力更不可缺少 直接量 编程世界中的直接量 就是表面上可以见到的数据值 常见的直接量有数字 小数 字符串 字符串的出现必然带着双引号 单引号也可以 被很好地包裹住 而数字则是光秃秃的 如
  • 解决Opencv高低版本不兼容问题

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 目前OpenCV版本已更新到2 4 由此出现了一系列问
  • Qt之QSS中替代background-position的方法。

    学过css的朋友 应该都多少了解一些雪碧图相关的知识 雪碧图 用的就是background position来确定选取的素材位置 比如 素材中每张扑克的宽高分别为49px 66px 如果我要选用红桃8 我就会在css中写 backgroun
  • Gradle sync failed: A problem occurred configuring project ‘:app‘解决方法

    在terminal 中输入 gradlew i 查看详细信息 输出信息 NDK is missing a platforms directory If you are using NDK verify the ndk dir is set
  • vue项目中使用iconfont阿里图标库

    1 进入icon 官网 iconfont 阿里巴巴矢量图标库 2 根据搜索选择自己想要的图片 添加到项目中或者新建项目 如下图 3 添加之后如下图 点击下载至本地 4 下载本地解压后的文件如下图 5 在vue项目中 css新建一个文件夹 把
  • JS时间格式和时间戳的相互转换

    时间戳转化为日期的方式 var timestamp 1527521052 var newDate new Date newDate setTime timestamp 1000 Mon May 28 2018 console log new
  • 计算机视觉知识点-图像增强

    图像增强技术通过对训练图像进行一系列随机更改以生成相似但不同的训练示例来扩展训练数据集的规模 随机更改训练示例可以减少模型对某些属性的依赖 从而提高模型的泛化能力 我们可以以不同的方式裁剪图像 以使感兴趣的对象出现在不同的位置 从而减少了模
  • YoungTalk STM32入门第12步——CRC校验和芯片ID

    1 CRC 循环冗余校验 计算单元 2 96位芯片唯一序列号 1 CRC 循环冗余校验 计算单元 CRC计算单元使用一个固定的多项式发生器 从一个32位的数据字产生一个CRC码 在众多应用中 基于CRC的技术被用于验证数据传输或者存储的一致
  • Qt -信号槽实现原理

    一 简介 QT信号槽的实现实质是什么 回调函数 简要说一下信号与槽的底层原理 信号与槽的实现是借助了Qt 的元对象系统 元对象系统有一个元对象编译器 程序编译之前会有一个预处理过程 预处理将一个类 对象中的信号 槽的字符串值分别保存在一个容
  • 小白学股票基金_1

    债券要集资 利息比银行同等期限的高 但是不能随意提取现金 如果未到期就提取就不能按约定的利息给于 不可买卖 可以抵压 股票为单向交易 只能在低时进入买涨 T 1交易当天不能卖出 固定的开收盘时间 易受庄家控制 全资动作 多少钱买多少股 必须
  • lmg_Model Links and Torrents

    lmg Model Links and Torrents Changelog MDY 4 bit GPU Model Requirements 4 bit CPU llama cpp RAM Requirements LLaMA 16 bi
  • GraphicsLayer知识点

    require esri layers GraphicsLayer function GraphicsLayer code goes here 包含一个或多个图形特征的图层 每个地图都包含默认的GraphicsLayer 可以使用map g
  • 如何访问虚拟机中的Web服务

    需求 1 在虚拟机Vmware中安装了CentOS6 5 虚拟机使用NAT的方式 2 在CentOS中安装了APACHE 并且使用 http 192 168 237 128可以正常访问 3 想在其他windows机器上访问该虚拟机的web服
  • linux系统的系统性学习 (持续更新)

    分类 系统启动过程 第一步 内核的引导 第二步 运行 init 第三步 系统初始化 第四步 建立终端 第五步 用户登录系统 关机 查看系统基本信息 CPU相关 内存相关 查看网络信息 用户 服务 进程相关 磁盘管理 df 命令 du 命令
  • Thrift、Dubbo、Spring Cloud 和 gRPC

    何为RPC RPC Remote Procedure Call 远程过程调用 是一种进程间通信方式 是一种技术的思想 而不是规范 它允许程序调用另一个地址空间 通常是共享网络的另一台机器上 的过程或函数 而不用程序员显式编码这个远程调用的细