RESTfulAPI后台系统架构设计(Java)最近设计和实现了一个JAVA的RESTfulAPI的后台业务系统架构,主要基于Java平台。设计要求是:性能:平均响应时间(RESTfulAPI)小于2s(平均负载的情况下),并发访问200个以上。可用性:99%,87.6小时每年宕机时间伸缩性:允许负载均衡集群水平扩展webserver和applicationserver。保留半年的历史数据。可以扩展。安全性:具有基于RBAC的角色和权限控制;提供SSL链接;可以和LDAP集成;可以通过PCI/DSS安全认证标准。可以看到系统对可用性和性能要求一般,但对安全性要求较高。整体设计架构:之所以采用关系数据库和NoSQL混合模式,是因为系统有很多视频和图片文件,而且需要保存历史,所以这类数据存放在NoSQL数据库中。技术选型展现层:SpringMVC-MVCFrameworkJavaServerPages(JSP)-ViewGenerationExtJS-JavascriptUIWidgetFrameworkSpringSecurity-SecurityFrameworkJackson-JSONGeneration/ParserJersey-JAX-RS2.0Implementation中间层:SpringBeans-IoCContainerSpringTransaction-TransactionManagementDozer-BeanTransformationFrameworkSpringSecurity-SecurityFrameworkQuartzScheduler-Scheduling数据层:SpringData-ConvenienceAPIforHibernate&MongoDBHibernate-ORMToolRDBMS-PostgreSQLNoSQLDB-MongoDB公共:JavaDevelopmentKit-CorePlatformSpringBeans/IoC-IoCContainerSpringAOP-AOPFrameworkLogback-LoggingAPISLF4J-LoggingAPIAbstraction其它:ApplicationServer-JBossASDistributedCache-EHCache系统部署图上图可以看出,前端入口是负载均衡和反向代理(ApacheHTTPDwithmod_proxyandmod_balancer),中间是JBOSS应用服务器集群,后面是两台统计服务器(RServer),然后是关系数据库集群和NoSQL。高可用方案:Primary/Stand-ByLoadBalancersActive/ActiveApplicationServerClusterActive/ActiveAnalyticsServerClusterActive/PassiveRDBMSCluster系统上线运行以来基本满足设计要求。