人人网移动开发架构统一问题服务器架构设计(3)

http://www.itjxue.com  2015-08-07 20:58  来源:未知  点击次数: 

高可靠性和可扩展的服务

现在移动互联网拼的都是服务,客户端良好的用户体验背后,都有强大的服务器技术支撑,人人网也不外如是。

业务层次模型

人人网采用JavaEE技术作为主要的业务解决方案,基本按照通用的JavaEE模型进行架构设计,如下图:

图4 人人网业务层次模型

WEB层基于REST风格和MVC设计模式,为用户提供基于WEB的访问接口

人人网采用的是自己开发的WEB框架 Rose,该框架基于Spring Framework,类似RoR框架,增强了对Controller编码部分的默认约定和REST风格URL的支持,该项目前已开源,下载地址为http://code.google.com/p/paoding-rose/

业务层封装业务逻辑,为WEB层提供业务接口,操作数据访问层提供的数据。

人人网开发了自己的SOA框架XOA以支持业务层抽象,该框架结合Rose框架,以REST风格对业务进行分类、消息格式封装和路由,如以下URL:

xoa://blog.xoa.renren.com/photo/{user-id}/{photo-id}

该URL代表某用户的某个照片,操作 GET/PUT/POST/DELETE分别对应对应照片资源的读、修改、新增、删除。即通过资源+操作的方式对外提供Service。

XOA支持远程调用,并可以通过简单添加服务器的方式进行横向扩展。该框架目前准备开源,敬请关注。

数据访问层提供对数据库访问的封装

人人网使用Java语言开发了自己的Object-Relation Mapping框架JADE(Java Database Engine),并支持数据库的水平横向切分。该框架和Rose框架一体开源,下载地址相同。

数据持久层数据的持久存储,主要采用MySQL数据库,并且开发了自己的海量存储系统Nuclear。

Rose、Jade、XOA作为集成度很高的一整套解决方案,在人人网大量采用,大大降低了开发成本,并在框架级解决了服务于企业解决方案的JavaEE技术在互联网领域的适用性。

可扩展的高性能系统

人人网每天都要承受亿级PV海量用户的并发压力,和其它大型互联网站点类似,服务器架构方面做了很多工作。

高性能数据存储系统

在数据存储方面,人人网做了以下工作:

和其它互联网大型站点相同,MySQL数据库做水平拆分以支持横向扩展

人人网作为国内第一大SNS网站,欲存海量UGC数据,必有海量存储系统。Nuclear存储系统在高性能、高可靠、可扩展的海量数据存储需求下横空出世。

Nuclear本身的数据存储基于Key-Value形式,底层可以使用MySQL/Memory, Cassandra, TC, Redis等存储引擎,提供弱结构化的查询功能。

高扩展性

一个Nuclear集群支持1到n(n<264)个节点(Node)的规模

高可靠性

单个节点的crash永远对系统的运行造成影响,不存在单点风险。系统永远可写入。

高性能

在4个节点、一般服务器配置情况下有测试数据表明单节点访问可达15862 req/s, 平均单次请求耗时仅5ms。

本文不欲详细介绍Nuclear, 有兴趣的读者请参考我们的技术站点

(责任编辑:IT教学网)

更多