项目-整体架构

  • 前端架构
    • 用户请求到达网站应用服务器之前的环节
    • 浏览器优化
      • 浏览器本地页面缓存
      • 合并http减少请求次数
      • 页面压缩
    • CDN
      • 将静态页面分发到离用户最近的cdn服务器
    • 动静分离,静态资源独立部署
      • 静态资源(js,css,网站logo,按钮图片等)部署在专门的服务器上,和web应用动态服务分离,并使用专门二级域名
    • 图片服务
      • 用户上传图片使用独立部署的图片服务器集群,并使用专门二级域名
    • 反向代理
      • 在应用服务器,静态资源服务器,图片服务器之前,提供页面缓存服务
    • DNS
      • DNS负载均衡
  • 应用层架构
    • 处理网站主要业务逻辑的地方
    • 分层
      • 使用框架进行分层,例如springmvc将项目进行分为view model controller
    • 负载均衡
      • 将多态服务器组合为一个集群,同过负载均衡技术将请求分发到不同的服务器上,提高项目的高并发负载压力
    • session管理
      • 为了实现高可用的应用服务器集群,应用服务器通常设置为无状态的。所以需要用专门的机制管理session(用户会话信息),使集群内甚至跨集群可以共享session进行状态统一
    • 动态页面静态化
      • 主要针对访问量特别大并且更新不是很频繁的动态页面
      • 将这种页面进行静态化,即生成一个静态页面,然后再利用静态页面的优化手段进行优化,比如CDN,反向代理,浏览器缓存等。
    • 业务拆分
      • 分为纵向拆分和横向拆分(可以实现系统的 伸缩性)
      • 纵向拆分:将业务处理流程上的不同部分进行分离部署(比如:网站产品,可复用业务服务,基础技术服务,数据库)
      • 横向拆分:将不同的业务模块进行分离部署(网站前台,卖家后台,买家后台)
      • 降低了系统耦合度
    • 虚拟化服务器
      • 将一台物理服务器分割为多个虚拟服务器,对于一些并发访问量比较少的业务,更容易用较少的资源构建高可用的服务器集群
  • 服务层架构
    • 提供基础服务供应用层调用,完成网站业务
    • 分布式消息
      • 采用消息队列机制,是实现业务和业务、业务和服务之间的异步消息发送以及低耦合的业务关系。
      • 使用消息队列也可以实现”削峰“的作用,就是在超出平常并发的时候,将一些请求放在消息队列进行异步执行 。
    • 分布式服务
      • 提供高性能、低耦合、易复用、易管理的分布式服务。
      • 在网站实现面向服务架构(SOA)
    • 分布式缓存
      • 通过可伸缩的服务器集群提供大规模热点数据的缓存服务。
      • 通常的网站中,80%的请求集中在20%的数据,所以将热点数据进行缓存,可以显著提高网站的性能
    • 分布式配置
      • 在系统运行期提供配置动态推送服务,将配置修改实时推送到应用系统,无需重启服务器。
  • 存储层架构
    • 提供数据、文件的持久化访问与管理服务
    • 分布式文件
      • 网站的在线业务需要存储的文件大部分是图片、视频等较小的文件,但是数量非常庞大,需要设计伸缩性比较好的分布式文件系统。
      • 在分布式文件系统中,对于不同类型的文件一应该设置不同的集群,比如将大文件与小文件分离存储,避免大文件的长时间操作对小文件影响。
    • 关系数据库
      • 大部分系统还是主要使用关系型数据库存储数据,但是关系数据库对伸缩性的支持比较差。对于大型系统,nosql不可避免的要使用
    • nosql数据库
      • nosql数据库产品有许多,在内存管理、数据模型、集群分布式管理等方面各有优势。
      • redis   HBase等
    • 数据同步
      • 使用数据库集群,难免遇到数据同步的问题
      • 集群中的数据需要保持同步,这样才可以保持高可用性,当一台数据存储服务器宕机后,可以保证数据不丢失,与数据的可用性
  • 后台架构
    • 搜索引擎
      • 即使是网站内部的搜索引擎,也要进行数据增量更新、构建索引等操作,这些都是在后台定时进行的
    • 数据仓库
      • 根据离线数据,提供数据分析和数据挖掘服务
  • 安全架构
    • 保护网站和敏感信息泄露
    • web攻击
      • 主要包括sql注入攻击和xss攻击
    • 数据保护
      • 敏感信息加密传输与存储,保护网站和用户资产
  • 数据采集与监控
    • 监控网站访问情况与系统运行情况
    • 浏览器数据采集
      • 通过在网站页面中嵌入js脚本采集用户浏览器环境和操作记录,分析用户行为。
    • 服务器业务数据采集
      • 采集用户操作日志和程序运行时业务数据
    • 性能数据采集
      • 采集服务端的性能数据,比如系统负载、内存使用率和网卡流量等
    • 系统监控
      • 将前述采集的数据以图表的方式展示给运维监控网站运行状态。
      • 根据采集的数据进行自动化运维、自动处理系统异常情况,实现自动化控制
    • 系统报警 
      • 设置系统一些参数的阈值如果系统的数值超过该阈值,则进行报警。


猜你喜欢

转载自blog.csdn.net/csdn___lyy/article/details/80700471