范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

如何用一个端口同时暴露HTTP12gRPCDubbo协议?

  本文我们将介绍 Apache Dubbo 灵活的多协议设计原则,基于这一设计,在 Dubbo 框架底层可灵活的选用 HTTP/2、HTTP/REST、TCP、gRPC、JsonRPC、Hessian2 等任一 RPC 通信协议,同时享用统一的 API 与对等的服务治理能力。同时,我们还介绍了 Dubbo 的单端口多协议能力,也就是在单个端口同时监听、处理多个协议,这对于简化多协议同时发布的场景非常有用。
  不绑定 RPC 协议的设计原则
  Aliware
  Dubbo 框架不绑定任何通信协议,你可以根据业务场景选择 HTTP/2 通信协议,也可以选用 HTTP/REST、TCP(Dubbo2)、gRPC、JsonRPC、Hessian2 等官方支持的通信协议,如果以上协议都不能满足需求,还可以非常方便的通过定制方式接入自定义协议。如果你想在一个应用内使用多个协议,也可以非常容易的做到,比如一个接口使用 HTTP/2 通信,另一个接口使用 TCP 通信,一个应用内发布或调用多个使用不同协议的服务。
  通过 Dubbo 框架的多协议支持,你可以做到: 将任意通信协议无缝地接入 Dubbo 服务治理体系。Dubbo 体系下的所有通信协议,都可以享受到 Dubbo 的编程模型、服务发现、流量管控等优势。比如 gRPC over Dubbo 的模式,服务治理、编程 API 都能够零成本接入 Dubbo 体系。 兼容不同技术栈,业务系统混合使用不同的服务框架、RPC 框架。比如有些服务使用 gRPC 或者 Spring Cloud 开发,有些服务使用 Dubbo 框架开发,通过 Dubbo 的多协议支持可以很好的实现互通。 让协议迁移变的更简单。通过多协议、注册中心的协调,可以快速满足公司内协议迁移的需求。比如如从自研协议升级到 Dubbo 协议,Dubbo 协议自身升级,从 Dubbo 协议迁移到 gRPC,从 HTTP 迁移到 Dubbo 协议等。
  官方接入的主流协议
  Aliware
  HTTP/2 (Triple)
  Triple 协议是 Dubbo3 发布的面向云原生时代的通信协议,它基于 HTTP/2 并且完全兼容 gRPC 协议,原生支持 Streaming 通信语义,自 Triple 协议开始,Dubbo 还支持基于 Protobuf 的服务定义与数据传输。Triple 具备更好的网关、代理穿透性,因此非常适合于跨网关、代理通信的部署架构,如服务网格等。
  Triple 协议的核心特性如下: 支持 TLS 加密、Plaintext 明文数据传输 支持反压与限流 支持 Streaming 流式通信
  在编程与通信模型上,Triple 协议支持如下模式: 消费端异步请求(Client Side Asynchronous Request-Response) 提供端异步执行(Server Side Asynchronous Request-Response) 消费端请求流(Request Streaming) 提供端响应流(Response Streaming) 双向流式通信(Bidirectional Streaming)
  TCP (Dubbo2)
  Dubbo2 协议是基于 TCP 传输层协议之上构建的一套 RPC 通信协议,由于其紧凑、灵活、高性能的特点,在 Dubbo2 时代取得了非常广泛的应用,是企业构建高性能、大规模微服务集群的关键通信方案。在云原生时代,我们更推荐使用通用性、穿透性更好的 Triple 协议。
  gRPC
  你可以用 Dubbo 开发和治理微服务,然后设置使用 gRPC 协议进行底层通信。但为什么要这么做那,与直接使用 gRPC 框架对比有什么优势?简单的答案是,这是使用 gRPC 进行微服务开发的常用模式,具体请往下看。
  gRPC 是谷歌开源的基于 HTTP/2 的通信协议,如同我们在产品对比[1] 文档中提到的,gRPC 的定位是通信协议与实现,是一款纯粹的 RPC 框架,而 Dubbo 定位是一款微服务框架,为微服务实践提供解决方案。因此,相比于 Dubbo,gRPC 相对欠缺了微服务编程模型、服务治理等能力的抽象。
  在 Dubbo 体系下使用 gRPC 协议 (gRPC over Dubbo Framework) 是一个非常高效和轻量的选择,它让你既能使用原生的 gRPC 协议通信,又避免了基于 gRPC 进行二次定制与开发的复杂度 (二次开发与定制 gRPC,是很多企业规模化实践后证实不可避免的环节,Dubbo 框架替开发者完成了这一步,让开发者可以直接以最简单的方式使用 gRPC)。
  REST
  微服务领域常用的一种通信模式是 HTTP + JSON,包括 Spring Cloud、Microprofile 等一些主流的微服务框架都默认使用的这种通信模式,Dubbo 同样提供了对基于 HTTP 的编程、通信模式的支持。
  其他通信协议
  除了以上介绍的几种协议之外,你还可以将以下协议运行在 Dubbo 之上。对 Dubbo 而言,只需要修改一行简单的配置,就可以切换底层服务的通信协议,其他外围 API 和治理能力不受影响。 Hessian2 Thrift JsonRPC
  单端口多协议
  Aliware
  自 Dubbo 3.2 版本开始,Dubbo 提供了单个端口上的协议复用能力,通过调整 Protocol 配置即可实现。
  比如在开启 HTTP/2 (Triple) 协议 或 gRPC 协议后,如我们同时启动端口复用,还可以在相同的端口上为服务增加 TCP (Dubbo2) 协议、Qos 协议的支持。这些所有流量的入口都在一个统一 port 端口, Dubbo 框架负责在端口之上识别不同的 RPC 协议,并进行处理器分发,从而实现单个端口上的协议复用。
  对于需要处理多个协议的场景,端口复用非常有价值。它可以用于服务的协议迁移,并且可以节约端口以及相关的资源,减少运维的复杂性等。
  实现原理
  以下是端口复用实现的原理图
  在服务的创建阶段,通过从 Config 层获取到服务导出的协议配置从而创建不同的 Protocol 对象进行导出。在导出的过程中,如果不是第一次创建端口复用的 Server,那么 Exchanger 会将 Protcol 层传递的数据保存到 Server,用于后续处理该协议类型的消息。 当客户端的消息传递过来后,首先会通过 Server 传递给 ProtocolDetector,如果完成了识别,那么就会标记该客户端为对应的协议。并通过 WireProtocol 配置对应的处理逻辑,最后交给 ChannelOperator 完成底层的 IO 框架和对应的 Dubbo 框架的处理逻辑的绑定。 以上的协议识别完成之后,Channel 已经确定了如何处理远程的客户端消息,通过对应的 ServerPipeline 进行处理即可(在处理的过程中也会根据配置信息决定消息的处理线程)。
  使用场景
  以下是几种常见的使用场景。 最常用的是用于服务发现。这允许应用程序通过网络发现服务,然后使用同一端口与它们通信,有助于降低网络通信的复杂性,并使其更易于管理。 可以用于负载平衡。这允许应用程序在多个远程服务或服务集群之间平衡负载,有助于提高服务的可扩展性、可靠性和可用性。 可以用于服务监控。这允许应用程序监视远程服务的运行状况,并在服务出现故障或变得不可用时发出警报,有助于确保服务的可用性并减少停机时间。
  参考用例:
  https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-port-unification
  使用方式
  在同一主机上部署多个服务或需要通过负载均衡器访问多个服务。
  关于 Dubbo 支持的配置方式  配置说明 [2]  服务多协议导出
  ext-protocol 参数支持配置多个不同的协议,协议之间通过","进行分隔。 xml 配置      API 配置ProtocolConfig config = new ProtocolConfig(CommonConstants.TRIPLE, -1);   config.setExtProtocol(CommonConstants.DUBBO+",");yaml 配置dubbo:    application:      name: dubbo-springboot-demo-provider    protocol:      name: tri      port: -1      ext-protocol: dubbo,properties 配置dubbo.protocol.name=tri dubbo.protocol.ext-protocol=dubbo, dubbo.protocol.port=20880Qos 接入Qos 模块导入      org.apache.dubbo      dubbo-qos  
  完成 Qos 模块的导入之后,相关的配置项可参考 Qos 操作手册[3] 进行配置。
  默认情况下,基于端口复用的 Qos 服务在模块导入后是启动的。 Qos 使用
  将 Qos 协议接入到端口复用的场景下,需要在建立连接之后,客户端先向服务端发送消息,对比将 Qos 协议通过单个端口提供服务,端口复用版的 Qos 协议在处理 telnet 连接的情况下需要用户执行一些操作,完成协议识别(二选一)。 直接调用命令
  直接调用 telnet 支持的命令也可以完成识别,在用户不熟悉的情况下可以调用 help 指令完成识别
  2. 发送 telnet 命令识别
  通过 telnet 命令建立连接之后,执行以下几个步骤: 使用 crtl + "]" 进入到 telnet 交互界面(telnet 默认的 escape character) 调用 "send ayt" 向服务端发送特殊识别字段(为 telnet 协议的一个特殊字段) 回车完成消息发送并进入到 dubbo 的交互界面
  服务引用
  以 dubbo-samples-port-unification[4] 中的例子作为基础, 引用不同协议的服务和非端口复用情况下的配置是一致的,下面通过 Consumer 端的 InvokerListener 输出调用过程中的 URL 信息。 ReferenceConfig reference = new ReferenceConfig<>(); reference.setInterface(GreetingService.class); reference.setListener("consumer"); reference.setProtocol(this.protocol); // reference.setProtocol(CommonConstants.DUBBO); // reference.setProtocol(CommonConstants.TRIPLE);
  总结
  Aliware
  对于微服务实践中经常会遇到的多协议通信的场景,Dubbo 不绑定协议的设计让用户可以灵活的选择通信协议,整个协议选择过程对上层 API 编码与运维治理完全透明;对于要在一个集群内同时处理多个协议的场景,Dubbo 的多协议支持也可以从容应对,而单端口的多协议复用支持进一步简化了这一过程。
  在接下来的一篇文章中,我们将详细介绍如何在 Dubbo 框架中开发 gRPC 协议通信的服务,极大的简化了 gRPC 微服务开发成本,避免了二次开发,为原生 gRPC 提供了统一的编程 API 与开箱即用的服务治理能力。
  相关链接:
  [1]产品对比
  https://cn.dubbo.apache.org/zh-cn/overview/what/xyz-difference/
  [2]配置说明
  https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/
  [3]Qos 操作手册
  https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/overview/
  [4]dubbo-samples-port-unification
  https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-port-unification
  作者:华钟明
  来源:微信公众号:阿里巴巴中间件
  出处:https://mp.weixin.qq.com/s/3Qr6diH6WJSwv8HIma7-eA

冬游贵州丨天冷了,不来六盘水百车河泡个温泉?春赏花夏避暑秋风情冬康养,多彩贵州四季都有醉人的魅力。眼下,冬游贵州正当时!冬游贵州,你可以登山赏雪亲近大自然村寨寻冬,感受民族节庆欢乐温暖过冬,尽享泉世界疗养南方滑雪,感受运动激2023自驾去哪里?国内100条精华自驾路线地图攻略集合分享(1)2023自驾去哪里?国内100条精华自驾路线地图攻略集合分享1,国道214自驾路线214国道,也叫西澜线,起于青海西宁,终于云南澜沧县,全长2961公里。有中国最美国道之称。2,3严春芳泰国游记(二)抵达华欣昨天下午到达曼谷机场后,临时决定取消去巴提雅的计划,乘大巴前往华欣。2006年我去过巴提雅,而旅游胜地华欣没有来过。华欣是泰国中部的一个城市,离曼谷280公里。三个小时的车程。华欣全列卧铺,夕发朝至!这趟Y字头列车够火爆!夕发朝至,每日开行全列卧铺,特色包厢全程908公里旅时11小时40分这就是近期客流火爆的中国雪都阿勒泰号旅游列车闪闪发亮的银蓝相间标识别具民族风情的红棕色木质装潢让前来体验的旅客流优待再升级!这些福利政策查收从速尊崇军人又出新举措今天梳理部分优惠信息供广大战友参考免门票广西壮族自治区退役军人事务厅发布首批30个景区景点面向全国持退役军人和其他优抚对象优待证的人员免首道门票具体名单5A级(1全年免门票!这个景区放大招啦樱花纷飞杉红似火,四季变幻的美景如约而至三千多亩形态优美的静水湖面万亩清新优质的茶园纯净自然的湿地潺潺灵动的溪流肥沃秀美的生态农田和郁郁葱葱的天然林木这里是兰湖旅游度假区毕晓敏摄从今年(2023年)1月1日起(如遇重大活如诗如画醉美港南!贵港市三景区被确定为国家AAAA级旅游景区安澜公园南江古遗址南山风景名胜区山边旅游区贵港义乌中国小商品城冲口旅游区桂艾科技谭寿林故居铜鼓湾温泉缤纷港湾,美丽南国,这里林木葱郁,荷叶飘香,颇有人在山水间,却似画中游的惬意。作最新公告!滨州新增3家国家AAA级景区依照中华人民共和国国家标准旅游景区质量等级的划分与评定和山东省旅游景区质量等级管理办法,经有关县(市区)旅游行政部门推荐,滨州市文化和旅游局组织综合评定,以下3家旅游景区达到国家A中国节能环保集团科技创新基地建成启用图为中国节能环保集团有限公司总部。(受访者供图)中国节能环保集团有限公司科技创新基地近日正式建成启用,首期工程聚焦固废资源化工业废水处理应用技术领域,重点解决基本研发和分析测试需求生活,你好!我的生活也是头条人生过半,才慢慢找到生活的方向。从小活得就愣愣懂懂,好像总也听不懂大人们的话里有话。小时候,每次去父亲单位,都被单身姑娘们抱到宿舍当洋娃娃玩!稍大点,也是走到哪里都十面埋伏!你信不信我让你看不到明天?讲两个小故事吧昨天的文章没了,不少读者后台说寿老,能不能发我一份,我还没来得及看呢。我建议大家还是不要看了,我也不会再发,看到的读者也别发给其他人了。虽然,我觉得自己的内容很积极,也非常向上,但
25岁以下最具天赋的五位球员19届双雄莫兰特锡安带队分区前二NBA自成立距今已经有76年的历史了,在NBA历史上长河当中出现了很多顶级球星,像出道即巅峰的魔术师张伯伦,还有大器晚成的纳什比卢普斯,当然他们都属于个例,一般来说一名球员在27岁爆冷!榜一榜二纷纷落败,篮网76人抓住机会,东部小强有望逆袭12月17日,东西部10场常规赛结束后,东部排名榜再次大变榜首的凯尔特人和雄鹿纷纷落败,但仍是第一梯队篮网76人和尼克斯抓住机会,不断连胜9连败垫底排名榜后喜提5连胜,魔术成为打不(体育)篮球NBA常规赛湖人胜掘金当日,在20222023赛季NBA常规赛中,洛杉矶湖人队主场以126比108战胜丹佛掘金队。12月16日,湖人队球员勒布朗詹姆斯(左)在比赛中防守掘金队球员尼古拉约基奇。新华社发(银杏村里的金色时光江东社区隶属于云南省腾冲市固东镇,全村面积35。42平方公里,由江云陈家寨坝心四合4个自然村组成。这里以满村银杏而闻名,有连片的银杏树1万余亩4万余株,又被称作银杏村。银杏村坐落于截至目前,盘点2022年配备金属边框的手机1iPhone14搭载满血版A15仿生处理器,采用台积电5nm工艺制程,拥有卓越的性能以及超低功耗,无论游戏还是日常,都游刃有余正面是一块6。1英寸的AMOLED柔性直屏,支持1。云南省腾冲市固东镇江东社区银杏村里的金色时光(走进传统村落)来源人民日报图远眺银杏村。图游客们在银杏树下品尝银杏宴。图银杏村的绣娘们在绣制绒绣。图使用银杏果银杏花制作的当地美食。图银杏村的农家小院。图俯瞰春日的银杏村,民居坐落在青葱的银杏树RMC吉鲁洛里等老将可能从国家队退役,本泽马要看教练是谁直播吧12月19日讯据法媒RMC报道,在世界杯决赛后,有几名法国球员可能就此从国家队退役。吉鲁洛里曼丹达等老队员最有可能从国家队退役。决赛上场仅第41分钟被换下,吉鲁可能会对这场新行走都江堰丨奚佳来源嘉兴日报嘉兴在线去了一趟九寨沟,再从成都转机回嘉兴。游览过都江堰后,便临时住在都江堰市,反而是景区外面的灌县古城让人流连忘返。在景区口,有一座高耸的桥,名叫南桥。桥有顶,从两侧女排最佳阵容争议四起,天津双星全部无缘,上海队竟无一人上榜2022年女排超级联赛进入一周多的休息时间,各大女排俱乐部将在20日前赶赴上饶和漳州两个赛区,分别参加本赛季的排位赛和八强赛。其中上饶赛区,将有G组和H组两个分别分别展开较量,获得学研促发展用爱促成长高青县国井苑幼儿园线上教师培训学研促发展用爱促成长高青县国井苑幼儿园线上培训特殊时期,改变的是学习形式,不变的是一直向前的成长步伐。为进一步加强学前教育教研员队伍建设队伍建设,切实发挥教研员的服务和引领作用,助这种热销牙膏有问题,家长千万小心宝宝刷牙爱吞牙膏宝爸宝妈担心孩子氟中毒怎么破?网上最近出现了一种可以吃的牙膏网络平台上有大量儿童牙膏标注可吞咽其实这种可吞咽牙膏并不靠谱有上海市民就认为自己购买的可吞咽低氟儿童牙膏