文档章节

分布式轻量级框架 设计&实现

亮_ShardingSphere
 亮_ShardingSphere
发布于 2013/10/15 10:48
字数 950
阅读 1041
收藏 6

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

概述

      在互联网应用中,由于系统要考虑高并发,高可用,大数据,扩展性等需求,所以有别于传统的企业级项目开发。

互联网领域主要的技能大致可以概括为4个部分:通信框架,消息中介,分布存储,搜索引擎。

      由于互联网系统的特性,必须系统是分布式的。因为高并发的场景下,单机很难承担如此的负载。还有,大数据不可能存储在单一的机器上,需要一个集群。

      分布式的系统中最重要的就是通信框架,不管是服务/API还是数据之间的交互,都需要和通信打交道。虽然当前出现了Dubbo这样优秀的产品,但是我还是希望自己能从头开始开发一个支持分布式的轻量级框架,很多东西是借鉴了Dubbo的思路,但是实现方式上可能会有所不同。

      除了通信框架,我还想提供一个统一的Repository访问层,类似于当前比较流行的DB proxy。但是不仅限于此,这个统一的Repository访问层最好能够透明的完成不同的关系型数据库或者NOSQL之间的调用。这部分没有完全想好,仍然有待完善。

      还有一个就是消息中介。系统间的解耦,以及生产消费速度解耦。这都需要消息中介来支持。消息大体可分为两种。一种是强事务型的,比如下订单。这种消息适合用JMS标准的消息中间件来实现。另一种是弱事务,但是量非常大的消息,如点击日志。这种消息适合用Kafka这样的分布式消息中介来处理。我也打算像Repository的访问层一样,提供一个统一的Mq访问层。

      我会把自己的心得持续更新这个博客系列中。

系统目标

      1. 尽量使用开源框架搭建一个高可用,分布式,低耦合,透明化的系统。 

      2. 代码结构清晰易懂,具有良好的设计和可读性,以及最大限度复用。   

      3. 争取做到技术代码和业务代码完全分离。能用第三方开源组件做的,就不自己实现。争取充分挖掘第三方开源产品的可行性。 

      4. 模块化。完全隔离和解耦各个模块。

      5. 完成一些业务模块,用于检测和提炼框架。如RBAC,账户和工作流模块。

项目地址

      https://github.com/terrymanu/miracle-framework 

      感谢您用宝贵的时间阅读本博客系列。请多提意见,多指教。目前代码已经陆续放上去了,欢迎大家指点。


以下是会持续更新的系列博文:

1 - 初步想法&技术选型

2 - 项目搭建

3 - 定义基础包

4 - DAO设计

5 - RBAC模块设计

6 - 测试框架

    6.1 - DAO测试

    6.2 - 单元测试

7 - WEB MVC设计





 




 



© 著作权归作者所有

亮_ShardingSphere

亮_ShardingSphere

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

评论(1)

年轻人w
年轻人w
文章很棒,提一个小问题,博主还望不要介意,就是:1 - 初步想法&技术选型 的链接地址有误,博主可以在不登录的时候试试
轻量级分布式实时计算框架--Light_rtdc

框架说明 Light_drtc是一个轻量级分布式实时计算框架,它可以帮助你快速实现自定义的实时计算平台。它主要参考当前流行的实时计算框架Storm的任务分发和SparkStreaming的Mini-Batch处理思想设...

taotao2011
2016/04/07
2.7K
0
轻量级网络通信框架--nSocket

nSocket是基于java NIO.1和NIO.2开发的轻量级网络通信框架,该框架为用户提供异步非阻塞的网络编程接口。目前更新到0.1版本,实现了基本的连通性和简要的通信,在0.2版本中将增加filter chai...

Gaischen
2012/12/10
5.4K
0
2016年度开源中国最受欢迎开源软件参展合集

记录这些主要是方便后期阅读开源项目的时候方便查找:http://www.oschina.net/project/topcn2016 afinal Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的h...

楠木楠
2016/12/21
573
0
分布式调度平台 XXL_Job

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/wxb141001yxx/article/details/93927459 Where? 发展历史 特性发展 ...

Jessica-小波
2019/06/28
0
0
轻量级RPC框架--harpc

基于Thrift的跨语言、高可用、高性能、轻量级的RPC框架。 功能介绍 跨语言通信 方便的使Java、Python、C++三种程序可以相互通信 负载均衡和容灾处理 方便的实现任务的分布式处理 支持服务的水...

dsfan
2015/10/17
5.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

dynamic-connectivity 动态连通性问题之 quick-union 算法

quick-union 的思想是:若对象 p 的 root_id 和对象 q 的 root_id 相等,则认为 p 和 q 连通。 若要将对象 p 和对象 q 连通(已知两对象未连通),则将 p 的 root_id 的值设为 q 的 root_id ...

Phpythoner_Alei
今天
40
0
OSChina 周六乱弹 —— 实在选不出来就唱国歌

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享阿冗的单曲《你的答案》。--祝大家在2020年都找到自己答案。 《你的答案》- 阿冗 手机党少年们想听歌,请使劲...

小小编辑
今天
36
2
Maven打包可执行Jar包的方法

在使用Java开发中,会使用到将工程打包成可执行的jar包的情况,那么在maven中怎么将项目中的依赖包都添加到jar中呢。在pom.xml中添加一下插件: <build><plugins><plugin><ar...

CapJes
今天
13
0
使用vue 开发地图类系统(openlayers.js)的注意。

使用vue 开发地图类系统的注意。 1、使用地图应该创建的对象 少使用 vue 的data 和计算属性(comments)存数据或是vuex。 为什么要要注意这个问题呢? 答:这个就要了解到vue的实现原理 。原理...

DY-Tao
昨天
10
0
web移动端学习:高德地图demo(一)

在高德地图开发中申请开发者资格,然后在控制台中新建应用,获得KEY; 新建模板HTML文件; <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>地图demo</title><scri......

dxiya
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部