https://github.com/crosg/Albianj2
Albianj是我们设计并开发的一套分布式统一框架。他主要是面向海量数据处理、海 量数据访问、并解决互联网开发中经常会碰到的数据海量增长问题,也一并解决 互联网开发团队中,因开发人员的水平参差不齐而导致的代码质量不可控问题。它主要有简单小巧的IoC,ORM,数据路由,缓存集成,分布式唯一id等等功能。
https://github.com/crosg/Albianj2
Last synced: 5 months ago
JSON representation
Albianj是我们设计并开发的一套分布式统一框架。他主要是面向海量数据处理、海 量数据访问、并解决互联网开发中经常会碰到的数据海量增长问题,也一并解决 互联网开发团队中,因开发人员的水平参差不齐而导致的代码质量不可控问题。它主要有简单小巧的IoC,ORM,数据路由,缓存集成,分布式唯一id等等功能。
- Host: GitHub
- URL: https://github.com/crosg/Albianj2
- Owner: crosg
- License: bsd-3-clause
- Created: 2016-04-15T03:18:59.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-06-20T23:08:23.000Z (almost 3 years ago)
- Last Synced: 2024-08-09T13:15:28.288Z (8 months ago)
- Language: Java
- Size: 30.1 MB
- Stars: 233
- Watchers: 58
- Forks: 97
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: history
- License: LICENSE
Awesome Lists containing this project
- awesome-java - Albianj2
README
# 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平台上,以和国内技术社
区共同学习和交流,为国内技术发展做出贡献。