声明
通过对吴水成老师dubbo教程的学习,本人以理解学习的角度向大家分享,希望能帮助到大家。本文中若存在不足,请大家积极留言互动。源码
介绍
当项目达到一定的规模时,传统的Web单工程项目实现复杂的业务就显得很臃肿。若需要对业务进行服务化的拆分,那就需要使用分布式应用系统开发。
Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,是一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案。
本文将从使用Dubbo对传统工程进行服务化改造的思路介绍,最终形成一套可应用于生产环境的高性能、高可用、高扩展性的分布式系统架构。希望帮助大家将Dubbo在实际项目中应用起来。
本文中所用到的技术:MyEclipse、Maven、JDK7、Dubbo2.5.3、Struts2、Spring3、MyBatis3.2、Druid、ActiveMQ、Tomcat7、MySQL5.6、VMWare、CentOS6.5
项目架构对比
1.传统的单项目工程(oa-demo)
使用MVC架构式的方式组织代码结构,Model View Controller,是模型(model)-视图(view)-控制器(controller)。
优点:分层,结构清晰,耦合性低,大型项目代码的复用性得到极大的提高,开发人员分工明确,提高了开发的效率,维护方便,降低了维护成本。
缺点:简单的小型项目,使用MVC设计反而会降低开发效率,层和层虽然相互分离,但是之间关联性太强,没有做到独立的重用。
2.改造成dubbo服务调用方式后的工程结构(多工程模式)
oa-common-parent(Maven父配置)【java maven工程】
oa-facade(门面服务模式接口)【java maven工程】
oa-service(业务服务实现)【java web maven工程】
oa-web(前端展示层)【java web maven工程】
使用dubbo是为了实现系统的分布式服务化,具有以下特点:
1)多个服务
2)多种类型的工程
3)工程间需要相互调用
4)实现工程间解耦(高内聚、低耦合)
5)工程该怎么样拆分?(请思考)
6)如何对大量的工程进行合理有效的管理?(高级篇:持续集成)
项目改造思路
1.oa-demo中业务逻辑层以下的做成dubbo的服务接口,供action层调用。
2.oa-web中的action不能直接访问oa-service中的实现,只能引用oa-facade工程。
3.oa-facade对oa-service中的服务进行包装成facade接口。
4.oa-service对oa-facade中的接口进行实现。调用业务逻辑biz接口。
5.oa-web引用oa-facade中的facade层接口。
6.mybatis的配置文件移动到oa-service中。
7.spring的配置文件移动到oa-service和oa-web中。
基于dubbo进行改造
1.在oa-service中添加spring-dubbo-provider.xml配置。【暴露服务】
2.在oa-web中添加dubbo-consumer.xml配置。【引用服务】
网友评论