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

原标题是<不懂能够问,可是不要装逼>一:看系统架构,后来以为不妥,仍是改改吧。前端

 

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

从层次看网站系统架构:数据库

1、前端架构浏览器

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

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

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

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

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

 

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

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

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

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

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

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

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

 

3、服务层架构:

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

二、分布式服务:SOA

三、分布式缓存:软分布式缓存,不必定要从集群上解决,要尽量的利用软件、应用程序。

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

 

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

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

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

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

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

5、后台框架:

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

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

三、数据采集与监控: 采集的数据以图表的形式展现,对网站的监控运做情况有及时的了解,固然还有更先进的运维方式。

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

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

六、系统监控:采集的数据以图表的形式展现,对网站的监控运做情况有及时的了解,固然还有更先进的运维方式。

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

6、安全架构:

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

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

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

相关文章
相关标签/搜索