最近設計和實現了一個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

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