网站性能

大型网站系统架构分析

十年热恋 提交于 2019-12-30 23:31:19
千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理 :负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁 :平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题 :大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。 接下来讨论大型网站的底层系统架构,来有效的解决上述问题。 毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。 下面

大型网站系统架构分析

谁说我不能喝 提交于 2019-12-30 23:30:56
千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理 :负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁 :平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题 :大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者海南的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。 接下来讨论大型网站的底层系统架构,来有效的解决上述问题。 毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。 下面

Redis学习一:Nosql入门和概述

一世执手 提交于 2019-12-30 01:38:56
现在Redis越来越火,为了适应技术的发展,开始学习一下Redis,在学习Redis之前先学习一下Nosql。 第一部分:入门概述 1.1 互联网时代背景下大机遇,为什么用nosql 1.1.1 单机Mysql的美好年代(好几年前) 当时的业务很相对简单,就是JSP--->Action---->Service---->DAO----->数据库,数据库也就是一个实例而已,无论是Mysql还是Oracle。把这五层缩减为三层的话便是:应用层------>DAO层------>Mysql实例。 以前一个网站的访问量一般不大,用单个数据库可以轻松应付。但是随着时代的发展,上述数据存储遇到了存储的瓶颈: 1) 数据量的总大小,一个机器放不下时(以Mysql为例,单表存储大概三百多万的数据的时候DBA就该进行预警并优化分割了) 2) 数据的索引(B+Tree),一个机器的内存放不下时(众所周知,为表建立索引也是需要消耗内存的,当我们所建立的索引内存盛不下时) 3) 访问量(读写混合)一个实例不能承受 1.1.2 Memcached(缓存)+MySQL+垂直拆分 后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引

Redis(一):NoSQL入门和概述

醉酒当歌 提交于 2019-12-30 01:36:43
NoSQL入门和概述目录导航: NoSQL入门概述 3V+3高 当下的NoSQL经典应用 NoSQL数据模型简介 NoSQL数据库的四大分类 在分布式数据库中CAP原理CAP+BASE NoSQL 入门概述 互联网时代背景下的大机遇,为什么用NoSQL 单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小,一个机器放不下时 数据的索引(B+ Tree)一个机器的内存放不下时 访问量(读写混合)一个实例不能承受 如过满足了上述1 or 3个,需要进化... Memcached(缓存)+ MySQL + 垂直拆分 后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使 用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能 共享,大量的小文件缓存也带了了比较高的IO压力。在这个时候,Memcached就自然的成为一个非常时尚的技术产品。 Memcached作为一个独立的分布式的缓存服务器

1.NoSQL入门和概述

陌路散爱 提交于 2019-12-30 01:35:53
入门概述: 1.为什么要用到NoSQL   a) 单机MySQL的美好年代,在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。   上述架构下,我们来看看数据存储的瓶颈是什么?   1.数据量的总大小 一个机器放不下时   2.数据的索引(B+ Tree)一个机器的内存放不下时   3.访问量(读写混合)一个实例不能承受    如果满足了上述1 or 3个,进化......   b) Memcached(缓存)+MySQL+垂直拆分,后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带了了比较高的IO压力。在这个时候,Memcached就自然的成为一个非常时尚的技术产品。    Memcached作为一个独立的分布式的缓存服务器,为多个web服务器提供了一个共享的高性能缓存服务,在Memcached服务器上,又发展了根据hash算法来进行多台Memcached缓存服务的扩展

模拟监控VS真实用户监控!应用性能监控工具大PK

牧云@^-^@ 提交于 2019-12-26 23:55:22
任何应用监控技术的重中之重通常是针对终端用户的基础架构或组件进行监控。智能工具是测量用户体验的理想工具,因为它们理解应用的运行情况,会自动基准化性能表现,在几乎不产生干扰的情况下解码并建立应用子组件间的关系。 其实,在测量用户体验时,有两种不同的性能监控方法: 模拟监控——供应商提供远程(通常是全球的)基础设施,可定期访问网站并记录每次运行的性能数据。测量的流量并非实际用户所产生的,而是用于收集页面性能时生成的。 真实用户监控——供应商提供嵌入到每个页面的代理(Javascript 脚本),报告当前页面的每个请求的加载数据。顾名思义,这种监控技术主要观测实际用户的交互。 由于这两种方式事实上是互补的,所以没办法简单的说哪种更好。Eric Shepherd (Gilt 的前端工程师)归纳了这两种技术所具备的优势: “真实用户监控和模拟监控都能从不同角度对应用性能进行监控,且具有不同的功能和针对性。真实用户监控帮助我们理解应用的长期趋势,而模拟监控可以诊断出并解决短期的性能问题。” 在此,笔者对两种监控方式做了一个对比,下面向您介绍两种监控各自的特点: 模拟监控 本质上,有了模拟监控(也称为主动监控),用户可以指定以下监控项目: 监控哪一个 URL(网站或是服务器)。 监控的类型(HTTP, Ping, API 还是其他)。 监控此 URL 的频率。 如果出了问题,向谁发送告警。

大型网站--负载均衡架构

你。 提交于 2019-12-17 14:50:22
负载均衡 (Load Balancing) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 大型网站负载均衡的利器 全局负载均衡系统(GSLB) 内容缓存系统(CDN) 服务器负载均衡系统(SLB) DNS域名解析的基本过程 最初的负载均衡解决方案(DNS轮询) 优点 基本上无成本,因为往往域名注册商的这种解析都是免费的; 部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可 缺点 健康检查,如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器。修改DNS记录全部生效起码要3-4小时,甚至更久; 分配不均,如果几台Web服务器之间的配置不同,能够承受的压力也就不同,但是DNS解析分配的访问却是均匀分配的。用户群的分配不均衡导致DNS解析的不均衡。 会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DNS解析无法将验证用户的访问持久分配到同一服务器。虽然有一定的本地DNS缓存,但是很难保证在用户访问期间,本地DNS不过期,而重新查询服务器并指向新的服务器,那么原服务器保存的用户信息是无法被带到新服务器的,而且可能要求被重新认证身份,来回切换时间长了各台服务器都保存有用户不同的信息,对服务器资源也是一种浪费

大型网站的灵魂——性能

夙愿已清 提交于 2019-12-17 02:02:05
前言 在前一篇随笔 《大型网站系统架构的演化》 中,介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我打算写一个系列,从理论到实践讲述大型网站的点滴,这也是一个共同学习的过程,希望自己能坚持下去。系列大概会分为两部分,理论和实践,理论部分尽量通俗易懂,也要讲一些细节。实践部分会抽取一些技术做实践,将方法、解决问题过程分享出来。 本文将讲述大型网站中一个重要的要素,性能。 什么是性能 有人说性能就是访问速度快慢,这是最直观的说法,也是用户的真实体验。一个用户从输入网址到按下回车键,看到网页的快慢,这就是性能。对于我们来说,需要去挖掘这个过程,因为这决定我们怎么去做性能优化。 这中间发生了什么? 用户访问网站的整个流程:用户输入网站域名,通过DNS解析,找到目标服务器IP,请求数据经互联网达到目标服务器,目标服务器收到请求数据,进行处理(执行程序、访问数据库、文件服务器等)。处理完成,将响应数据又经互联网返回给用户浏览器,浏览器得到结果进行计算渲染显示给用户。 我们把整个过程,分为三段路径: 1、第一段在用户和浏览器端,主要负责发出用户请求,以及接受响应数据进行计算渲染显示给用户; 2、第二段在网络上,负责对请求数据、响应数据的传输; 3、第三段在网站服务器端

CDN如何提高站点性能?

无人久伴 提交于 2019-12-13 14:03:04
智能手机和廉价互联网的到来导致了更多的互联网用户。因此,企业别无选择,只能在线上迎合客户。公司希望他们的企业具有在线形象,以便与客户互动,产生潜在客户并改善业务。公司要做的第一件事就是创建一个网站。 至关重要的是要了解,网站加载时间对于网站的成功至关重要。智简魔方根据SEO专家进行的一项研究表明,超过75%的网站的加载时间少于5秒(来源)。因此,如果您的网站花费的时间比其他网站花费的时间长,那么客户等待网站加载的可能性就很小。您是否已经在考虑如何提高网站性能以避免丢失客户? 好吧,各种方法和技巧都可以帮助您缩短网站的加载时间;最简单有效的方法是使用内容交付网络(CDN)。 什么是内容交付网络? 内容交付网络主要是由地理位置分散的服务器组成的网络,这些服务器存储网站的缓存并充当服务器和用户之间的中间实体。加载时间缓慢的最常见原因之一是您网站的托管服务器与实际用户之间的距离。让我们假设您的服务器在美国,而您的访客来自印度;从美国到印度传输数据可能要花费大量时间,这会导致延迟。 如果您使用的是CDN,则当印度用户访问您的网站时,该查询将不会定向到美国。CDN服务提供商将查询定向到距离印度最近的服务器,并将数据传回,从而立即加载该网站。同样,如果您的用户正在从澳大利亚访问您的网站,则CDN会将请求定向到距离澳大利亚最近的服务器,从而缩短了加载时间。 CDN如何运作?

如何运用最新的技术提升网页速度和性能----------引用

我是研究僧i 提交于 2019-12-12 13:43:03
1. 性能设计 在我们的项目中,我们每天都会和设计师和产品负责人讨论关于平衡美观和性能的问题。对于我们自己的网站,这样做是很简单的。简言之,我们认为好的用户体验从快速的内容传输开始,也就意味着 性能 > 美观。 好的内容、布局、图片和交互是吸引用户的重要因素。这每个因素都会影响页面的加载时间和终端用户体验。每一步我们都在探讨如何在获得好的用户体验和保证设计美感的同时,最小化对性能的影响。 内容优先 我们想要把核心内容尽快地呈现给用户,意味着我们要处理好基本的 HTML 和 CSS。每个页面都应该达到基本的目的:传递信息。JS、CSS、网页字体、图片、网站分析等优化都是位居于核心内容之下的。 可控性 给理想网站定义了标准后,我们总结出:要想达到预期效果,就要能对网站各方面的控制都游刃有余。我们选择构建自己的静态站点生成器,包括资源传输,并且由我们自己操控。 静态站点生成器 我们用 Node.js 实现了静态站点生成器。它是采用带有简短 JSON 页面描述标签的 Markdown 文件来生成整个网站结构和它所有的资源。为了包括特殊的页面脚本,也可以附带一个 HTML 文件。以下是一个简单化的描述标签和 markdown 文件,用于博客的发布,用它来生成真正的 HTML。 JSON 描述标签: markdown 文件: 图片传输 平均一个 2406kb 的网页中 1535kb 是图片