Triple协议踩坑记录

Triple协议

Triple 协议是 Dubbo3 提出的基于 HTTP2 + gRPC 的开放协议,完整兼容 gRPC over HTTP/2,旨在解决 Dubbo2 私有协议带来的互通性问题。一句话概括 Triple:它是基于 HTTP/2 上构建的 RPC 协议,完全兼容 gRPC,并在此基础上扩展出了更丰富的语义。

相比于原有 Dubbo2 协议,Triple 有以下优势:

原生和 gRPC 协议互通。打通 gRPC 生态,降低从 gRPC 至 Dubbo 的迁移成本。
增强多语言生态。避免因 CPP/C#/RUST 等语言的 Dubbo SDK 能力不足导致业务难以选型适配的问题。
网关友好。网关无需参与序列化,方便用户从传统的 HTTP 转泛化 Dubbo 调用网关升级至开源或云厂商的 Ingress 方案。
完善的异步和流式支持。带来从底层协议到上层业务的性能提升,易于构建全链路异步以及严格保证消息顺序的流式服务。
目前 Java 和 Go 的 Dubbo SDK 已全面支持 Triple 协议。在阿里巴巴,Triple 协议广泛用于跨环境、跨语言、跨生态互通,已有数十万容器生产级使用。

Java SDK 支持 IDL 生成 Stub 和 Java Interface 两种方式,多语言、生态互通、流式需求推荐使用 IDL 方式,现有服务平滑升级推荐使用 Interface 方式。

坑一、consumer端调用provider端调用失败

在应用triple协议时,在测试环境同一台机器部署了provider和consumer,注册到同一个nacos,但是consumer始终调用不到provider,排查后发现因为测试环境加了http_proxyhttps_proxy代理

export http_proxy=http://10.126.138.71:3128
export https_proxy=http://10.126.138.71:3128

为什么服务器上加了http代理会导致dubbo服务调用不通呢?

原因是因为triple协议本身,triple协议是基于HTTP2和gRPC协议扩展的,故使用Triple协议时如果加了代理,会受代理影响。

解决办法

通过在服务器上配置no_proxy 来屏蔽内网代理,配置指定IP或者全部内网IP
配置指定IP

export no_proxy="127.0.0.1, localhost, *.cnn.com, 192.168.1.10"

配置所有内网IP

export no_proxy="`echo 10.1.{1..255}.{1..254},` 10.1.255.255"

no_proxy配置参考

坑二、triple协议在docker用应用

在讲dubbo服务build成docker镜像部署应用时,由于docker的隔离特性,consumer端与provider端大都不在同一个局域网内,以至于consumer端provider端无法正常的通信

在dubbo2中,通常在docker镜像启动时通过配置docker环境变量DUBBO_IP_TO_REGISTRYDUBBO_PORT_TO_REGISTRY绑定当前宿主机的IP和端口,通过宿主机的端口暴露注册provider服务

DUBBO_IP_TO_REGISTRY=172.16.0.1      # 当前服务以此IP注册到注册中心
DUBBO_PORT_TO_REGISTRY=20981            # 当前服务以此端口注册到注册中心

但是在使用Triple协议时,使用这两个配置不能完全解决问题,原因是因为dubbo3中元数据和服务使用了不同的端口,以至于DUBBO_PORT_TO_REGISTRY注册的端口不能满足,因此需要暴露两个端口,此时则不可使用此环境变量DUBBO_PORT_TO_REGISTRY指定端口(这是官方的一个bug,后续版本应该会修复)

解决办法

dubbo.application.metadata-service-port=20982  # 指定元数据端口
dubbo.protocol.port=50052                      # 指定服务端口

并将指定好的端口映射到宿主机上
以docker-compose配置为例,完整配置如下

以上阐述均基于dubbo3.0.8版本

Dubbo3的Triple协议踩坑记录相关推荐

  1. Smb协议实现内网共享目录文件处理及踩坑记录

    Smb协议实现内网共享目录文件处理及踩坑记录 一.业务场景 公司内网环境,有部分比较古老的业务数据保存在一台windows服务器的共享目录里面.现在需要操作这个windows服务器的共享目录来上传下载 ...

  2. 日常踩坑记录-汇总版

    开发踩坑记录,不定时更新 心得 RTFM 严谨的去思考问题,处理问题 严格要求自己的代码编写习惯与风格 注意 单词拼写 20200207 mybatis plus 自带insert插入异常 sql i ...

  3. AirSim学习和踩坑记录(不定时更新)

    版权声明:本文为博主原创文章,遵循Creative Commons - Attribution-ShareAlike 4.0 International - CC BY-SA 4.0版权协议,转载请附 ...

  4. Nvidia Jetson TX2 详细刷机教程及踩坑记录(Jetpack3.3,python2.7,torch1.2,torchvision0.2.2)

    本文总结了自带系统安装cuda等深度学习环境和使用jetpack3.3刷机的步骤,虽然自己的代码没用上,但有需要的人可以参考一下. PS:Jetpack4.5的刷机教程请移步另一篇文章: xyl-50 ...

  5. 几乎完美安装! NVIDIA Jetson Nano B01 Ubuntu 18.04.3 LTS 的 ROS 安装和菜鸟的踩坑记录【会继续完善】

    几乎完美安装! NVIDIA Jetson Nano B01 Ubuntu 18.04.3 LTS 的 ROS 安装和菜鸟的踩坑记录 NVIDIA Jetson Nano B01技术规格 Ubuntu ...

  6. 树莓派3B+踩坑记录:一、安装Ubuntu Mate

    树莓派3B+踩坑记录:一.安装Ubuntu Mate 2020-07-27 05:44:15 来源:互联网 分类:相关文章 树莓派3B+踩坑记录:一.安装Ubuntu Mate 树莓派,Ubuntu, ...

  7. 为Jupyter notebook配置R kernel过程及踩坑记录

    为Jupyter notebook配置R kernel过程及踩坑记录 注意:本文为作者安装过程及折腾的过程,内容比较冗杂,如果读者想直接创建一个属于自己的子环境则参考: 如下文章: anaconda下 ...

  8. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  9. TVM: Deep Learning模型的优化编译器(强烈推荐, 附踩坑记录)

    本文作者是阿莱克西斯,原载于知乎,雷锋网(公众号:雷锋网)获得授权转载. (前排提醒,本文的人文内容部分稍稍带有艺术加工,请保持一定的幽默感进行阅读) 关注我最近想法的同学应该知道我最近都在把玩 TV ...

最新文章

  1. iOS开发指南 从Hello World到App Store上架 第5版
  2. R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置数据点的形状、大小)实战
  3. 判断 小程序 是否 滚动到页面底部 scrolltolower_微信小程序长列表性能优化——recycle-view
  4. Sharepoin学习笔记—架构系列--08 Sharepoint的数据模型(DataModel)、数据管理(Data Management)与查询(Query System)
  5. 设置 sideload Outlook Add-ins
  6. less文件的样式无法生效的一个原因,通过WEB浏览器访问服务器less文件地址返回404错误...
  7. vue导出Excel
  8. 药品数据查询系统工具(非付费官网50个)
  9. 自建电驴服务器,电驴服务器怎么连接 eMule连接服务器教程
  10. linux 一键网克,MaxDos8下载一键Ghost|迈思工作室MaxDos工具箱下载 v8.0 官方版_最火软件站...
  11. HTML中如何使用JavaScript创建链接?
  12. Python values()函数用法
  13. TLF(TextFlow) 总结-FLEX
  14. 游戏私服频繁被DDOS攻击怎么办
  15. pandas - 股票K线数据重采样
  16. 央视春晚歌手王琪,和戏歌双绝吴广全在长春芝华仕会盟
  17. 【摄影技术基础】图像处理之图像采集
  18. SPSS数据类型学习
  19. 利用Google Analytics追踪关键词排名
  20. 如何判断鼠标按下的是左键还是右键

热门文章

  1. 【视频教程】帝国CMS制作网站系列教程08—单页模板的制作
  2. Tensorflow基础知识
  3. 【大杂烩】杂7杂8的东西
  4. 微信小程序普通二维码解析
  5. Struts2漏洞爆发 知道创宇云安全已拦截近万攻击样本
  6. 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统
  7. 详细理解JS的三座大山
  8. Python 用plt做动画
  9. Win10管理员用户被禁用,无法登陆系统
  10. 深度学习超分辨率综述阅读笔记(翻译)