1、什么是大型网站软件系统特点?
2、大型网站架构演化?
高并发、大流量。高可用,海量数据、用户分布广,网络情况复杂、安全环境恶劣、需求变更快
例如:淘宝、京东、百度等
应用服务与数据库分离、应该拆分为 应用服务器、文件服务器、数据库服务器。
应用服务器: 需要处理大量的业务逻辑,因此CPU需要强大
数据库服务器:需要快速磁盘检索和数据缓存
文件服务器: 硬盘大
3、大型网站如何优化方案
1、 使用缓存改善网站性能
将经常访问的数据,放入到内存中,减少数据库访问压力,提高网站访问速度。
2、使用应用服务器集群改善网站并发访问能力
可以将浏览器分发到应用服务器集群中的任何一台服务器上
3、数据库读写分离
通过主流数据库热备功能,通过配置两台数据库主从关系,可以将一台数据库数据更新同步到另一台服务器上。
网站利用这一功能,实现数据库读写分离,从而改善数据库负载压力。
4 、使用反向代理和CDN加速网站响应
CDN和反向代理基本上原理都是缓存
区别在于CDN部署在网络提供商机房,是使用用户在请求网站服务时,可以从距离 自己最近的网络提供商机房获取数据。
5、使用分布式文件系统和分布式数据库系统
分布式数据库是网站数据库拆分,网站常用的数据库拆分手段是业务分表,将不同业务数据库部署在不同的物理服务器上
6、使用NOSQL和搜索引擎
对于数据存储和检索的需求也越来越复杂,网站采用一些非关系数据库技术如:NOSQL搜索引擎
例如缓存:redis、mongdb
例如搜索引擎: Lucene、 Solr
7、 在大型网站会将首页、商铺、订单、卖家拆分成不同产品线,分归不同业务团队负责。
4、网站如何分层
应用层 |
负责业务和属兔展示,如网站首页及收缩输入和结果展示
|
服务层 | 为应用层提供服务支付,如用户管理服务,购物车服务等 |
数据层
|
提供数据存储访问服务,如数据库、缓存、文件、搜索引擎
|
5、网站性能优化
浏览器端 :
可以通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能。
还可以通过CDN,将网站静态内容分发至里用户最近的网络机房,使用通过最短访问路径获取数据。可以通过网站机房部署反向代理
服务器,缓存热点文件,加快请求响应速度茅箭区应用服务器负载压力。
服务器端:
可以使用服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减去数据库负载压力。
还可以通过异步操作将用户请求发送至消息队列,等待后续任务处理,而当前请求直接返回用户。
在网站有很多用户并发请求处理下,可以将多个服务器组成一个集群共同对外服务,提高整体处理能力,改善性能。
代码层面:
通过使用多线程、改善内存管理等优化手段。
数据库端:
在数据库端,索引、缓存、SQL优化、NOSQL等。
6、Web安全编程
1、XSS攻击
攻击手段:跨站点脚本攻击,指黑客通过篡改网页,注入恶意HTML脚本。
解决办法:一般对某些HTML危险字符转移,如:“>”转移为">" 等
2、SQL注入
3、CSRF攻击
攻击手段:跨站点请求伪造,利用浏览器Cookie或服务器端Session盗取用户身份。
解决办法:表单Tokent通过在请求参数增加随机数的办法来阻止工具这获取所有请求,在页面表单中增加一个随机数为token,
每次响应页面的tokent都不同,从正常页面提交的请求会包含该Tokent值。 而伪造的请求无法获得该值。
4、文件上传
定期用网站漏洞扫描工具