RESTful API後臺系統架構設計(Java)
阿新 • • 發佈:2019-02-08
最近設計和實現了一個JAVA的RESTful API的後臺業務系統架構,主要基於Java平臺。設計要求是:
- 效能:平均響應時間(RESTful API)小於2s(平均負載的情況下),併發訪問200個以上。
- 可用性:99%,87.6小時每年宕機時間
- 伸縮性:允許負載均衡叢集水平擴充套件web server和application server。保留半年的歷史資料。可以擴充套件。
- 安全性:具有基於RBAC的角色和許可權控制;提供SSL連結;可以和LDAP整合;可以通過PCI/DSS安全認證標準。
可以看到系統對可用性和效能要求一般,但對安全性要求較高。整體設計架構:
之所以採用關係資料庫和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
其它:
- 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
系統上線執行以來基本滿足設計要求。