论文部分内容阅读
【摘要】 当今,互联网超高速发展,互联网站点暴增,网站的访问量成指数性激增。适应高并发的网络站点急需建立,目前大型网站的解决高并发访问方式是采用SOA架构体系[1]。本系统选择Dubbo服务框架,实现资源搜索服務,资源分析服务,数据库实现读写分离,redis读写分离。本系统主要介绍基于Dubbo技术开发的分布式视频分享系统。
【关键字】 Dubbo 分布式架构 负载均衡
互联网时代的到来催生大量的互联网站点,随着访问量的增加,如何应对高并发带来的压力已成为任何一个大中型网站都必须考虑的问题。视频分享系统就是一个分布式系统[3],它是基于Dubbo服务框架开发的,同时使用了数据库读写分离、redis读写分等离负载均衡技术。
一、Dubbo架构介绍
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成[2]。Dubbo架构共包含五种节点,代表了五种角色,它们是Provider(生产者)、Consumer(消费者)、Registry(注册中心)、Monitor(注册中心)和Container(服务容器)。Provider是暴露服务的服务提供方;Consumer:是调用远程服务的服务消费方;Registry是服务注册与发现的注册中心;Monitor是统计服务的调用次调和调用时间的监控中心;Container: 是服务运行容器。
二、系统总体设计
视频分享系统是基于Dubbo服务框架开发的,架构设计的关键是合理地设计消费者和生产者。系统中只有一个消费者:主站。即用户可直接访问的项目,用户所有的服务都直接由主站提供。本系统提供了两个服务:资源搜索服务、资源分析服务。资源搜索服务提供对站内数据的检索功能,资源分析服务是对站内资源进行统计分析的项目。两种服务都为主站提供服务,并且都不直接对用户提供任何功能。系统的数据库使用Mysql集群,缓存使用Redis集群,这样使得系统具有了良好的性能。
1、资源搜索服务。资源搜索服务向外暴露的接口满足三点:1)可以根据关键字对索引内的资源进行检索;2)支持搜索结果的分页获取;3)给出关键词使用分词器分词后的结果。在具体实现上,接口的内部定义两个枚举型,SORT_FIELD和SOURCE_TYPE,分别表示排序字段和资源类型。资源搜索接口声明一个方法, String类型参数的关键字;type枚举型搜索资源的类型,有MKV(超清)、AVI(普通)、MP4(高清)等取值;sortField也是枚举型参数,表示排序字段,有UPDATE_TIME(更新时间)、CREATE_TIME(上传时间)、NAME(名称);返回值Page类型,SourceDo和PageVo可以被所有可以被所有项目引用,是控制层和service层的主要实体类。
2、资源分析服务。资源分析在本系统中所占的比重比较小,主要提供的一个功能为分析视频资源受欢迎度。资源分析接口声明一个方法,此方法的参数只有两个,pageNo和pageSize,用于分页获取数据。返回值是Page类型,DownLoadCountSourceDo以聚合的方式对SourceDo进行扩展,而且该实体与SourceDo一样可以被所有项目引用,在服务消费端使用非常方便。
3、主站设计。主站controller层依赖的接口中与核心业务相关的接口共有7个。其中VideoSearchService是资源搜索服务对外暴露的接口,SourceAnalyzer是资源分析服务对外暴露的接口,SourceService接口声明了与资源管理相关的方法,SourceFileService声明了与视频文件管理相关的方法,SourceReportService声明了与资源举报相关的方法,FileUploadService声明了与资源上传相关的方法,SourceCollectionService声明了与资源收藏相关的方法。
三、系统功能
视频资源搜索功能:视频资源搜索过程中,发起一个资源搜索请求,请求将自动分发到sourceController控制器实体,sourceController直接调用本地VideoSearchService的search方法,这里VideoSearchService实体是一个远程服务代理,代理与服务提供端进行通信,服务端运行本地方法得到返回值,再返回到服务消费端,这就是服务调用的整个过程。视频人气排行功能:人气排行榜用例的实现逻辑是,首先Http请求被分发到sourceController控制器实体,sourceController直接调用sourceAnalyzer的getPopularSources方法获取最受欢迎的资源。系统会自动在页面上显示人气排行榜前10名,人气排行榜的推荐就是利用定时任务不断调用sourceAnalyzer的getPopularSources方法,更新servletContext中最受欢迎资源的列表,这样就可以在velocity模板引擎渲染velocity模板的时候直接从内存中快速获取数据了。最新资源功能:最新资源查询的实现是调用最新资源查询调用的接口SourceService在本地实现,不需要远程调用,逻辑与人气排行榜的逻辑是一样的。最新资源也会在系统页面上自动显示前10名,利用定时任务不断从数据库里读取最新数据,刷新内存中的最新资源列表,当客户端请求页面的时候直接将数据渲染到页面上去。资源上传功能:资源上传的实现过程,资源上传分为两步,首先是上传资源,第二步是添加资源信息,每上传一次资源,就需要发起两次http请求,第一次是上传文件,第二次是添加文件信息。
四、结论
Dubbo作为一种分布式网站开发的架构,可以与Spring框架无缝集成。具有连通性、健壮性、伸缩性的优点。本网站采用Dubbo框架使得系统能承受更大的并发访问量,具有非常强的应用价值。视频分享系统的开发解决了四个关键问题:1)搭建稳定的Dubbo服务框架运行的环境;2)合理地设计项目间依赖关系,实现模块化开发;3)使用Lucene创建索引,做到索引即时更新;4)使用数据库负载均衡、缓存等技术提升系统的性能。该系统可以动态增加或减少服务来应对不同的访问量,使用了缓存、数据库读写分离等技术加快页面的响应速度,提升用户体验。
参 考 文 献
[1](美) Mark D. Hansen :使用Java Web服务构建SOA,电子工业出版社, 2009.03
[2]何炎祥:分布式操作系统,高等教育出版社,2005
[3]Nicolai M. Josuttis :SOA in Practice: The Art of Distributed System Design,O’Reilly, 2007.08
【关键字】 Dubbo 分布式架构 负载均衡
互联网时代的到来催生大量的互联网站点,随着访问量的增加,如何应对高并发带来的压力已成为任何一个大中型网站都必须考虑的问题。视频分享系统就是一个分布式系统[3],它是基于Dubbo服务框架开发的,同时使用了数据库读写分离、redis读写分等离负载均衡技术。
一、Dubbo架构介绍
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成[2]。Dubbo架构共包含五种节点,代表了五种角色,它们是Provider(生产者)、Consumer(消费者)、Registry(注册中心)、Monitor(注册中心)和Container(服务容器)。Provider是暴露服务的服务提供方;Consumer:是调用远程服务的服务消费方;Registry是服务注册与发现的注册中心;Monitor是统计服务的调用次调和调用时间的监控中心;Container: 是服务运行容器。
二、系统总体设计
视频分享系统是基于Dubbo服务框架开发的,架构设计的关键是合理地设计消费者和生产者。系统中只有一个消费者:主站。即用户可直接访问的项目,用户所有的服务都直接由主站提供。本系统提供了两个服务:资源搜索服务、资源分析服务。资源搜索服务提供对站内数据的检索功能,资源分析服务是对站内资源进行统计分析的项目。两种服务都为主站提供服务,并且都不直接对用户提供任何功能。系统的数据库使用Mysql集群,缓存使用Redis集群,这样使得系统具有了良好的性能。
1、资源搜索服务。资源搜索服务向外暴露的接口满足三点:1)可以根据关键字对索引内的资源进行检索;2)支持搜索结果的分页获取;3)给出关键词使用分词器分词后的结果。在具体实现上,接口的内部定义两个枚举型,SORT_FIELD和SOURCE_TYPE,分别表示排序字段和资源类型。资源搜索接口声明一个方法, String类型参数的关键字;type枚举型搜索资源的类型,有MKV(超清)、AVI(普通)、MP4(高清)等取值;sortField也是枚举型参数,表示排序字段,有UPDATE_TIME(更新时间)、CREATE_TIME(上传时间)、NAME(名称);返回值Page
2、资源分析服务。资源分析在本系统中所占的比重比较小,主要提供的一个功能为分析视频资源受欢迎度。资源分析接口声明一个方法,此方法的参数只有两个,pageNo和pageSize,用于分页获取数据。返回值是Page
3、主站设计。主站controller层依赖的接口中与核心业务相关的接口共有7个。其中VideoSearchService是资源搜索服务对外暴露的接口,SourceAnalyzer是资源分析服务对外暴露的接口,SourceService接口声明了与资源管理相关的方法,SourceFileService声明了与视频文件管理相关的方法,SourceReportService声明了与资源举报相关的方法,FileUploadService声明了与资源上传相关的方法,SourceCollectionService声明了与资源收藏相关的方法。
三、系统功能
视频资源搜索功能:视频资源搜索过程中,发起一个资源搜索请求,请求将自动分发到sourceController控制器实体,sourceController直接调用本地VideoSearchService的search方法,这里VideoSearchService实体是一个远程服务代理,代理与服务提供端进行通信,服务端运行本地方法得到返回值,再返回到服务消费端,这就是服务调用的整个过程。视频人气排行功能:人气排行榜用例的实现逻辑是,首先Http请求被分发到sourceController控制器实体,sourceController直接调用sourceAnalyzer的getPopularSources方法获取最受欢迎的资源。系统会自动在页面上显示人气排行榜前10名,人气排行榜的推荐就是利用定时任务不断调用sourceAnalyzer的getPopularSources方法,更新servletContext中最受欢迎资源的列表,这样就可以在velocity模板引擎渲染velocity模板的时候直接从内存中快速获取数据了。最新资源功能:最新资源查询的实现是调用最新资源查询调用的接口SourceService在本地实现,不需要远程调用,逻辑与人气排行榜的逻辑是一样的。最新资源也会在系统页面上自动显示前10名,利用定时任务不断从数据库里读取最新数据,刷新内存中的最新资源列表,当客户端请求页面的时候直接将数据渲染到页面上去。资源上传功能:资源上传的实现过程,资源上传分为两步,首先是上传资源,第二步是添加资源信息,每上传一次资源,就需要发起两次http请求,第一次是上传文件,第二次是添加文件信息。
四、结论
Dubbo作为一种分布式网站开发的架构,可以与Spring框架无缝集成。具有连通性、健壮性、伸缩性的优点。本网站采用Dubbo框架使得系统能承受更大的并发访问量,具有非常强的应用价值。视频分享系统的开发解决了四个关键问题:1)搭建稳定的Dubbo服务框架运行的环境;2)合理地设计项目间依赖关系,实现模块化开发;3)使用Lucene创建索引,做到索引即时更新;4)使用数据库负载均衡、缓存等技术提升系统的性能。该系统可以动态增加或减少服务来应对不同的访问量,使用了缓存、数据库读写分离等技术加快页面的响应速度,提升用户体验。
参 考 文 献
[1](美) Mark D. Hansen :使用Java Web服务构建SOA,电子工业出版社, 2009.03
[2]何炎祥:分布式操作系统,高等教育出版社,2005
[3]Nicolai M. Josuttis :SOA in Practice: The Art of Distributed System Design,O’Reilly, 2007.08