最近設計和實現了一個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
系統上線運行以來基本知足設計要求。