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

系统上线运行以来基本满足设计要求。

posted on   Mainz  阅读(6279)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

统计

点击右上角即可分享
微信分享提示