最近设计和实现了一个JAVA的RESTful API的后台业务系统架构,主要基于Java平台。设计要求是:前端
- 性能:平均响应时间(RESTful API)小于2s(平均负载的状况下),并发访问200个以上。
- 可用性:99%,87.6小时每一年宕机时间
- 伸缩性:容许负载均衡集群水平扩展web server和application server。保留半年的历史数据。能够扩展。
- 安全性:具备基于RBAC的角色和权限控制;提供SSL连接;能够和LDAP集成;能够经过PCI/DSS安全认证标准。
能够看到系统对可用性和性能要求通常,但对安全性要求较高。总体设计架构:web

之因此采用关系数据库和NoSQL混合模式,是由于系统有不少视频和图片文件,并且须要保存历史,因此这类数据存放在NoSQL数据库中。数据库
技术选型

展示层:安全
- Spring MVC - MVC Framework
- Java Server Pages (JSP) - View Generation
- ExtJS - Javascript UI Widget Framework
- Spring Security - Security Framework
- Jackson - JSON Generation / Parser
- Jersey - JAX-RS 2.0 Implementation
中间层:服务器
- Spring Beans - IoC Container
- Spring Transaction - Transaction Management
- Dozer - Bean Transformation Framework
- Spring Security - Security Framework
- Quartz Scheduler - Scheduling
数据层:架构
- Spring Data - Convenience API for Hibernate & MongoDB
- Hibernate - ORM Tool
- RDBMS - PostgreSQL
- NoSQL DB - MongoDB
公共:并发
- Java Development Kit - Core Platform
- Spring Beans / IoC - IoC Container
- Spring AOP - AOP Framework
- Logback - Logging API
- SLF4J - Logging API Abstraction
其它:app
- Application Server - JBoss AS
- Distributed Cache - EHCache
系统部署图
上图能够看出,前端入口是负载均衡和反向代理(Apache HTTPD with mod_proxy and mod_balancer),中间是JBOSS应用服务器集群,后面是两台统计服务器(RServer),而后是关系数据库集群和NoSQL。负载均衡
高可用方案:性能
- Primary / Stand-By Load Balancers
- Active / Active Application Server Cluster
- Active / Active Analytics Server Cluster
- Active / Passive RDBMS Cluster
系统上线运行以来基本知足设计要求。