Dubbo连接协议配置基础V2.0.0

Dubbo连接所使用的协议

一、dubbo://协议

1.1、使用场景:

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

1.2、特性:

缺省协议,使用基于 minai a 1.1.7 和 hessian 3.2.1 的 tbremoting 交互。

  • 连接个数:单连接

  • 连接方式:长连接

  • 传输协议:TCP

  • 传输方式:NIO 异步传输

  • 序列化:Hessian 二进制序列化

  • 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用 dubbo 协议传输大文件或超大字符串。

  • 适用场景:常规远程服务方法调用

二、rmi://协议

2.1、使用场景:

  • RMI 协议采用 JDK 标准的 java.rmi.* 实现,采用阻塞式短连接和 JDK 标准序列化方式。
  • 注意:如果正在使用 RMI 提供服务给外部访问 ,同时应用里依赖了老的 common-collections 包的情况下,存在反序列化安全风险 。

2.2、特性

  • 连接个数:多连接

  • 连接方式:短连接

  • 传输协议:TCP

  • 传输方式:同步传输

  • 序列化:Java 标准二进制序列化

  • 适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。

  • 适用场景:常规远程服务方法调用,与原生RMI服务互操作

三、hessian://协议

3.1、使用场景:

  • Hessian协议用于集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现。

  • Dubbo 的 Hessian 协议可以和原生 Hessian 服务互操作,即:

    • 提供者用 Dubbo 的 Hessian 协议暴露服务,消费者直接用标准 Hessian 接口调用
    • 或者提供方用标准 Hessian 暴露服务,消费方用 Dubbo 的 Hessian 协议调用。

3.2、特性

  • 连接个数:多连接

  • 连接方式:短连接

  • 传输协议:HTTP

  • 传输方式:同步传输

  • 序列化:Hessian二进制序列化

  • 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。

  • 适用场景:页面传输,文件传输,或与原生hessian服务互操作

四、http://协议

4.1、使用场景:

  • 基于 HTTP 表单的远程调用协议,采用 Spring 的 HttpInvoker 实现

4.2、特性

  • 连接个数:多连接
  • 连接方式:短连接
  • 传输协议:HTTP
  • 传输方式:同步传输
  • 序列化:表单序列化
  • 适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
  • 适用场景:需同时给应用程序和浏览器 JS 使用的服务。

五、webservice://协议

5.1、使用场景:

  • 基于 WebService 的远程调用协议,基于 Apache CXF 的 frontend-simpletransports-http 实现 。可以和原生 WebService 服务互操作,即:
    • 提供者用 Dubbo 的 WebService 协议暴露服务,消费者直接用标准 WebService 接口调用,
    • 或者提供方用标准 WebService 暴露服务,消费方用 Dubbo 的 WebService 协议调用。

5.2、特性

  • 连接个数:多连接

  • 连接方式:短连接

  • 传输协议:HTTP

  • 传输方式:同步传输

  • 序列化:SOAP 文本序列化

  • 适用场景:系统集成,跨语言调用

六、thrift://协议

6.1、使用场景:

  • 当前 dubbo 支持的 thrift 协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信息,比如 service name,magic number 等。
  • 使用 dubbo thrift 协议同样需要使用 thrift 的 idl compiler 编译生成相应的 java 代码,后续版本中会在这方面做一些增强。

七、memcached://协议

  • 基于 memcached实现的 RPC 协议。

7.1、注册 memcached 服务的地址

RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));
registry.register(URL.valueOf("memcached://10.20.153.11/com.foo.BarService?category=providers&dynamic=false&application=foo&group=member&loadbalance=consistenthash"));

7.2、在客户端引用

7.2.1、在客户端使用:
<dubbo:reference id="cache" interface="java.util.Map" group="member" />
7.2.2、或者,点对点直连:
<dubbo:reference id="cache" interface="java.util.Map" url="memcached://10.20.153.10:11211" />
7.2.3、也可以使用自定义接口:
<dubbo:reference id="cache" interface="com.foo.CacheService" url="memcached://10.20.153.10:11211" />
  • 方法名建议和 memcached 的标准方法名相同,即:get(key), set(key, value), delete(key)。

  • 如果方法名和 memcached 的标准方法名不相同,则需要配置映射关系:

<dubbo:reference id="cache" interface="com.foo.CacheService" url="memcached://10.20.153.10:11211" p:set="putFoo" p:get="getFoo" p:delete="removeFoo" />

八、redis://协议

  • 基于 Redis实现的 RPC 协议。

8.1、注册 redis 服务的地址

RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));
registry.register(URL.valueOf("redis://10.20.153.11/com.foo.BarService?category=providers&dynamic=false&application=foo&group=member&loadbalance=consistenthash"));

8.2、在客户端引用

8.2.1、在客户端使用:
<dubbo:reference id="store" interface="java.util.Map" group="member" />
8.2.2、或者,点对点直连:
<dubbo:reference id="store" interface="java.util.Map" url="redis://10.20.153.10:6379" />
8.2.3、也可以使用自定义接口:
<dubbo:reference id="store" interface="com.foo.StoreService" url="redis://10.20.153.10:6379" />
  • 方法名建议和 redis 的标准方法名相同,即:get(key), set(key, value), delet(key)。
  • 如果方法名和 redis 的标准方法名不相同,则需要配置映射关系:
<dubbo:reference id="cache" interface="com.foo.CacheService" url="memcached://10.20.153.10:11211" p:set="putFoo" p:get="getFoo" p:delete="removeFoo" />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink Window中典型的增量聚合函数(ReduceFunction / AggregateFunction)

一、什么是增量聚合函数 在Flink Window中定义了窗口分配器&#xff0c;我们只是知道了数据属于哪个窗口&#xff0c;可以将数据收集起来了&#xff1b;至于收集起来到底要做什么&#xff0c;其实还完全没有头绪&#xff0c;这也就是窗口函数所需要做的事情。所以在窗口分配器…

计算机组成原理-ATT格式vsIntel格式

文章目录 AT&T格式 vs lntel格式 x86汇编语言是lntel格式&#xff0c;还有一种汇编语言格式是AT&T AT&T格式 vs lntel格式 lntel格式中取主存地址内容未指明长度默认为32位&#xff0c;对应下图中第四行右边的指令 百分号 美元符号 小括号 可用于计算机结构体数组…

竞赛保研 python+opencv+机器学习车牌识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于机器学习的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&#xff0c;适…

Amazon Q:对话智能赋能企业发展

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 。 在最近举办的亚马逊云科技大会上&#xff0c;引人瞩目的消息是A…

西米支付:微信支付发布了一则重大公告!从2024年1月8日开始执行。

最近&#xff0c;微信支付发布通告表示对服务商合作协议和规则进行了修订。这次修订进一步明确了收单外包服务机构的备案义务&#xff0c;并加强了对违约合作伙伴的处理措施。 修订后的协议将于2024年1月8日开始生效。 根据修订后的协议&#xff0c;服务商需在开始提供收单外包…

斑马zebra目标检测数据集VOC+YOLO格式2300张

斑马是由四百万年前的原马进化出来的&#xff0c;最早出现的斑马可能是细纹斑马。有关史前马科动物的化石现存于美国爱达荷州克文的克文化石床国家博物馆。斑马的史前马为“克文马”&#xff08;美洲斑马或者克文斑马&#xff09;&#xff0c;学名为“Equussimplicidens”&…

Llinux面试题2

请描述一下 chmod 命令。 答&#xff1a;chmod 命令用于修改文件或目录的权限。它可以添加或删除对文件的读、写和执行权限。 在 Linux 中&#xff0c;如何修改文件的权限&#xff1f; 答&#xff1a;可以使用“chmod”命令来修改文件的权限。例如&#xff0c;通过以下命令将文…

​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案

随着“第四次工业革命”的爆炸式发展&#xff0c;众多企业都将自己的业务与迅速发展的应用开发和网站建设领域高度绑定。而对于众多有上云需求的企业和个人用户来说&#xff0c;选择一款自己的服务器配置就成为了一项至关重要的任务。而随着需求端的不断扩大&#xff0c;云服务…

第二步:私有镜像仓库Harbor的使用

前序&#xff1a; &#x1f517;第一步&#xff1a;私有镜像仓库Harbor的安装部署 一、将容器打包为镜像&#xff0c;上传到Harbor 1、查看镜像 输入命令 docker images打印返回 REPOSITORY TAG IMAGE ID CREATED …

Nacos-NacosRule 负载均衡—设置集群使本地服务优先访问

userservice: ribbon: NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 NacosRule 权重计算方法 目录 一、介绍 二、示例&#xff08;案例截图&#xff09; 三、总结 一、介绍 NacosRule是AlibabaNacos自己实现的一个负载均衡策略&…

《教育信息化论坛》期刊杂志论文发表投稿

《教育信息化论坛》由中原大地传媒股份有限公司主管&#xff0c;河南电子音像出版社、文心出版社主办&#xff0c;我刊立足于教育信息化、教育现代化科研&#xff0c;重点介绍国内外信息化、现代化教学手段、教学方式、教学传播研究的新成果和新观点&#xff0c;推广成功的国内…

【嵌入式开发 Linux 常用命令系列 14 -- source hello.sh 和 ./hello.sh 的区别】

文章目录 source hello.sh 和 ./hello.sh 的区别source hello.sh./hello.sh使用场景 source hello.sh 和 ./hello.sh 的区别 问题背景&#xff1a; 创建了目录~/.local/bin 并将其在.bashrc文件中添加到path 中&#xff0c;export PATH$PATH:/home/sam/.local/bin。 在 ~/.loc…

KVO(键值观察)

KVO&#xff08;键值观察&#xff09;是Objective-C 对观察者设计模式的一种实现。 举个栗子&#xff1a;指定一个被观察对象(A类)&#xff0c;当被观察对象某个属性(A中的字符串name)发生更改时&#xff0c;对象&#xff08;B类&#xff09;会获得通知&#xff0c;并作出相应…

【Spring教程28】Spring框架实战:从零开始学习SpringMVC 之 请求与请求参数详解

目录 1 设置请求映射路径1.1 环境准备 1.2 问题分析1.3 设置映射路径 2 请求参数2.1 环境准备2.2 参数传递2.2.1 GET发送单个参数2.2.2 GET发送多个参数2.2.3 GET请求中文乱码2.2.4 POST发送参数2.2.5 POST请求中文乱码 欢迎大家回到《Java教程之Spring30天快速入门》&#xff…

记录 | docker报错:Key permissions are too open: Set correct permissions

docker 报错&#xff1a; Key permissions are too open: Set correct permissions 具体的&#xff1a; WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0777 for /app/.ssh/id_rsa are too open. It is required that your private key files are NOT accessibl…

ls高级用法

1 使用通配符列出文件夹的内容 ls ~/videos/*.wmv 刚才你已经学会了如何在包含多个文件的目录中查找文件&#xff0c;但是还有一种更快的方法。如果你知道正在找的Tiger Woods的视频文件是Windows Media格式的&#xff0c;那么这个文件名一定是以.wmv为后缀的&#xff0c;这时…

认识缓存,一文读懂Cookie,Session缓存机制。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

一、CM4树莓派系统烧录

操作系统&#xff08;Raspberry Pi OS&#xff09;应用程序 Raspberry Pi OS系统&#xff08;树莓派推荐系统&#xff09;&#xff1a;较小的内存占用、较高的易用性以及对浮点单元的支持 浮点单元&#xff1a;浮点运算单元&#xff08;FPU&#xff09;是处理器中专门进行浮点…

windows redis 允许远程访问配置

安装好windows版本的redis&#xff0c;会以服务方式启动&#xff0c;但是不能远程访问&#xff0c;这个时候需要修改配置。redis安装路径下会有2个配置文件&#xff0c;究竟需要怎么修改才能生效呢&#xff1f;看下图 这里的redis服务指定了是redis.windows-service.conf文件&…

【CMU15445】Fall 2019, Project 4: Logging Recovery 实验记录

目录 实验准备实验测试Task 1: LOG MANAGER 实验准备 官方说明&#xff1a;https://15445.courses.cs.cmu.edu/fall2019/project4/ 实验测试 Task 1: cd build make log_manager_test ./test/log_manager_testTask 1: LOG MANAGER Log Manager 有一个全局的实例&#xff0…