当前位置: 首页 > news >正文

无棣网站制作襄樊网站制作公司

无棣网站制作,襄樊网站制作公司,百度文库ai助手网页版,北京自助建站系统RPC协议 协议概述 Dubbo作为一款RPC框架内置了高效的RPC通讯协议,帮助解决服务间的编码与通讯问题,目前支持的协议包括: triple,基于HTTP/1、HTTP/2的高性能通讯协议,100%兼容gRPC,支持Unary、Streming等…

RPC协议

协议概述

Dubbo作为一款RPC框架内置了高效的RPC通讯协议,帮助解决服务间的编码与通讯问题,目前支持的协议包括:

  • triple,基于HTTP/1、HTTP/2的高性能通讯协议,100%兼容gRPC,支持Unary、Streming等通讯模式;支持发布REST风格的HTTP服务。
  • dubbo,基于TCP的功性能私有通讯协议,确定是通用性较差,更合适在Dubbo SDK间使用。
  • 任意协议扩展,通过扩展protocol可以支持任意RPC协议,官方生态提供JsonRPC、thrift等支持。

协议选型

协议性能网关友好型流式通信对语言支持编程API说明
triple支持,服务端流、客户端流、双向流支持,Java、Go、Node.js、JavaScript、RustJava Interface、Protobuf (IDL)在多语言兼容、性能、网关、Streaming、gRPC等放那最负载均衡的协议实现,官方推荐。支持application/json格式payload http直接访问
dubbo不支持支持,Java、GoJava Interface性能最高的私有协议,但前端流量接入、多语言支持等成本较高

多协议扩展

协议配置值说明
HessianhessianHessian定义的RPC通讯协议
Spring HTTPhttpSpring定义的基于HTTP的私有协议
Apache ThriftthriftThrift协议,具备高性能、支持多语言的特点
JSONRPCjsonrpc
RMIrmi
WebServicewebservice

tripe协议

编程模式

使用triple协议时,开发者可以使用 Java Interface、Protocol(IDL)两种方式定义RPC服务,两种服务方式的协议能力是对等的,进影响开发者的编程体验、序列化方式。

Java接口

适用于Dubbo老用户、没有跨语言诉求的开发团队,具备学习成本低的优势。
在该模式下,序列化方式可以选用Hessian、JSON、Kryo、JDK、自定义扩展等任意编码协议。在使用体验上,和老版本的dubbo协议没有任何区别,只需要改一个protocol配置项即可。
配置

dubbo:protocol:name: triport: 50051

Protocol

省略

REST支持

通过为Java接口增加注解,可以发布rest风格的triple服务。

Spring Web注解

maven

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
@RestController
@RequestMapping("/demo")
@DubboService
public class DemoService01Impl implements DemoService01 {private static final Logger logger = LoggerFactory.getLogger(DemoService01Impl.class);@GetMapping("/hello")@Overridepublic String sayHello(String name) {logger.info("------------------ {}", name);return "Hello " + name;}
}

调用方式

curl -X GET   "http://localhost:8080/demo/hello?name=ddd"curl --header "Content-Type:text/html"  --data "name"  http://localhost:50051/com.doudou.rpc.api.DemoService01/sayHello
JAX-RS注解

参考dubbo http流量接入dubbo后端服务

Dubbo协议

简介

dubbo缺省采用的是单一长连接和NIO异步通讯,适用于小数据量、大并发的服务调用,以及服务消费者机器数量远大于服务提供者机器数的情况。
dubbo缺省协议不适合传送大数据量的服务,比如传文件、传视频,除非请求量很低。

  • 长连接:避免了每次调用新建tcp连接,提高了调用的响应速度。
  • 多路复用:单个tcp连接可交替传输多个请求和响应信息,降低了连接的等待空闲时间,从而减少了相同并发下的网络连接数,提供了系统吞吐量。

缺省协议 约束

  • 请求和返回参数都要实现Serializable 接口
  • 参数与返回值不能自定义实现ListMapNumberDateCalendar 等接口,只能使用jdk自带的实现。因为hessian会做特殊处理,自定义属性会丢失。
  • hessian序列化只序列化成员属性,不序列化静态变量和方法。

配置

dubbo:protocol:name: dubboport: 20080

多协议

在同一个进程中可以同时发布多个RPC协议,调用不同的RPC协议。

使用场景

  • 作为服务提供者(provider),同一个服务发布为多个协议,供不同消费端调用。
  • 作为服务提供者(provider),多个服务分别发布为不同协议,供不同消费端调用。
  • 作为服务消费者(consumer),指定以某个特定协议调用某一个服务。

使用方式

同一个服务发布为多个协议

设置协议配置

dubbo:protocols:dubbo-id:name: dubboport: 20880triple-id:name: triport: 50051

服务发布
默认情况下,服务会发布到配置的所有协议上。

@DubboService(protocol = "triple-id,dubbo-id")
public class DemoServiceImpl implements DemoService {}
多个服务发布为不同协议

设置协议配置

dubbo:protocols:dubbo-id:name: dubboport: 20880triple-id:name: triport: 50051

服务发布

@DubboService(protocol = "dubbo-id")
public class DemoServiceImpl implements DemoService {}
@DubboService(protocol="triple-id")
private class GreetingServiceImpl implements GreetingService {}
指定协议调用服务
@DubboReference(protocol="dubbo")
private DemoService demoService;
@DubboReference(protocol="tri")
private GreetingService greetingService;
单端口多协议
dubbo:protocol:name: dubboext-protocol: tri
http://www.dtcms.com/a/524820.html

相关文章:

  • AI服务器工作之电源测试
  • 《Muduo网络库:实现Acceptor类》
  • 第十三篇《TCP的可靠性:三次握手与四次挥手全解析》
  • SSE 流式响应实战:如何在 JavaScript 中处理 DeepSeek 流式 API
  • 在线阅读网站开发教程品牌建设促进会是什么工作
  • 一站式服务门户网站充值支付宝收款怎么做
  • 网站建设超速云免费小程序源码php
  • 如何裁剪u-boot,保留其必要功能,使体积尽可能小
  • 借助智能 GitHub Copilot 副驾驶 的 Agent Mode 升级 Java 项目
  • 广州市网站建设 乾图信息科技在哪里建网站
  • Flutter---自定义日期选择对话框
  • 怎么代码放到网站上网站建设需要的公司
  • k8s部署容器化应用-tomcat
  • AI开发工具实战解析:如何实现企业数据处理流程自动化
  • asp装饰公司网站源码黑龙江 俄语网站制作
  • 网站设计公司无锡网站初期建设的成本来源
  • 通过API接口创建1688订单,一键采购指南
  • UniGetUI下载安装图文教程(附安装包,适合新手)
  • 网站开发怎么自动获取位置wordpress免费博客主题
  • thinkphp做的网站源码怎么做网页啊
  • 备份一体机:数据同步困局突围指南:毫秒级实时同步如何根治80%业务痛点
  • nexus上传jar包图文步骤
  • 【2025 最新】ArcGIS for JS TileLayer/FeatureLayer/ImageLayer 用法对比
  • AntV X6实战:实现节点四边自动连接与自定义箭头的完整配置
  • 黄骅市网站建设广州市官方网站
  • 华为OD机考双机位A卷 - 最长的密码 / 寻找密码 (C++ Python JAVA JS GO)
  • ELK日志分析系统完整部署与应用指南
  • 浦江做网站茂名网站建设公司
  • 【CVE-2025-40778】通过未经请求的答复记录进行 BIND 9 缓存中毒(内含复现步骤)
  • 架构权衡与实践:基于“约束大于规范”的缓存组件封装