做为一个有追求的前端,在学有余力的同时,不该该把本身仅仅局限于前端的世界中的。
然后端的知识是与前端工做最密切相关的一部份内容,多了解些后端的知识也是大有裨益的。前端
本文简单叙述了三种构建大型架构的必备知识。也是我作前端这么久以来,一直想知道的如何突破现有的性能瓶颈作到
高并发,高性能,高可靠。文中若有错误,欢迎指正。web
优化数据库redis
负载均衡数据库
缓存技术后端
对于使用数据库的Web站点来讲,数据库性能关系整个web应用的性能,若是数据库性能不佳,其余的优化工做也是徒劳无功。因此优化数据库性能,
对提升整个web应用的效率有着举足轻重的做用。浏览器
一、 表的设计要规范,即要符合数据库设计范式。
二、 适当创建索引,在频繁做为检索条件,更新较少的字段上创建索引,以提升查询速度。
三、 分表查询,有水平分割、垂直分割。
四、 读写分离,读(read)、写(create、update、delete)。
五、 创建存储过程。缓存
这里特别想提到的是拆分表格这一点。最简单的诸如,根据用户ID的最后1位的数字将其拆分红10个表,即 0,1,2,3,4,5,6,7,9。
这种平行的拆分方式,一方面,能够解决单个数据库并发链接数的限制,另一方面能够控制单表的大小。颇有效的一种优化方式,特别在于解决高并发的需求。服务器
单台Web服务器处理能力有限,单台服务器承受的压力达到极限时,须要有更多的服务器分担工做,咱们须要想办法将流量合理分配到更多的服务器上。
任何的负载均衡技术都要想办法创建某种一对多的映射机制: 一个请求的入口映射到多个处理请求的节点,从而实现分而治之(Divide and Conquer)。
这种映射机制使得多个物理存在对外体现为一个虚拟的总体,对服务的请求者屏蔽了内部的结构。
采用不一样的机制创建映射关系,能够造成不一样的负载均衡技术,常见的包括:网络
CDN架构
HTTP重定向
基于DNS的轮询解析
反向代理服务器
详细能够参考 亿级Web系统搭建——单机到分布式集群
随着网络的发展,数据愈来愈多,从而致使运算的压力愈来愈大,为了解决这一问题,就须要合理分级计算资源,充分利用已有资源。缓存的工做实际上计算资源的合理分配。
缓存 (Cache) 原意是指能够进行高速数据交换的存储器。当CPU处理数据时,先到 Cache 中寻找,若是数据因以前的操做已经读取而被暂存其中,就不须要再从随机存取存储器中读取数据了。
如今缓存的概念已被扩充,凡是位于速度相差较大的两种介质之间,用于协调二者数据传输速度差别的结构,都可以称之为 Cache 。
在 web 世界,理论上每一层均可以被缓存。以PHP应用为例:
底层有CPU缓存,磁盘文件系统缓存
数据库层有 Table Cache,Query Cache
Apache和Ngix的缓存
应用程序代码级别的Smarty实现的文件缓存
基于HTTP协议和浏览器自身实现的浏览器缓存
基于NoSQL系统的缓存(redis, memcached)
上述三种技术手段,是构建大型网络应用的必备技术,展开来每点的水都很深。
而做为一个前端儿,许多技术可能没法在工程项目中亲自去实践,也只能从书,讲座,博文中学习了。
最后推荐一本PHP的书籍《PHP核心技术与最佳实践》,确实如同做者在其书中前言所述,没有讲述HTML,CSS,JS基础,也没有讲PHP语法基础,而是专一于web开发技术的最前沿,深刻浅出,探讨高并发大流量的架构。 很是棒的一本进阶书籍。
WilsonLiu's blog首发地址:http://blog.wilsonliu.cn