一. 准备工做css
1. 本文参考 J2EE企业级应用架构html
二. 架构发展前端
1. 原始版mysql
用户+服务器【单台虚拟机】+数据库【mysql或者oracle】,用户访问量比较少。
特色:单节点【只有一台机器】,几乎无容灾【若是机器挂了只能重启】,负载能力低【访问量比较少】,维护简单【只有一台服务器,因此对应用监控比较简单,数据库管理比较简单,企业部署成本比较低】
2. 动静分离版web
加入Nginx,经过Nginx来访问静态资源,用户经过REST API来访问Web应用,经过ajax获取数据,提交数据,极大减小了和用户交互的流量,html、js、css大资源经过Nginx传送给用户,下降交互流量,Nginx还负责均衡,同时增长服务器部署,能够提升访问量。使用了框架spring,Struts,mybatis,节省开发时间。
特色:Nginx访问静态资源,Nginx负载均衡,应用分离,依赖框架,安全性低【暴露REST API】,Session 持久化问题【部署了多台服务器,Session持久化成为问题】。
3. 缓存版ajax
加入高速缓存,支持key-value形式的查询,能够达到6w/s查询量。基于请求的缓存,当http请求发起,先去查询高速是否有结果,没有的话,查询数据库,写入高速缓存,返回给用户;将Session存于高速缓存里头,当多台机器访问应用时,将session的id在高速缓存进行查询。
特色:大量使用缓存、Nginx接收Https、Session 持久化、一致性问题【数据同步问题】、缓存失效问题【设置session失效时间】,虽然还存在后二者的问题,可是极大提升企业负载能力。
4. 分布式服务spring
分布式架构,拆分业务功能,保证功能不变的状况下,将应用拆分前端web应用和后端服务,后端服务又拆分多个小应用,共同提供服务,将服务封装起来,提供逻辑。web如何将多个应用提供给远程调用,这时候就要提供服务总线\注册中心进行应用管理,例如分布式框架dubbo。
特色:小型机虚拟化【将服务器部署在虚拟机中】、请求处理与业务拆分、应用服务化、同步异步拆分、数据库读写分离【查询映射到读库上】、运维难度大大增长。消息中间件:例如mq、Metaq中间件,将大量异步操做发送到中间件,后台均匀消费这些请求,同步异步拆分提高吞吐量。调度中间件:ScheduleX。
缺点:当出现高并发的时候,对于小型机压力很大。
5. 弹性计算sql
采用Docker容器级虚拟化,使得服务器资源实时分配。当负载大时候,docker虚拟并启动应用。新增Hadoop日志搜集平台,将日志写入日志平台。经过与Docker配合极大提升负载性能。
特色:容器级虚拟化、应用资源动态分配、离线数据采集分析系统、数据库读写分离、硬件成本降低、异地容灾。数据库新增了于hadoop进行交互,极大提高了性能。