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


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应用架构如下:


相关内容