前端也该了解的一些后端知识

前言

作为一个有追求的前端,在学有余力的同时,不应该把自己仅仅局限于前端的世界中的。
而后端的知识是与前端工作最密切相关的一部分内容,多了解些后端的知识也是大有裨益的。

本文简单叙述了三种构建大型架构的必备知识。也是我做前端这么久以来,一直想知道的如何突破现有的性能瓶颈做到
高并发,高性能,高可靠。文中如有错误,欢迎指正。

  • 优化数据库
  • 负载均衡
  • 缓存技术

    优化数据库

    对于使用数据库的Web站点来说,数据库性能关系整个web应用的性能,如果数据库性能不佳,其他的优化工作也是徒劳无功。所以优化数据库性能,
    对提高整个web应用的效率有着举足轻重的作用。

1、 表的设计要规范,即要符合数据库设计范式。
2、 适当建立索引,在频繁作为检索条件,更新较少的字段上建立索引,以提高查询速度。
3、 分表查询,有水平分割、垂直分割。
4、 读写分离,读(read)、写(create、update、delete)。
5、 建立存储过程。

这里特别想提到的是拆分表格这一点。最简单的诸如,根据用户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开发技术的最前沿,深入浅出,探讨高并发大流量的架构。 非常棒的一本进阶书籍。

分享 留言