My Github

随笔分类 -  【010】大型网站技术探索

高性能高并发Web系统开发学习征途
摘要:load balance当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等。在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像它面对的是一台拥有近乎无限能力的服务器,而本质上,真正提供服务的,是后端的集群。 阅读全文
posted @ 2015-02-10 00:37 EdisonZhou 阅读(75608) 评论(63) 推荐(160) 编辑
摘要:随着互联网的发展,许多大中型的网站都保存了大量的图片资源,用户在访问这些图片资源异常丰富的网站(如淘宝、京东等电子商务网站)时,网页中的图片信息占据了页面数据流量的很大部分,那么问题也来了:(1)由于受客户端浏览器限制,无法从一台服务器上同时下载页面中所有图片信息;(2)由于图片保存在物理服务器上,访问图片需要频繁进行I/O操作:因此当并发用户数越来越多时,I/O操作就会成为整个系统的性能瓶颈;(3)由于受操作系统的限制,一个目录中能存放的图片文件数量也是有限的:随着图片资源不断增加,如何有效管理和维护图片也是一个难题; 阅读全文
posted @ 2014-12-02 16:24 EdisonZhou 阅读(17700) 评论(13) 推荐(24) 编辑
摘要:随着网站业务的不断发展,用户量的不断增加,数据量成倍地增长,数据库的访问量也呈线性地增长。特别是在用户访问高峰期间,并发访问量突然增大,数据库的负载压力也会增大,如果架构方案不够健壮,那么数据库服务器很有可能在高并发访问负载压力下宕机,造成数据访问服务的失效,从而导致网站的业务中断,给公司和用户造成双重损失。那么,有木有一种方案能够解决此问题,使得数据库不再因为负载压力过高而成为网站的瓶颈呢?答案肯定是有的。目前,大部分的主流关系型数据库都提供了主从热备功能,通过配置两台(或多台)数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站可以利用数据库的这一功能,实现数据库的读 阅读全文
posted @ 2014-11-30 21:53 EdisonZhou 阅读(18555) 评论(10) 推荐(23) 编辑
摘要:在本文中,借助了Nginx这个神器简单地在Windows环境下搭建了一个反向代理服务,并模拟了一个IIS服务器集群的负载均衡效果。从这个DEMO中,我们可以简单地感受到反向代理为我们所做的事情,并体会负载均衡是怎么一回事。但是,在目前大多数的应用中,都会将Nginx部署在Linux服务器中,并且会做一些针对负载均衡的优化配置,这里我们所做的仅仅就是一个小小的使用而已(just修改一下配置文件)。不过,万丈高楼平地起,前期的小小体会,也会帮助我们向后期的深入学习奠定一点点的基础。 阅读全文
posted @ 2014-11-29 01:19 EdisonZhou 阅读(56071) 评论(86) 推荐(245) 编辑
摘要:book转眼之间,《大型网站技术架构》的读书笔记到此就结束了。最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的)。通过本书的学习,我们从高性能、高可用、伸缩性、可扩展性、安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览大型网站技术的面貌。后面,等我找完工作,拿到offer后,也许会抽出时间去实践下大型网站所使用的一些技术方案,比如使用Mono在Linux上部署ASP.Net MVC项目,借助Nginx/Jexus构建负载均衡服务器,MSSQL数据库读写分离等,到时也会抽空将所学写成一篇篇博客发到博客园,与各位园友分享。 阅读全文
posted @ 2014-07-28 23:28 EdisonZhou 阅读(3760) 评论(1) 推荐(5) 编辑
摘要:book上篇笔记我们学习了可伸缩架构,但在实际场合中,包括许多架构师也常常混淆可伸缩和可扩展,用可扩展表示伸缩性。那么在此,跟随作者我们来理清这两个概念,避免我们以后对其傻傻分不清楚。扩展性(Extensibiltiy)指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。我们不禁想到了面向对象中一大原则:开闭原则,对扩展开放,对修改封闭。也就说,当系统新增一个功能时,不需要对现有系统的结构和代码进行修改。伸缩性(Scalability)指系统能够通过增加(或减少)自身资源规模的方式增强(或减少)自己计算事务的能力。在网站架构中,通常是指利用集群的方式增加服务器数量,从而提高系统的整体事务吞吐能力。 阅读全文
posted @ 2014-07-24 00:31 EdisonZhou 阅读(4494) 评论(3) 推荐(9) 编辑
摘要:book首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力。 阅读全文
posted @ 2014-07-19 13:57 EdisonZhou 阅读(11955) 评论(7) 推荐(33) 编辑
摘要:book首先,不得不说:要保证一个网站永远完全可用几乎是一件不可能完成的任务(Mission Impossible,是不是有点碟中谍的感觉)。广泛采用故障分的,它是对网站故障进行分类加权计算故障责任的方法。一般会给每个分类的故障设置一个权重(例如事故级故障权重为100,A类为20等),其计算公式为:故障分=故障时间(分钟)*故障权重。公司对技术团队的考核一般会参考故障分,例如某团队今年发生了几个事故级故障,那么其绩效考核估计受到很大影响,年终奖什么的就悲剧了。 阅读全文
posted @ 2014-07-12 02:36 EdisonZhou 阅读(6926) 评论(10) 推荐(14) 编辑
摘要:book反向代理服务器具有以下功能:①保护网站安全:任何来自Internet的请求都必须先经过代理服务器;②通过配置缓存功能加速Web请求:减轻真实Web服务器的负载压力;③实现负载均衡:均衡地分发请求,平衡集群中各个服务器的负载压力; 网站性能优化第一定律:优先考虑使用缓存优化性能。缓存是指将数据存储在相对较高访问速度的存储介质中(如内存),以供系统进行快速处理响应用户请求。 阅读全文
posted @ 2014-06-26 17:20 EdisonZhou 阅读(6741) 评论(9) 推荐(32) 编辑
摘要:bookGzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右。想要启用Gzip压缩,提高浏览速度,可以浏览这篇文章:http://www.chinaz.com/web/2012/1017/278682.shtml 内容分发网络(Content Delivery Network,简称CDN)将加速内容分发至离用户最近的节点,缩短用户查看对象的延迟,提高用户访问网站的响应速度与网站的可用性,解决网络带宽小、用户访问量大、网点分布不均等问题。 阅读全文
posted @ 2014-06-24 21:20 EdisonZhou 阅读(4001) 评论(2) 推荐(4) 编辑
摘要:book最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责。网站一般分为三个层次:应用层、服务层和数据层。通过分层,一个庞大系统切分成不同部分,便于分工合作和维护。但是,分层架构也有一些挑战:①必须合理规划层次边界和接口;②禁止跨层次的调用及逆向调用。 阅读全文
posted @ 2014-06-16 00:56 EdisonZhou 阅读(6657) 评论(5) 推荐(12) 编辑
摘要:book一、大型网站系统特点(1)高并发、大流量:PV量巨大(2)高可用:7*24小时不间断服务(3)海量数据:文件数目分分钟xxTB(4)用户分布广泛,网络情况复杂:网络运营商(5)安全环境恶劣:黑客的攻击(6)需求快速变更,发布频繁:快速适应市场,满足用户需求(7)渐进式发展:慢慢地运营出大型网站 阅读全文
posted @ 2014-06-07 01:40 EdisonZhou 阅读(11618) 评论(23) 推荐(53) 编辑
摘要:book《大型网站技术架构:核心原理与案例分析》通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。 阅读全文
posted @ 2014-06-06 23:35 EdisonZhou 阅读(13204) 评论(4) 推荐(17) 编辑