RESTful API后台系統架構設計(Java)


最近設計和實現了一個JAVA的RESTful API的后台業務系統架構,主要基於Java平台。設計要求是:

  • 性能:平均響應時間(RESTful API)小於2s(平均負載的情況下),並發訪問200個以上。
  • 可用性:99%,87.6小時每年宕機時間
  • 伸縮性:允許負載均衡集群水平擴展web server和application server。保留半年的歷史數據。可以擴展。
  • 安全性:具有基於RBAC的角色和權限控制;提供SSL鏈接;可以和LDAP集成;可以通過PCI/DSS安全認證標准。

可以看到系統對可用性和性能要求一般,但對安全性要求較高。整體設計架構:

2014-01-24_14h30_26

之所以采用關系數據庫和NoSQL混合模式,是因為系統有很多視頻和圖片文件,而且需要保存歷史,所以這類數據存放在NoSQL數據庫中。

技術選型

2014-01-24_14h35_31

展現層:

  • 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

系統部署圖

2014-01-24_14h47_22

上圖可以看出,前端入口是負載均衡和反向代理(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

系統上線運行以來基本滿足設計要求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM