文档章节

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

亮_ShardingSphere
 亮_ShardingSphere
发布于 2013/10/12 18:32
字数 838
阅读 1053
收藏 17

技术选型

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

  2. 使用Spring框架,采用注解的方式,尽量零配置。

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

    1. JPA repository使用Spring Data JPA,尽量简化Repository层,使用接口 + JPQL操作数据库。

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

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

  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定义一些基本的测试工具类。

 一些初步的想法,以后会陆续把想法付诸实现,希望大家多指正,多提宝贵意见,多探讨交流。谢谢。


 


 











© 著作权归作者所有

亮_ShardingSphere

亮_ShardingSphere

粉丝 379
博文 29
码字总数 28394
作品 1
东城
架构师
私信 提问
加载中

评论(1)

taojintianxia
taojintianxia
test
企业管理系统分布式架构搭建

【业务需求】 一、功能需求 1、搭建企业管理软件后台架构; 2、架构支持模块化分布式,可采用dubbo,springboot等技术; 3、支持多数据源,mybatis,mongdb,mysql同时工作; 4、架构具有良好...

Celesea
2017/07/24
80
1
基于Hadoop开发网络云盘系统架构设计方案第一稿

引言   云计算技术的发展,各种网络云盘技术如雨后春笋,层出不穷,百度、新浪、网易都推出了自己的云盘系统,本文基于开源框架Hadoop设计实现了一套自己的网络云盘系统,方案为初步设计方...

阿尔法胖哥
2013/08/28
0
0
架构设计和技术选型的思路总结

文仅给出架构设计时需要考虑的知识点,并不会对具体知识点做详细介绍。 一、顶层架构 Linux/Windows平台、CS/BS架构、大数据架构、应用领域(游戏、互联网、传统行业等) 二、CS中的Client的...

andrewniu
2017/12/01
0
0
Ubuntu Tweak 0.8.0 正式版发布

Ubuntu Tweak 0.8.0 正式版发布了,一个值得关注的新特性就是 Apps,该功能合并了应用中心和源码中心的功能。 更多关于 0.8.0 版本的详细信息请看发行说明。 下载 deb 安装包:ubuntu-tweak_...

图拉鼎
2012/10/08
2.6K
10
001,微服务入门

微服务入门? spring cloud 是一系列工具框架的集合体,提供了一整套的微服务的解决方案。 微服务的有点: 1,开发相对简单 2,技术栈灵活 3,服务独立解耦 4,可用性高 微服务的缺点: 1,维...

岸芷汀兰
2016/12/13
46
0

没有更多内容

加载失败,请刷新页面

加载更多

float精度计算测试

package mainimport ("fmt""github.com/go-ozzo/ozzo-dbx"_ "github.com/go-sql-driver/mysql")type DecimalDemo struct {Id intAmount float64}func main() {db, _......

醉人的笑容你有没有
36分钟前
89
0
新海软件邮政市场监管综合信息平台

二、系统功能 该平台包括邮政普遍服务管理、快递管理两大系统,涵盖了地图定位、普服信息、快递信息、GIS管理、网格管理、视频监控、数据分析(BI)、系统设置等八大模块,全面反映了区域邮政...

neocean
昨天
205
0
【微记忆】用户隐私政策与条款

微记忆尊重并保护所有注册用户的个人隐私权。为了给您提供更准确、更贴心的服务,微记忆会按照本隐私权政策的规定储存并使用您的个人信息。微记忆承诺将以高度严格的审慎义务对待这些信息。除...

微记忆
昨天
101
0
两周自制脚本语言-第7天 添加函数功能

第7天 添加函数功能 基本的函数定义与调用执行、引入闭包使Stone语言可以将变量赋值为函数,或将函数作为参数传递给其他函数 有些函数将有返回值的归为函数,没有返回值的归为子程序 7.1 扩充...

果汁分你一半
昨天
173
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部