02_服务调用技术选型

RPC

RPC( RemoteProcedureCall)—远程过程调用 ,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。

RPC原理是什么?

RPC 采用客户端(服务调用方)/服务器端(服务提供方)模式, 都运行在自己的 JVM 中。客户端只需要引入要使用的接口,接口的实现和运行都在服务器端。RPC 主要依赖的技术包括序列化、反序列化和数据传输协议,这是一种定义与实现相分离的设计。

同时在此处要对 RMI( Remote Method Invoke,远程方法调用)中的 stub (桩)和skeleton (骨架)的概念有一点了解。RMI 的代理模式是通过代理对象将方法传递给实际对象的。stub 驻留客户端,承担着代理远程对象实现者的角色。skeleton 类帮助远程对象与 stub 连接进行通信。

  1. 服务调用方(client)调用以本地调用方式调用服务;
  2. client stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
  3. client stub 找到服务地址,并将消息发送到服务端;
  4. server stub 收到消息后进行解码;
  5. server stub 根据解码结果调用本地的服务;
  6. 本地服务执行并将结果返回给 server stub
  7. server stub 将返回结果打包成消息并发送至调用方;
  8. client stub 接收到消息,并进行解码;
  9. 服务调用方得到最终结果。

RPC的三个过程

==1:通讯协议== 比如:你需要找人在国外干活,那么你可以直接飞过去或者打电话或者通过互联网的形式,去找人,这个找人的过程就是通讯协议
==2:寻址== 既然要找人干活,肯定要知道地址在哪,飞过去需要找到详细地址,打电话需要知道电话号码,互联网需要知道IP是多少
==3:数据序列化== 就是说,语言需要互通,才能够让别人干活,之间需要一个大家都懂的语言去交流

参考信息:
性能基础之常见RPC框架浅析
RPC是什么,看完你就知道了

常用的RPC框架

Thrift:thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

Dubbo:Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。 Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,Dubbo自2011年开源后,已被许多非阿里系公司使用。

Spring Cloud:Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。Spring Cloud基于Spring Boot, 使得开发部署极其简单。

gRPC: 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。

版权声明:本文为CSDN博主「老朱-yubing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: https://blog.csdn.net/robinhunan/article/details/106376593

feign和dubbo对比

Spring Cloud RPC(Feign VS Dubbo)多维度对比选型
微服务架构下feign和dubbo对比

在高并发的环境下,Dubbo相较于feign的性能更好。

feign

Feign 是一种声明式的 HTTP 客户端,用于简化对 RESTful API 的调用。它的主要使用场景是在微服务架构中,通过 HTTP 协议调用其他服务的 RESTful API。Feign 支持多种编解码器,如 Jackson、Gson、JAXB 等,可以将请求和响应转换成对象。Feign 还提供了负载均衡和服务发现功能,可以通过 Eureka、Consul 等服务注册中心来自动发现和负载均衡服务。

dubbo

Dubbo 是一种基于 RPC(Remote Procedure Call)协议的远程调用框架,它可以将远程调用抽象成本地调用的方式。Dubbo 的主要使用场景是在大型分布式系统中,通过 RPC 协议调用其他服务。Dubbo 支持多种协议,如 Dubbo 协议、HTTP 协议、Hessian 协议等。Dubbo 还提供了负载均衡、服务治理、容错等功能,可以通过 ZooKeeper、Consul 等服务注册中心来实现服务发现和负载均衡。


02_服务调用技术选型
http://yuanql.top/2023/07/05/00_项目经历/YuanqlProject/02_服务调用技术选型/
作者
Qingli Yuan
发布于
2023年7月5日
许可协议