php 网站开发流程图,大连招标网,wordpress文件执行顺序,手机图片网站源码Dubbo连接所使用的协议
一、dubbo://协议
1.1、使用场景:
Dubbo 缺省协议采用单一长连接和 NIO 异步通讯#xff0c;适合于小数据量大并发的服务调用#xff0c;以及服务消费者机器数远大于服务提供者机器数的情况。反之#xff0c;Dubbo 缺省协议不适合传送大数据量的服…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-simple 和 transports-http 实现 。可以和原生 WebService 服务互操作即 提供者用 Dubbo 的 WebService 协议暴露服务消费者直接用标准 WebService 接口调用或者提供方用标准 WebService 暴露服务消费方用 Dubbo 的 WebService 协议调用。
5.2、特性 连接个数多连接 连接方式短连接 传输协议HTTP 传输方式同步传输 序列化SOAP 文本序列化 适用场景系统集成跨语言调用
六、thrift://协议
6.1、使用场景:
当前 dubbo 支持的 thrift 协议是对 thrift 原生协议的扩展在原生协议的基础上添加了一些额外的头信息比如 service namemagic 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?categoryprovidersdynamicfalseapplicationfoogroupmemberloadbalanceconsistenthash));
7.2、在客户端引用
7.2.1、在客户端使用
dubbo:reference idcache interfacejava.util.Map groupmember /7.2.2、或者点对点直连
dubbo:reference idcache interfacejava.util.Map urlmemcached://10.20.153.10:11211 /7.2.3、也可以使用自定义接口
dubbo:reference idcache interfacecom.foo.CacheService urlmemcached://10.20.153.10:11211 / 方法名建议和 memcached 的标准方法名相同即get(key), set(key, value), delete(key)。 如果方法名和 memcached 的标准方法名不相同则需要配置映射关系
dubbo:reference idcache interfacecom.foo.CacheService urlmemcached://10.20.153.10:11211 p:setputFoo p:getgetFoo p:deleteremoveFoo /
八、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?categoryprovidersdynamicfalseapplicationfoogroupmemberloadbalanceconsistenthash));
8.2、在客户端引用
8.2.1、在客户端使用
dubbo:reference idstore interfacejava.util.Map groupmember /8.2.2、或者点对点直连
dubbo:reference idstore interfacejava.util.Map urlredis://10.20.153.10:6379 /8.2.3、也可以使用自定义接口
dubbo:reference idstore interfacecom.foo.StoreService urlredis://10.20.153.10:6379 /
方法名建议和 redis 的标准方法名相同即get(key), set(key, value), delet(key)。如果方法名和 redis 的标准方法名不相同则需要配置映射关系
dubbo:reference idcache interfacecom.foo.CacheService urlmemcached://10.20.153.10:11211 p:setputFoo p:getgetFoo p:deleteremoveFoo /