/Albianj2

Albianj是我们设计并开发的一套分布式统一框架。他主要是面向海量数据处理、海 量数据访问、并解决互联网开发中经常会碰到的数据海量增长问题,也一并解决 互联网开发团队中,因开发人员的水平参差不齐而导致的代码质量不可控问题。它主要有简单小巧的IoC,ORM,数据路由,缓存集成,分布式唯一id等等功能。

Primary LanguageJavaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Albianj2

Albianj是我们设计并开发的一套分布式统一框架。他主要是面向海量数据处理、海量数据 访问、并解决互联网开发中经常会碰到的数据海量增长问题,也一并解决 互联网开发团队 中,因开发人员的水平参差不齐而导致的代码质量不可控问题。它主要有简单小巧的IoC, ORM,数据路由,缓存集成,分布式唯一id等等功能。

albianj诞生于2011年,它的创建并不是为了解决某个公司的问题,而纯粹是为了度过我的 业余时间。当时的想法其实很简单,就是想把我这几年来对于互联网的理解用技术的形式 表现出来。其实2011年写完v1.0后,除了我把它开源了以外,我就再也没有去管过它。直 到2015年的4月份,当时我已经在阅文集团任职,我们需要把阅文集团的所有内容都统一起 来,形成一个内容中心。当确定下来要做这个内容中心的时候,我们面对的是亿级别的数 据和千万级别的访问量。我们想到了需要一个统一的框架来完成我们的工作。这个框架必 须满足几个条件:

1. 必须容易使用,必须容易维护,必须快速上手  
2. 必须可以方便的处理现有的海量的数据  
3. 必须能方便的进行业务的扩容  
4. 必须能抗住当前的访问量,并且能抗住未来5年左右的业务扩展说带来的访问量增长  

从这些条件出发,我从记忆中翻出来了albianj(所以对于albianj的出身有疑问的同学就不 要猜疑了。albianj并不出身于盛大创新院,也不是从腾讯带出来的。而是完全自主开发的 )。当时albianj的主体已近全部完成,并不需要更多的修改,就是在易用性和可控制性上 还表现的不够好,我们又对albianj进行了扩展。形成了我们现在开源出来的albianj2.

后来,随着技术的发展,我们对于现有的腾讯文学、起点中文网等阅文集团旗下的站点也 进行了重构。在重构过程中,我们也都使用albianj作为底层框架来使用。

所以呢,从我们的使用的真实情况出发,albianj2是能抗住海量数据处理和大并发、大访 问量的。既然已近在我们的系统中得到了验证,我们现在把我们修改过的albianj2开源出 来,以方便大家使用。

附albianj2的功能列表

1. 一个简单的Service服务,比spring轻量很多很多  
2. 一个简单的ORM框架  
3. 数据路由服务  
4. 分布式事务服务(支持强、弱两种模型)  
5. 简单的缓存服务  
6. 统一的Id服务  
7. 日志服务(这部分有待扩展)  
8. 密码安全服务  
9. 简单的restful服务  
10. 一个轻量级的配置服务  

Albianj2的适用范围:

albianj2主要的适用范围是互联网企业。并不是那么的适合传统行业。这个还得从两个行 业的特殊性说起。对于传统行业来说,他们更加注重的是业务的复杂性,所以这个特有的 业务会给数据库设计带来很大的烦恼和限制。传统行业基本上用户量固定,数据量固定, 增长量也是固定的,所以在一个系统搭建完毕之后,几乎很少会去动数据库设计,也不会 后期去对数据进行拆分。这些类似的种种都是因为传统行业特有的属性决定的。

而互联网就完全不一样了。互联网首先讲究的是快,快速的开发,快速的搭建。然后是讲 究架构重构简单。因为互联网企业经常会碰到数据爆发式增长,用户量井喷式涌入这些问 题。我们就会想法设法的保证系统的快速和稳定。对于数据库,也是会随着数据的增加需 要进行相应的拆库拆表。这些在传统行业不太碰到的问题在互联网行业看来就是家常便饭 的事情。而在业务开发上,互联网也比较特殊,互联网的表之间几乎很少有很复杂的关系 ,99%都是单表操作。所以互联网的模型最后就是演变成了单表+分库分表。而albianj就是 为了解决问题出现的。albianj不支持join,也不支持多表查询。因为这些对于一个互联网 系统来说,这些都会大大的损耗数据库的性能。数据库本来就是单点的存在,我们需要尽 可能快速的来访问数据库,所以在这些方面albianj做了很大的限制,这也导致了不是太符 合传统企业的业务。albianj2从开始设计的时候其实主要考虑的都是互联网的业务,albianj 几乎适合做互联网所有的业务,不管你是想阿里一样的电商还是想腾讯一样的社交。几乎 都可以选择使用albianj来作为基础框架。

#Albianj2 文档列表和qq群:
[Albianj的设计思路文档] (http://www.94geek.com/2015/albianj.html "albianj设计思路文档")
[Albianj使用文档] (http://www.94geek.com/2016/albianj-user-manual.html "albianj使用文档")
qq群:514089546

Albianj2入门:

  1. 所有的albianj2使用的jar和albianj本身的jar都在Albianj-All-jars文件夹中,down下来
  2. 将这些jar加入你的项目引用
  3. 注意:还有一个spx的文件,这是所有接口的实现文件。是我们自己打包的,将albianj.spx放入exts文件夹中;
  4. config文件夹中存放有albianj所有的配置文件,将整个文件夹cp到你的项目文件夹中即可;
  5. 根据你现实的情况,更改你的配置文件和声明你的java代码;
  6. Albianj.Qidian.Test是albianj的一个例子,它主要向大家说明应该怎么玩albianj。
  7. 为了降低难度,请使用EntityGenerator开源项目生成albianj的java文件和配置文件

关于我们:

我们是阅文集团的技术团队,阅文集团于2015年成立,统一管理和运营原本属于盛大文学 和腾讯文学旗下的起点中文网、创世中文网、小说阅读网、潇湘书院、红袖添香、云起书 院、榕树下、QQ阅读、中智博文、华文天下等网文品牌。

我们是创世、腾讯、盛大技术团队的综合体,并继承和发扬了原有的多年积累的研发体系 和技术架构,确保了集团产品业务的快速实现和稳定运行。根据集团产品移动化的发展规 划,技术团队也不断地开展技术优化和创新,致力于业务系统的稳定性和可扩展性的提升 ,同时提升研发效率和质量。作为**互联网科技企业的领军人物,阅文集团技术部将继 续发扬技术人的优良传统,持续的将一些技术逐步开源在github平台上,以和国内技术社 区共同学习和交流,为国内技术发展做出贡献。