微服务:通信协议:Restful,RPC(Dubbo、Motan、gRPC)

如题所述

在单体式应用中,各个模块通过编程语言级别的方法或函数进行调用。然而,基于微服务的分布式应用在多台机器上运行,每个服务实例为一个独立进程。微服务必须使用进程间通信协议(如HTTP、AMQP)或二进制协议(如TCP)进行交互。

为服务选择IPC时,需考虑交互模式:一对一(一个客户端请求对应一个服务实例响应)或一对多(一个客户端请求对应多个服务实例响应)。交互模式又分为同步(客户端请求等待服务端即时响应,可能阻塞)和异步(客户端请求不阻塞进程,服务端响应可能非即时)。

基于消息通信的优点包括:解耦客户端和服务端,无需了解具体服务实例位置;消息缓冲,客户端可接受订单即使系统慢或不可用;弹性交互,支持多种模式;直接进程间通信,模仿本地调用。

RPC(Remote Procedure Call)通过代理模式简化远程调用,使其如同本地调用。它解决分布式系统中服务调用问题,允许用户感知不到远程调用过程。RPC框架如Dubbo、Motan、gRPC提供不同功能和配置方式。

Dubbo是阿里开源的分布式服务框架,支持分层架构,减少各层耦合。Motan是微博开源的高性能、易于使用的RPC框架。gRPC是面向移动和HTTP/2设计的高性能通用远程调用框架。

Motan支持Motan协议,使用TCP长连接和Netty通信。Dubbo支持多种协议,包括Dubbo协议、Rmi协议、Hessian协议、HTTP协议、WebService协议、Dubbo Thrift协议、Memcached协议。gRPC支持HTTP/2.0协议,基于Netty4.1.3通信。

序列化方面,Motan默认使用Hessian2,支持JSON格式。Dubbo协议默认序列化为Hessian2,Rmi协议为Java,HTTP协议为JSON。gRPC使用ProtoBuf序列化协议,由用户使用.proto文件定义服务。

Motan支持多种负载均衡模式,如ActiveWeight、Random、RoundRobin等。Dubbo支持随机、轮循、一致性Hash等策略。gRPC提供可插拔的负载均衡器。

容错方面,Motan支持Failover和Failfast策略。Dubbo支持多种策略,包括Failover、Failfast、Failsafe、Failback、Forking、Broadcast。gRPC具有Failover容错策略。

Motan支持Consul、Zookeeper、点对点直连等注册中心。Dubbo支持Zookeeper、Redis、Multicast、Simple注册中心。gRPC允许用户自定义注册中心。

性能方面,Motan在高并发、高负载场景下保持良好性能。Dubbo2.0相比1.0性能提升,但在大数据量处理不如RMI或HTTP。gRPC采用ProtoBuf序列化协议,性能明显优于其他协议。

在配置方面,Motan支持Xml配置和Spring注解配置。Dubbo支持Xml配置、注解配置、属性配置、API配置。gRPC仅支持API配置。

Motan支持多种负载均衡策略,提供自定义动态负载均衡和跨机房流量调整。Dubbo在健壮性和伸缩性方面表现良好,拥有监控中心宕掉仍能使用、数据库宕掉服务仍可用等特性。

总之,不同RPC框架在功能、配置、性能和兼容性上各有优势。Motan注重简单、易用和高并发高可用场景,Dubbo提供丰富配置和扩展性,gRPC支持跨语言调用和自定义注册中心。
温馨提示:内容为网友见解,仅供参考
无其他回答

微服务:通信协议:Restful,RPC(Dubbo、Motan、gRPC)
Dubbo是阿里开源的分布式服务框架,支持分层架构,减少各层耦合。Motan是微博开源的高性能、易于使用的RPC框架。gRPC是面向移动和HTTP\/2设计的高性能通用远程调用框架。Motan支持Motan协议,使用TCP长连接和Netty通信。Dubbo支持多种协议,包括Dubbo协议、Rmi协议、Hessian协议、HTTP协议、WebService协议、Dubbo Th...

Dubbo3应用开发—协议(Dubbo协议、REST协议 、gRPC协议、Triple...
REST协议,尽管被称为“协议”,其实基于HTTP1.x,使得服务可通过URL访问,并便于与SpringCloud结合。开发环境的搭建涉及Pom文件的配置,provider和consumer模块的依赖引入,以及编写Java代码和测试。gRPC协议提供了高性能的RPC服务,api模块和provider模块的开发涉及到Pom文件的修改、Java类的编写以及consumer模块...

Dubbo3应用开发—协议(Dubbo协议、REST协议 、gRPC协议、Triple...
REST协议:虽然与Http1.x协议关联,它便于直接访问和SpringCloud集成。开发时,需要在父项目pom文件中添加依赖,并在api模块编写Java代码,通过url测试。gRPC协议:在api模块和provider模块中,需要调整pom文件依赖,创建Java类,并在consumer模块中进行测试。Triple协议:版本切换到3.2.0后,从maven命令开始...

微服务理论与实践(三)-微服务架构的基本能力和优缺点
微服务架构的基本能力包括:1. Restful轻量级通讯,统一对外提供rest服务,实现各种异构系统服务间的交互。2. RPC通讯,提供统一的RPC框架,如dubbo\/dubbox,motan,thrift,grpc,Karyon\/Ribbon等。3. 服务注册与发现,服务之间需要创建服务发现机制,通过注册中心进行服务信息注册与订阅。4. 负载均衡,实现服...

rpc框架有哪些
RPC框架有多种,包括Dubbo、gRPC、Motan、Thrift等。RPC框架主要用于实现不同进程间的远程过程调用,它们通过网络协议来实现服务间的通信和协调。以下是几种常见的RPC框架的解释:Dubbo框架:Dubbo是一款高性能的Java RPC框架,主要用于微服务架构中的服务间通信。它支持多种服务调用方式,包括同步、异步以及...

rpc 框架有哪些
1. Dubbo:Dubbo是一款高性能、轻量级的开源Java RPC框架。它支持多种服务调用方式,包括同步、异步、单向通信等。Dubbo提供了服务注册与发现、负载均衡、容错处理等功能,广泛应用于微服务架构中。2. gRPC:gRPC是由Google开发的高性能、开源、通用的RPC框架,支持多种语言。它基于HTTP\/2协议,支持双向流...

开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比_百 ...
Dubbo与gRPC在产品定位上存在显著差异。Dubbo不绑定特定通信协议,支持多种RPC协议通信,并支持灵活切换。Triple协议是Dubbo3设计的基于HTTP的RPC通信协议规范,与gRPC协议完全兼容。通过Triple协议,Dubbo可以提供更简单、更稳定的微服务开发体验。Dubbo与Istio在架构上存在相似之处,但在服务治理方面有所不同。

RPC是什么,看完你就知道了
RPC核心概念包括:客户端、服务端、请求、响应、服务、程序、过程和版本。RPC协议定义消息格式,规定请求和响应消息。RPC框架封装参数处理和底层通信,如Apache CXF、Apache Axis2、Dubbo、Spring Cloud、Apache Thrift、ICE和GRPC。远程提供者需提供服务接口、数据结构或服务定义文件,服务调用者获取服务调用...

小白入门微服务(1) - RPC 初体验,python、nodejs互调
对比不同RPC框架,如Dubbo、gRPC和thrift,它们各自具有不同的特点和优势。Dubbo是阿里巴巴团队开发的高性能服务框架,特别适合与Spring框架集成使用。gRPC由Google开发,支持多种语言,并基于HTTP\/2协议,提供了高效且灵活的远程调用能力。thrift是Apache项目的一部分,支持多种语言,适用于跨语言的分布式服务。

dubbo是做什么的?
Dubbo是什么?Apache Dubbo是一款用于解决微服务架构下的服务治理与通信问题的RPC服务开发框架。它提供Java、Golang等多语言SDK实现,具备高性能和可拓展特性,原生支持远程地址发现与通信能力,提供服务治理特性,如服务发现、负载均衡、流量调度等。Dubbo设计高度可扩展,用户可实现流量拦截、选址的定制逻辑。RP...

相似回答
大家正在搜