• 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

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

  • 相关阅读:
    Load a properties file Real's Java Howto
    [nodejs]保证你的程序死了还能复活:forever and forever webui MK2 博客园
    为嵌入式系统开发软件和为高性能计算或大型分布式平台开发软件,二者需要的技能在很大称度上相同,我不是第一个发现这一点的人。
    HTTP Range说明 lenoval的专栏 博客频道 CSDN.NET
    『NodeJS』简单的本地 DNS 代理脚本
    Automation | Coyote Point Systems
    Java 高层网络编程
    SQL 语句大全
    浅谈AVG游戏中的脚本
    How to debug Bluetooth
  • 原文地址:https://www.cnblogs.com/Mainz/p/3532460.html
Copyright © 2020-2023  润新知