• 大型网站系统架构设计主要要素:聊聊架构一


    原标题是<不懂可以问,但是不要装逼>一:看系统架构,后来觉得不妥,还是改改吧。

    所有内容不涉及系统架构,只涉及设计架构中注意的要素,方向有了,架构自然就出来了。细节、代码后续再贴出来,感谢大牛X-Ts提供后续代码指导,此部分内容同样借鉴之前的老师的指导。

    从层次看网站系统架构:

    一、前端架构

    1. 浏览器优化技术:通过优化响应页面,为浏览器页面的加载和现实提速,常用的有页面缓存,合并HTTP减少请求次数、页面压缩等。

    2. 前端的分布式:静态资源,如JS、CSS等文件不是在专门的服务器集群上(开发过程中,可使用公共的二级域名,前期并非放在独立的服务器上,为后续的业务扩大化作扩展),和Web应用动态业务的相关内容做分离,通过最短路径获取内容。

    3. 图片资源服务:此处指用户上传的图片,并非网站的按钮以及LOGO(这些文件属于上段提到的静态资源)。

    4. 反响代理:提供页面缓存。

    5. DNS:将域名解析成地址,利用dns可以实现dns的负载均衡。

    二、应用层架构:业务逻辑的处理。

    1、开发框架:一个好的开发框架是关注点分离的,各层各行其事,易于协作。页面渲染,动态内容和静态页面模板集成起来,最终集合一起显示给用户。一款优秀的模板引擎能在开发中干净、整洁、关注点分离透彻等。

    2、负载均衡:将多台应用服务器组成一个集群,通过负载均衡将用户请求分发到不同的服务器上,减少服务器压力,通过冗余技术,达到软双机热备效果。

    3、Seesion维护:此目的实现高可用的应用服务器集群,应用服务器设置为无状态,不保存用户请求的上下文,但需要保持用户会话状态,可使用软技术实现Seesion管理。。。

    4、动态页面静态化:访问量大而不频繁更新的动态页面,使其静态化,根据请求HTTP的请求原理,到达优化加速的手段,此处反向代理,CDN,浏览器缓存等。

    5、业务拆分:业务增多,子系统新增,形成了规模小的子产品,独立开发、实施、维护,降低系统的耦合度,便于系统中数据库分库。

    6、虚拟化服务器:将一台物理机虚拟化多台虚拟服务器,利用较少的资源构建高可用的应用服务器集群。微软提供了Hyper-V

    三、服务层架构:

    1、分布式消息:利用消息队列,实现业务之间,业务、服务之间的异步消息的传递,同时解决业务间低耦合的关系。

    2、分布式服务:SOA

    3、分布式缓存:软分布式缓存,不一定要从集群上解决,要尽可能的利用软件、应用程序。

    4、分布式配置:动态配置分布式缓存等,例如,加入可配置参数列表,即可添加分布式缓存服务器。

    四、存储层架构:数据、文件持久化的存储访问与管理服务。

    1、分布式文件:图片或其他资源数量较大,如图片,网页,视频,伸缩性设计分布式文件系统,当前有很成熟的相关的软系统架构。

    2、关系型数据库:通过在应用程序的数据库访问层增加数据库访问路由功能,通过业务配置将数据库的访问路由到不同的物理数据库上,为后续分布式也打下基础。

    3、NoSql:其读写速度非常快,远优越于关系型数据库,当然各版本在内存管理,数据模型等各有优缺点,做缓存等毋庸置疑。

    4、数据同步:数据库同步技术已经很成熟,多数据库之间同步也存在很多的压力。可通过DB的事务日志或者Nosql写Log,同步到其他数据点,根据Log进行重演。

    五、后台框架:

    1、搜索引擎:网站内部引擎,若对数据增量及全量更新、构建索引,可通过后台系统定时执行,同时可以借鉴第三方成熟的框架,如Lucene.Net、HubbleDotNet等

    2、数据仓库:提供完整的离线数据,提供数据分析以及数据挖掘服务。

    3、数据采集与监控: 采集的数据以图表的形式展示,对网站的监控运作状况有及时的了解,当然还有更先进的运维方式。

    4、浏览器数据采集:在网页中嵌入JS脚本或通过其他手段获取采集用户浏览器的环境以及操作行为,分析其行为,对用户的友好度以及系统的安全性等做数据采集。

    5、服务器业务数据采集:采集服务端用户的操作日志。

    6、系统监控:采集的数据以图表的形式展示,对网站的监控运作状况有及时的了解,当然还有更先进的运维方式。

    7、系统预警:数据未正常采集,超过了系统的阈值,系统承载的负载过高,通过邮件、短信、语音电话等发出相关的信号。

    六、安全架构:

    Web攻击:当前,以Http请求的方式发起的攻击,最大危害是XSS和SQL注入。代码的规范性有待注意。

    当然还是有其他的一些CSRF攻击、Error Code、HTML注释、文件上传、路径遍历、表单Token、

    数据保护:敏感信息加密传送。

  • 相关阅读:
    关于容器和里面元素的间距的排版技巧
    Grafana 通过api create&update dashboard
    .net(c#)生成xml并输出(api的设计)
    Ajax学习总结
    网站内容更新之伪原创七绝招
    并发和多线程(十九)ConcurrentHashMap源码解析(jdk1.8) Diamond
    分布式事务(一)分布式事务理论基础 Diamond
    分布式事务(二)事务基础ACID隔离级别MVCC Diamond
    并发和多线程(十八)CountDownLatch、Semaphore和CyclicBarrier源码解析 Diamond
    分布式事务(三)XA、2PC、3PC Diamond
  • 原文地址:https://www.cnblogs.com/leehavin-cnblog/p/4161026.html
Copyright © 2020-2023  润新知