APP下载

基于Dubbox的分布式服务架构设计与实现

2016-05-14谢璐俊杨鹤彪

软件导刊 2016年5期

谢璐俊 杨鹤彪

摘要:随着信息化的发展,企业软件应用规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行。阐述了如何通过Dubbox框架,将垂直应用架构变成分布式服务架构。实验结果表明,改进后的架构可以显著提高系统的健壮性和运行效率。

关键词:Dubbo;Dubbox;SOA;分布式服务架构

DOIDOI:10.11907/rjdk.161137

中图分类号:TP303

文献标识码:A 文章编号:1672-7800(2016)005-0013-03

0 引言

SOA是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,每天为2 000多个服务提供3亿多次访问量支持,广泛应用于阿里巴巴集团的各成员站点。Dubbo自2011年开源后,已被许多非阿里系公司使用[1]。其中当当根据自身的需求,为Dubbo实现了一些新的功能,包括REST风格远程调用、Kryo/FST序列化等等,并将其命名为Dubbox(即Dubbo eXtensions)。鉴于此,很多公司SOA框架都采用Dobbox,本文在介绍Dobbox的基础上,将原有的垂直应用架构查询系统用Dobbox进行改进,使之成为分布式服务架构。本文分析了架构的关键技术,并进行了性能评估。

1 Dubbox 架构设计

1.1 节点角色说明

Provider:暴露服务的服务提供方;

Consumer:调用远程服务的服务消费方;

Registry:服务注册与发现的注册中心;

Monitor:统计服务的调用次数和调用时间的监控中心;

Container:服务运行容器。

1.2 调用关系说明

具体如下:①服务容器负责启动、加载,运行服务提供者;②服务提供者在启动时,向注册中心注册提供的服务;③服务消费者在启动时,向注册中心订阅所需服务;④注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者;⑤服务消费者从地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用;⑥服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

2 数据服务化系统部署与设计

一个完整的Dubbox服务架构部署,包括Provider(服务提供者)、Consumer(消费者)、Registry(注册中心)、Monitor(监控中心)和Container(运行容器),采用Spring的配置方式。下面介绍如何部署Dubbox以及将一个传统的查询业务部署在Dubbox上[3]。

2.1 注册中心ZooKeeper

ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步、命名服务、集群维护等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

本文以ZooKeeper作为Dobbux的注册中心。ZooKeeper的安装十分简便,首先从官网上下载ZooKeeper,解压后,进入到zooKeeper的conf文件夹中,将zoo_sample.cfg重新命名为zoo.cfg,并且写上每个节点的名称和对应IP,然后启动。

2.2 Container

服务的运行依赖于容器,Dubbox支持大多数Web容器,本文的provider使用的是tomcat容器,consumer使用的是jetty容器

2.3 Provider

从github下载Dubbox的源码用maven进行编译,并且用maven将项目导入到eclipse中,其中dubbo-demo-provider就是一个已经配置好的provider的demo,删除里面的类和spring其它服务的配置,添加自己的类,并在spring中添加配置。

→符号左边是Consumer的访问情况,→符号右边是Provider的访问情况,可以看出访问延时非常的小,应用程序分布式部署,拥有了横向扩展和容错性特点,实验证明在采用分布式服务架构以后,优化了查询性能,提高了服务健壮性。

参考文献:

[1]阿里巴巴.Dubbo用户指南[EB/OL].http://dubbo.io/User+Guide-zh.htm

[2]戴亚娥,俞成海,尧飘海.基于REST架构风格的Web2.0实现[J].计算机系统应用,2009(2):165-168.

[3]丁振凡.Spring REST风格Web服务的Json消息封装及解析研究[J].智能计算机与应用,2012,2(2):9-10.

[4]当当.在Dubbo中开发REST风格的远程调用[EB/OL].http://dangdangdotcom.github.io/dubbox/rest.html

[5]陈志刚,曾志文.中间应用服务器动态负载均衡的物理模型[J].计算机工程,2004,27(1):44-45.

(责任编辑:杜能钢)

Abstract:With the development of information technology,the scale of the enterprise software application become lagrer and larger,the conventional vertical application architecture has been unable to cope with it,distributed service architecture and flow computing architecture is imperative.This paper mainly introduces how to use dubbox framework,vertical application architecture into distributed service architecture.The experimental results show that the improved structure,can significantly improve the robustness and efficiency of the system.

Key Words:Dubbo;Dubbox;SOA;Distributed Service Architecture