知识卡片

人人网四层技术架构案例

结构图卡

内容

人人网采用JavaEE技术作为主要业务解决方案,其架构是”通用JavaEE分层模型”落地到具体自研框架的一个典型案例:不是照搬现成商业框架,而是在每一层都基于开源基础自研了专属组件,体现了”分层”这一架构风格与”自研适配”这一工程现实之间的结合。Web层基于REST风格和MVC风格,采用自研Web框架Rose——Rose基于Spring Framework、类似RoR框架,重点增强了对Controller编码部分的默认约定和REST风格URL的支持,负责为用户提供基于Web的访问接口。业务层封装业务逻辑、为Web层提供业务接口、操作数据访问层提供的数据,采用自研SOA框架XOA,结合Rose框架、以REST风格对业务进行分类、消息格式封装和路由,并支持远程调用与横向扩展(简单添加服务器即可扩容)。数据访问层提供对数据库访问的封装,采用自研ORM框架JADE(Java Database Engine),支持数据库的水平横向切分。数据持久层实现数据的持久存储,主要采用MySQL数据库,并自研了海量存储系统Nuclear。这个案例的启发在于:每一层的自研选择都对应着该层特有的规模化压力——Web层要适配REST风格与约定优于配置,业务层要支持横向扩展与远程调用,数据访问层要支持水平分片,数据持久层要支持海量存储——分层架构的价值不只在于”职责分离”本身,更在于它让每一层可以独立选择应对各自规模化压力的技术方案,而不必让某一层的技术选型牵连其他层。

结构图

flowchart TD
    A["Web层<br/>Rose框架(基于Spring)<br/>REST + MVC风格"] --> B["业务层<br/>XOA框架(自研SOA)<br/>REST分类/消息封装/路由/远程调用"]
    B --> C["数据访问层<br/>JADE框架(自研ORM)<br/>数据库水平切分"]
    C --> D["数据持久层<br/>MySQL + 自研海量存储系统Nuclear"]

参考来源

- 位置:《软件架构理论与实践》第1章《软件架构概述》"1.4.2 软件架构的应用研究"节之"(3)常见软件产品的架构"(源文件:_epub-src/OEBPS/text00009.html) - 结论依据:原文按四层逐一说明人人网架构各层的技术选型、自研框架名称及其解决的问题(Web层Rose框架、业务层XOA框架、数据访问层JADE框架、数据持久层Nuclear存储系统),层次顺序与依赖关系可直接从原文的层级描述顺序推出,支撑本卡片的结构图与内容。 - 原始内容:①Web层基于REST风格和MVC风格,为用户提供基于Web的访问接口,人人网采用的是自己开发的Web框架Rose,该框架基于Spring Framework……②业务层封装业务逻辑,为Web层提供业务接口……人人网开发了自己的SOA框架XOA以支持业务层抽象……③数据访问层提供对数据库访问的封装。人人网使用Java语言开发了自己的Object-Relation Mapping框架JADE……④数据持久层实现数据的持久存储,人人网主要采用MySQL数据库,并且开发了自己的海量存储系统Nuclear。