四时宝库

程序员的知识宝库

Dubbo框架支持多少种协议?各有什么特点?文中一一为你揭晓

概述

Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。

除了dubbo协议外, Dubbo框架还支持另外8种服务暴露协议,如rmi协议、 hessian协议、 http协议、等。不同的协议,有不同的特点,适用不同的场景。一般在实际应用中,默认也是使用最多的是dubbo协议。

各协议的特点

  • dubbo协议
  1. 连接数:单连接
  2. 连接类型:长连接
  3. 传输协议: TCP
  4. 传输方式: NIO异步传输
  5. 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
  • rmi协议
  1. 连接数:多连接
  2. 连接类型:短连接
  3. 传输协议: TCP
  4. 传输方式: BIO同步传输
  5. 适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
  • hessian协议
  1. 连接数:多连接
  2. 连接类型:短连接
  3. 传输协议: HTTP
  4. 传输方式: BIO同步传输
  5. 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者抗压能力较大,可传文件。
  • http协议
  1. 连接数:多连接
  2. 连接类型:短连接
  3. 传输协议: HTTP
  4. 传输方式: BIO同步传输
  5. 适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或 URL传入参数,暂不支持传文件。
  • webservice协议
  1. 连接数:多连接
  2. 连接类型:短连接
  3. 传输协议: HTTP
  4. 传输方式: BIO同步传输
  5. 适用范围:系统集成,跨语言调用
  • thrift协议

Thrift是Facebook捐给 Apache的一个RPC框架,其消息传递采用的协议即为thrift协议。 当前dubbo支持的thrift协议是对thrift原生协议的扩展。 Thrift协议不支持null值的传递。

  • memcached协议

高效的KV缓存服务器。可以对传输的数据使用相应的技术进行缓存。

  • redis协议

同memcached协议类似。

  • rest协议

一般开发具有RESTful风格的服务会使用该协议。

不同服务不同协议

不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议。此时可以根据需要,将不同的服务通过不同的服务进行曝露。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> 
    <dubbo:application name="world"  />
    <dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />
    <!-- 多协议配置 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <dubbo:protocol name="rmi" port="1099" />
    <!-- 使用dubbo协议暴露服务 -->
    <dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" protocol="dubbo" />
    <!-- 使用rmi协议暴露服务 -->
    <dubbo:service interface="com.alibaba.hello.api.DemoService" version="1.0.0" ref="demoService" protocol="rmi" /> 
</beans>

多协议暴露服务

即一个服务支持多种协议,比如可以使用dubbo和rmi协议曝露同一个服务

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    <dubbo:application name="world"  />
    <dubbo:registry id="registry" address="10.20.141.150:9090" username="admin" password="hello1234" />
    <!-- 多协议配置 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <dubbo:protocol name="rmi" port="1099" />
    <!-- 使用多个协议暴露服务 -->
    <dubbo:service id="helloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" protocol="dubbo,rmi" />
</beans>

总结

在Dubbo中,一个服务可以支持多种协议,不同的服务可以使用不同的协议。不同的协议,有不同的特点,适用不同的场景,默认情况下dubbo协议使用的比较多,但应根据项目需求,进行灵活配置。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接