设为首页 收藏本站
查看: 815|回复: 0

[经验分享] RESTful API后台系统架构设计(Java)

[复制链接]

尚未签到

发表于 2016-11-22 08:24:53 | 显示全部楼层 |阅读模式
  最近设计和实现了一个JAVA的RESTful API的后台业务系统架构,主要基于Java平台。设计要求是:
  
       
  • 性能:平均响应时间(RESTful API)小于2s(平均负载的情况下),并发访问200个以上。   
  • 可用性:99%,87.6小时每年宕机时间   
  • 伸缩性:允许负载均衡集群水平扩展web server和application server。保留半年的历史数据。可以扩展。   
  • 安全性:具有基于RBAC的角色和权限控制;提供SSL链接;可以和LDAP集成;可以通过PCI/DSS安全认证标准。
  可以看到系统对可用性和性能要求一般,但对安全性要求较高。整体设计架构:
DSC0000.png

  之所以采用关系数据库和NoSQL混合模式,是因为系统有很多视频和图片文件,而且需要保存历史,所以这类数据存放在NoSQL数据库中。
  技术选型
DSC0001.png

  展现层:
  
       
  • 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
  系统部署图
DSC0002.png

  上图可以看出,前端入口是负载均衡和反向代理(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
  系统上线运行以来基本满足设计要求。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303728-1-1.html 上篇帖子: 使用、支持、帮助Moon.Orm 下篇帖子: ArcGIS10.2.2 Desktop直接连接数据库的具体步骤
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表