RESTful API後臺系統架構設計(Java)

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

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

能夠看到系統對可用性和性能要求通常,但對安全性要求較高。總體設計架構:web

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

其它:app

  • 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

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

相關文章
相關標籤/搜索