分布式轻量级框架 设计&实现 1 - 初步想法&技术选型

技术选型web

  1. 项目maven管理,使用checkstyle,findbugs,cobertura等插件生成项目报告。数据库

  2. 使用Spring框架,采用注解的方式,尽可能零配置。服务器

  3. 统一化持久层模块。Repository分为JPA,MongoDB,HBase,Redis,Zookeeper等。mvc

    1. JPA repository使用Spring Data JPA,尽可能简化Repository层,使用接口 + JPQL操做数据库。负载均衡

    2. MongoDB repository一样使用Spring Data Mongo实现。可是MongoDB毕竟不一样于关系型数据库,Spring Data Mongo的实现方式未见得是最优,有待考虑。框架

    3. 对于像Zookeeper等Spring Data未提供的,考虑封装原生API。maven

  4. 服务所有发布为分布式,使用Netty作长链接通讯,Protobuf或者Kyro作序列化。使用动态代理透明化调用,让客户端感受不到是分布式服务。分布式

  5. 提供基于Zookeeper的SOA的服务管理注册中心,注册服务的提供者和消费者。服务高可用且支持动态扩容及权重调整,支持各类负载均衡策略。工具

  6. 提供监控中心监控服务调用状况,考虑使用Strom流式计算服务监控统计。测试

  7. 提供消息中介机制。对于事务型队列使用ActiveMQ,对于大流量队列使用Kafka。

  8. Web MVC 使用Springmvc,提供Rest API+页面的方式。

  9. 展示层使用freemarker+sitemesh

  10. 使用guava和lombok等能让代码看起来更清爽的类库。

  11. 测试使用junit,dbunit,mockito。尽量的提高测试覆盖率。原来喜欢使用unitils,可是因为长时间未更新,且用起来较为臃肿,暂时考虑放弃。

代码结构

  1. 分为common,containerrepository,mqremote,registry,monitor,service,webmvc,test等模块。每一个模块又会再有子模块,用于具体实现。

  2. Common模块放置系统基础异常,基础对象以及一些工具类。

  3. Container模块定义系统容器的API以及具体的实现,目前只考虑Spring一个容器实现。

  4. Repository定义持久层。又分红JPA,MongoDB,HBase,Redis,Zookeeper等子模块。

  5. Mq定义消息中介层。分红JMS,Kafka等子模块,之后能够考虑增长ZeroMQ,甚至RocketMQ等。

  6. Remote定义远程调用的代码。仍然是提炼出一个API模块,以及多个实现模块。先实现Netty模块,之后能够考虑增长Mina,Grizzly甚至直接使用NIO的模块。

  7. Registry用于注册中心,一样是提炼出一个API模块,以及多个实现。先实现Zookeeper的注册中心,之后能够增长Redis,Multicast等。不一样的是,须要再实现一个注册中心用户界面模块,之后还能够实现一个Shell模块。

  8. Monitor用于监控中心。分为Kafka收集模块,Strom分析模块,以及用户界面模块。

  9. Service定义服务层。透明化调用等模块应该在此层实现。

  10. Webmvc定义Controller跳转,web服务器的一些如多语言,Cookie,Session等相关的类。

  11. Test定义一些基本的测试工具类。

 一些初步的想法,之后会陆续把想法付诸实现,但愿你们多指正,多提宝贵意见,多探讨交流。谢谢。

相关文章
相关标签/搜索