白话Dubbo——Dubbo框架说明与当当网Duboox REST

dubbo是阿里巴巴开源SOA服务治理方案的核心框架。自2011年开源以后,已被许多非阿里系公司使用。

dubbo使用java开发,可以使用zookeeper作为注册中心(dubbo有一个简单的注册中心实现,但不支持集群,就是利用map来存储服务地址),dubbo本身并不是可以独立运行的服务,而是一个普通的Java应用框架。使用dubbo框架开发的应用系统可以称作dubbo应用。dubbo服务器的说法可能容易产生误解。

与持久层框架hibernate,控制层框架spring这样的java框架类似,dubbo是一种Java语言环境特有的分布式服务框架,目前没有.net版本。

Java应用程序通过调用dubbo.jar中的功能使自身的接口成为一个RPC远程服务,dubbo中的“接口”概念指的是java语言特有的“interface”类型。

在Java语言中流行面向接口编程的概念,接口中只有方法的声明而没有具体实现,具体实现由接口的子类完成。

这样Java应用通过接口的不同子类,实现功能的可扩展性。使用接口的开发者只需关心自己的逻辑,而无需关心接口的具体实现。普通应用的“interface”只能由该应用自身来调用。

接口如下:

packagecom.jinbin.service.customer;
publicinterface CustomerService {
  public StringgetName();
}

接口子类如下:

publicclassCustomerServiceImpl implements CustomerService{
  @Override
  public StringgetName() {
   System.out.print("我打印");
   return"打印结果";
  }
}

而使用dubbo框架开发的应用可以将自身的“interface”提供给其他应用直接使用。

dubbo的“接口注册与调用”是指:应用通过调用dubbo.jar,将java应用中的某一个interface注册到网络中。

<!--使用zookeeper注册中心暴露服务地址 -->
<dubbo:registryaddress="zookeeper://127.0.0.1:2181"/>

<!--声明需要暴露的服务接口 -->
<dubbo:serviceinterface="com.jinbin.service.customer.CustomerService"ref="demoService"/> 

当其他java应用通过调用dubbo.jar连接远程dubbo应用的RPC服务以后,根据配置,该应用创建和使用的本地interface类,实际上都指向远程同名的RPC服务。这样所有的远程调用都被隐藏起来,开发者使用本地创建的interface,无需考虑具体实现,更无需考虑是本地实现的还是远程实现的。

dubbo分布式应用集群的特点是:每一个dubbo应用都可将自身的interface注册到网络中,供其他应用程序使用。

dubbo目前没有.net版本,因此.net程序目前没法在zookeeper中注册成为一个dubbo公共服务。但可以使用通用的http协议与dubbo应用互相访问。

为了解决不同开发语言调用接口的问题,当当网基于dubbo开发了dubbox(可能与当当网早先由.net开发有关),dubbox支持REST风格远程调用(http + json/xml)。

当当网dubbo应用架构如下:

时间: 2024-08-05 19:50:58

白话Dubbo——Dubbo框架说明与当当网Duboox REST的相关文章

当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用

当当网近日开源了Dubbox项目,可为Dubbo服务框架提供多项扩展功能,包括REST风格远程调用.Kryo/FST序列化等等. 当当网架构部和技术委员会架构师沈理向InfoQ中文站介绍了Dubbox项目,开发背景和主要特点描述如下: Dubbo是一个被国内很多互联网公司广泛使用的开源分布式服务框架,即使从国际视野来看应该也是一个非常全面的SOA基础框架.作为一个重要的技术研究课题,在当当网我们根据自身的需求,为Dubbo实现了一些新的功能,并将其命名为Dubbox(即Dubbo eXtensi

Dubbo服务框架解析(一)

公司的一个项目的分布式系统的服务管理,使用了阿里的服务框架Dubbo,因此这里准备对服务框架进行了介绍. Dubbo服务框架可以使得java分布式系统之间进行解耦,使用一个服务注册中心来统一管理服务的信息,服务提供者提供注册中心进行注册,而服务消费者可以透明地订阅和消费服务.并支持服务的路由.过滤.负载均衡等,支持多种通讯协议及NIO框架,是一个灵活性和扩展性非常棒的服务管理框架. 本文以github中当前版本2.5.4的源码来分析. 为了支持更灵活的扩展性,当前dubbo拆分了非常多的proj

Dubbo服务化框架使用整理

一.垂直应用架构拆分 在应用架构的演进过程中,垂直应用架构因为开发便捷,学习成本低,对于实现业务功能的增删改查提供了高效的开发支持,有利于前期业务高速发展的的快速实现.但是随着系统业务功能的不断扩展和系统代码的的不断攀 升业务模块与模块之间的高耦合度.核心业务的稳定性.根据市场的需求应用前端需要针对不同的业务场景实现不同的有针对性的修改这时候传统的垂直应用架构就满足不了需求,因而需要引入分布式服务框架(RPC框架) 来实现将系统进行水平和垂直拆分,拆分成各个相对独立的服务功能,实现服务的提供者和

Spring4.1.6 + Mybatis3.2.8 (+ Dubbo可选) 框架搭建

毕业开始工作了,在学校时候学的C++,工作需要Java,无奈还要学各种框架前两天看了看书,从网上学习了一下,搭建了这个框架,用于自己学习.也可以用于Spring+mybatis的集成 搭建框架最烦人的地方就是无数的包依赖以及配置文件的编写,下面即是项目的具体框架以及依赖的包(PS:也许不是全部依赖,懒人可以直接把Spring\libs下的所有相关jar都加载进来),这些包基本都可以在Maven仓库中找到:http://search.maven.org/ 一.创建数据库并插入数据 本框架是用的my

Dubbo之快速搭建dubbo应用框架demo

一.安装zookeeper 此处省略 二.安装dubbo-admin 可以去https://github.com/alibaba/dubbo/releases下载源码用Eclipse将dubbo-admin项目打成War包或网络下载War包 将dubbo-admin.war包放到Tomcat的Webapps目录下,并启动Tomcat,然后访问http://localhost/dubbo-admin/ 登录用户密码可以从WEB-INF下的dubbo.properties文件中看到, root账号默

模拟当当网高可用架构之道(分布式集群)

系统中的非功能性需求今天我们的主是当当高可用架构设计之道,高可用并不是功能性的需求,而是传统的IT当中非功能性需求的一部分.大家可以看到我这里罗列了很多非功能性需求,但是这当中并没有「高可用」这三个字. 举一个例子,比如说你买了一台苹果手机,无论是作为手机还是电脑,还是MP3,还是专门用来看视频的,都是功能:那么非功能性呢,比如说大家很崇 拜乔布斯,产品设计极致体验,苹果手机只有1个键,简单好用,这就是一个非功能性需求.另外还有很多朋友买土豪金的手机,就是为了区分开,因为颜色不一 样.这个颜色也

[dubbo] dubbo 基础使用

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册).其核心部分包含:1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化

爬虫之获取当当网全部图书

#encoding:utf-8##author:wuhao# #****** #爬取当当网图书,未使用框架 #main是主函数 #KindLinks.py和 获取数据信息.py 是2个封装的类 #KindLinks只有一个方法,它返回的是 listUrl---(name(小分类名称),url(小分类对应的链接)) LB---(总的分类) #获取数据信息有2个方法,---getpage(),getinfo() getpage()返回的是页码数,getinfo()返回的是每本书中的信息(书名,评论数

我的第一个Scrapy 程序 - 爬取当当网信息

前面已经安装了Scrapy,下面来实现第一个测试程序. 概述 Scrapy是一个爬虫框架,他的基本流程如下所示(下面截图来自互联网) 简单的说,我们需要写一个item文件,定义返回的数据结构:写一个spider文件,具体爬取的数据程序,以及一个管道 pipeline 文件,作为后续操作,比如保存数据等等. 下面以当当网为例,看看怎么实现.这个例子里面我想爬取的内容是前面20页的羽绒服产品,包括产品名字,链接和评论数. 过程 1. 创建一个Scrapy的项目 scrapy startproject