`

Dubbox的介绍和简单示例

阅读更多

Dubbo是一个来自阿里巴巴的开源分布式服务框架,当当根据自身的需求,为Dubbo实现了一些新的功能,包括REST风格远程调用、Kryo/FST序列化等等。并将其命名为Dubbox(即Dubbo Extensions)

Demo地址:https://github.com/wosyingjun/DubboxDemo 
类似范例: http://wosyingjun.iteye.com/blog/2312553

Dubbo架构

  • Provider: 暴露服务的服务提供方。
  • Consumer: 调用远程服务的服务消费方。
  • Registry: 服务注册与发现的注册中心。
  • Monitor: 统计服务的调用次调和调用时间的监控中心。
  • Container: 服务运行容器。

为什么使用Dubbox而不是Dubbo

Dubbo是阿里开源的RPC服务调用框架,已经3年没有维护了,而当当网开源的Dubbox在保证Dubbo原有功能的基础上做了一系列优化。

使用Dubbox的好处

  • 支持REST风格远程调用(HTTP + JSON/XML):基于非常成熟的JBoss RestEasy框架,在dubbo中实现了REST风格(HTTP + JSON/XML)的远程调用,以显著简化企业内部的跨语言交互,同时显著简化企业对外的Open API、无线API甚至AJAX服务端等等的开发。事实上,这个REST调用也使得Dubbo可以对当今特别流行的“微服务”架构提供基础性支持。 另外,REST调用也达到了比较高的性能,在基准测试下,HTTP + JSON与Dubbo 2.x默认的RPC协议(即TCP + Hessian2二进制序列化)之间只有1.5倍左右的差距。
  • 支持基于Kryo和FST的Java高效序列化实现:基于当今比较知名的KryoFST高性能序列化库,为Dubbo默认的RPC协议添加新的序列化实现,并优化调整了其序列化体系,比较显著的提高了Dubbo RPC的性能。
  • 支持基于Jackson的JSON序列化:基于业界应用最广泛的Jackson序列化库,为Dubbo默认的RPC协议添加新的JSON序列化实现。
  • 支持基于嵌入式Tomcat的HTTP remoting体系:基于嵌入式tomcat实现dubbo的HTTP remoting体系(即dubbo-remoting-http),用以逐步取代Dubbo中旧版本的嵌入式Jetty,可以显著的提高REST等的远程调用性能,并将Servlet API的支持从2.5升级到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTP Invoker等协议都基于这个HTTP remoting体系)。
  • 升级Spring:将dubbo中Spring由2.x升级到目前最常用的3.x版本,减少版本冲突带来的麻烦。
  • 升级ZooKeeper客户端:将dubbo中的zookeeper客户端升级到最新的版本,以修正老版本中包含的bug。
  • 支持完全基于Java代码的Dubbo配置:基于Spring的Java Config,实现完全无XML的纯Java代码方式来配置dubbo
  • 调整Demo应用:暂时将dubbo的demo应用调整并改写以主要演示REST功能、Dubbo协议的新序列化方式、基于Java代码的Spring配置等等。

注:Dubbox和Dubbo 2.X是兼容的,没有改变Dubbo的任何已有的功能和配置方式(除了升级了Spring之类的版本)

DubboxDemo项目的安装

  • Git Clone https://github.com/dangdangdotcom/dubbox
  • Checkout出来的Dubbox通过Maven编译并安装到本地仓库。
  • Zookeeper安装,作为dubbox的注册中心,见:ZooKeeper 高可用集群的安装及配置
  • 修改配置文件地址<dubbo:registry protocol="zookeeper" address="zookeeper://xxxxxxxxx">。
  • 直接运行ProviderTest类启动服务发布者。
  • 直接运行ConsumerTest类启动服务消费者。
补充:
  • 如果dubbo protocol配置为rest的,可以直接通过浏览器访问http://xxx.xx.xx.xx:8080/user/getUserByPhone/1888888888
  • 服务提供者最终打成jar时建议将启动类设置为com.alibaba.dubbo.container.Main,具体可见Provider的pom.xml

Dubbox支持的远程调用协议

  • dubbo:采用单一长连接和NIO异步通讯,基于TCP协议,默认基于netty框架进行传输,Hessian二进制序列化。
  • RMI:短连接同步传输,基于TCP协议,Java标准二进制序列化。
  • Hessian:短连接同步传输,基于HTTP协议,缺省内嵌Jetty作为服务器实现,Hessian二进制序列化。
  • http:短连接同步传输,基于HTTP协议,采用Spring的HttpInvoker实现,表单序列化。
  • webservice:短连接同步传输,基于HTTP协议,基于CXF实现,SOAP文本序列化。
  • thrift:thrift rpc框架。
  • memcached:采用KV存储的方式传输数据。
  • redis:采用KV存储的方式传输数据。
  • rest:dubbox提供,HTTP + JSON/XML,可内嵌tomcat实现http remoting体系。

Dubbox支持的序列化方式比较

 

推荐协议配置

<dubbo:protocol name="dubbo" serialization="kryo"  port="20990"  />
<dubbo:protocol name="rest" port="8080"  server="tomcat" />

参考

https://github.com/dangdangdotcom/dubbox
http://dubbo.io/User+Guide-zh.htm

3
10
分享到:
评论
1 楼 yxjajl 2016-08-25  
非常有用的介绍,刚好用到这方面的知识,太感谢

相关推荐

    已经打包好的dubbox示例

    【描述】"已经打包好的dubbox的服务生产者和服务消费方,简单的demo"指出这是一个简易的dubbox应用实例,用于演示如何设置服务提供者和消费者。在分布式系统中,服务提供者负责暴露服务,而服务消费者则调用这些服务...

    分布式服务框架 dubbo/dubbox 入门示例

    分布式服务框架 dubbo/dubbox 入门示例 1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少...

    Dubbox源码及资源

    9. **API与配置(API & Config)**:Dubbox提供了简洁的API供开发者使用,同时也支持基于XML的配置方式,让服务的声明和调用变得简单直观。 除了以上核心功能,Dubbox源码的阅读可以帮助开发者深入理解其内部实现,...

    java二进制补码源码-DubboxDemo:dubbox的介绍和简单示例

    java二进制补码源码Dubbo是一个来自阿里巴巴的开源分布式服务框架,当当根据自身的需求,为Dubbo实现了一些新的功能,包括REST风格远程调用、Kryo/FST序列化等等,并将其命名为Dubbox。 Demo:类似范例: ##Dubbo...

    dubbox 2.8.4 rest调用

    【标题】"dubbox 2.8.4 rest调用" 涉及到...同时,也可以学习到如何在实际项目中配置和使用dubbox,以及如何编写和测试RESTful API。这对于提升分布式系统设计和开发能力,特别是对RESTful服务的理解,是非常有帮助的。

    dubbox小demo.7z

    Dubbox是基于Dubbo的扩展,它提供了更多的功能和更好的灵活性,使得在分布式环境中的服务开发变得更加简单。Dubbo是一款由阿里巴巴开源的高性能、轻量级的服务治理框架,而dubbox则是在此基础上进行了一些增强和优化...

    Dubbox Rest

    jfinal 与dubbox 和 rest的 简单列子,不过jfinal 在其中使用的比较少,大多是基于java写的,dubbox 则是在 dubbo的基础上进行的扩展,运行示例的话,必须要有 dubbo admin的管理服务和zookeeper 服务。注意 这是个...

    dubbox 2.8.4 完整jar包

    8. **社区支持**:Dubbo拥有活跃的社区,不断更新和完善,提供了丰富的文档和示例,方便开发者学习和解决问题。 在使用Dubbo 2.8.4 版本时,用户需要注意以下几点: 1. **依赖管理**:确保所有依赖库的版本与Dubbo...

    springboot dubbox 实例 (springbootdubbox-consumer)

    SpringBoot Dubbox 是一个基于 Spring Boot 的 Dubbo 框架集成,它使得在 Spring Boot 应用中使用 Dubbo 变得更加简单和便捷。Dubbo 是阿里巴巴开源的一个高性能、轻量级的服务治理框架,主要用于实现服务间的远程...

    一.dubbox(dangdang V2.8.4)+springBoot(1.4.2.RELEASE)+dubbo-monitor-web 项目源码

    【标题】"一.dubbox(dangdang V2.8.4)+springBoot(1.4.2.RELEASE)+dubbo-monitor-web 项目源码" 提供的是一个结合了Dubbo、Spring Boot以及dubbo-monitor-web的示例项目。这个项目的核心在于展示了如何将这些组件...

    dubbox-demo:一个简单的dubbox学习演示

    总结,"dubbox-demo" 是一个简单直观的示例,它展示了 Dubbox 如何作为分布式服务框架进行服务的发布和消费。通过这个项目,学习者可以深入理解 Dubbox 的核心概念,并熟悉如何在实际开发中应用这些概念。

    spring-dubbox:dubbox 生产者

    Dubbox的主要目标是提供一种轻量级的分布式服务解决方案,它使得服务提供者和消费者之间的通信变得更加简单。 2. **Spring MVC与Dubbox的融合** Spring MVC是Spring框架的一部分,用于构建Web应用的模型-视图-控制...

    dubbo+shiro+ssm框架+zookeeper简单的demo

    【标题】"dubbo+shiro+ssm框架+zookeeper简单的demo" 提供了一个整合了多种技术的示例项目,旨在展示如何在实际开发中融合这些流行的技术组件。这个demo涵盖了分布式服务框架Dubbo、权限管理框架Shiro、Spring、...

    maven+spring mvc+hibernate+dubbo+mysql的demo源码

    在项目中,Dubbo使得微服务之间的调用变得简单高效,提高了系统的可扩展性和解耦性。 5. **MySQL**: MySQL是一款流行的开源关系型数据库管理系统。在这个项目中,MySQL作为数据存储的后端,通过JDBC(Java ...

    框架说明…………………………

    以下是一个简单的示例: ```properties # dubbox.properties dubbo.application.name=first-dubbo-provider dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.port=20880 ``` 2. **服务...

    dubbo-master.zip

    而Spring Boot则简化了基于Spring的应用程序的开发,提供了开箱即用的配置和自动配置功能,使得创建独立的、生产级别的基于Spring的应用变得简单。 在项目中,你可以看到以下几个关键知识点: 1. **Spring Boot...

    Dubbo-demo

    Dubbo是一个高性能、轻量级的开源Java RPC框架,它致力于提供一个简单、高效的服务发现、治理和服务提供方案。在这个Demo中,我们将深入探讨Dubbo的核心功能和基本配置。 首先,我们要理解Dubbo的基本架构。Dubbo...

    dubbo-master

    - `src/main/java`: 存放Dubbo核心组件和示例代码的源码。 - `src/main/resources`: 配置文件,如`dubbo.properties`、`application.xml`等。 - `docs`: 文档和教程。 - `examples`: 示例项目,展示如何使用Dubbo...

    Java分布式RPC服务框架教程,包括DubboDubbox,Motan,gRPC..zip

    在本教程的压缩包文件"rpc-framework-tutorials-master"中,你将找到详细的代码示例、文档和教程,帮助你快速上手并深入理解这些框架的使用方法。通过实践这些教程,你将能够更好地理解和运用这些强大的工具,提升你...

    dubbo-2.8.4包

    3. "dubbox2.8.4":这可能是解压后的Dubbo源码或者二进制包,包含完整的API、配置文件、示例代码等,用户可以通过这部分内容进行开发和调试。 在实际应用中,Dubbo-2.8.4提供了丰富的特性,如RPC(远程过程调用)...

Global site tag (gtag.js) - Google Analytics