`

关于大型系统性能、并发的考虑

阅读更多

1. 垂直扩展(stade up),通俗的说就是将某台单一的机器的性能提升的更高,如添加内存、更换更强

的处理器等等。
2. 水平扩展(out),通俗的说就是添加新的机器。
3、数据冷热备份
4、两种负载均衡模式:有状态(如有携带session)和无状态
5、两种负载均衡方式:硬件均衡和软件均衡
6、使用缓存:使用缓存将某些实时性要求不高的服务结果缓存起来是大型应用解决方案的一个共识,合

理的使用缓存将极大的改善应用体验和性能。
常用缓存memcached   memcachedb

总结:在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务

器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。

其他:
1、HTML静态化
2、图片服务器分离
3、数据库集群和库表散列、水平分割、垂直分割
4、缓存
5、镜像
6、负载均衡

DNS轮循是指将相同的域名解释到不同的IP,随机使用其中某台主机的技术,该项技术可以智能的调整网站

的访问量到不同服务器上,减轻网站服务器的压力,实现负载匀衡;如果您感觉到单一的主机已经不堪负

载你网站日益增长的访问,那么建议您采用我们的DNS轮循技术。

 

看一下负载均衡和集群

 

 

 

常用的系统架构是:

·  Linux + Apache + PHP + MySQL

·  Linux + Apache + Java (WebSphere) + Oracle

 

    · Windows Server 2003/2008 + IIS + C#/ASP.NET + 数据库

 

 

数据库方面

 

因为是千万人同时访问的网站,所以一般是有很多个数据库同时工作的,说明白一点就是数据库集群和并发控制,数据分布到地理位置不同的数据中心,以免发生断电事故。

主流的数据库有Sun的是MySQL和Oracle。

 

Oracle是一款优秀的、广泛采用的商业数据库管理软件。有很强大的功能和安全性,可以处理相对海量的数据。而MySQL是一款非常优秀的开源数据库管理软件,非常适合用多台PC Server组成多点的存储节点阵列(这里我所指的不是MySQL自身提供的集群功能),每单位的数据存储成本也非常的低廉。用多台PC Server安装MySQL组成一个存储节点阵列,通过MySQL自身的Replication或者应用自身的处理,可以很好的保证容错(允许部分节点失效),保证应用的健壮性和可靠性。可以这么说,在关系数据库管理系统的选择上,可以考虑应用本身的情况来决定。

MySQL数据库服务器的master-slave模式,利用数据库服务器在主从服务器间进行同步,应用只把数据写到主服务器,而读数据时则根据负载选择一台从服务器或者主服务器来读取,将数据按不同策略划分到不同的服务器(组)上,分散数据库压力。

 

 

 

 

 

服务器集群与负载均衡

 

服务器群集中每个服务结点运行一个所需服务器程序的独立拷贝,而网络负载均衡则将工作负载在这些主机间进行分配。负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。它主要完成以下任务:解决网络拥塞问题,服务就近提供,实现地理位置无关性 ;为用户提供更好的访问质量;提高服务器响应速度;提高服务器及其他资源的利用效率;避免了网络关键部位出现单点失效。

 


常用的服务器集群和数据库集群负载均衡实现方法:
• Citrix NetScaler的硬件负载均衡交换机做服务器集群的负载均衡。
• MySQL Proxy做MySQL服务器集群的负载均衡并实现读写分离。其实现读写分离的基本原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。
• CDN (Content Delivery Network): 几乎在各大网站都有使用该技术。例如,使得你的网站在各省市访问更快,其原理是采取了分布式网络缓存结构(即国际上流行的web cache技术),通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的cache服务器内,通过DNS负载均衡的技术,判断用户来源就近访问cache服务器取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度,如同提供了多个分布在各地的加速器,以达到快速、可冗余的为多个网站加速的目的。

 

缓存

 

众所周知,使用缓存能有效应对大负载,减少数据库的压力,并显著提高多层应用程序的性能,如果某个用户多次请求同一资源,则可以从缓存返回该资源,从而避免了重新从服务器或数据库请求该资源而产生的系统开销。缓存可以通过减少获取请求的资源所需的时间,提高应用程序性能。缓存还可以通过减少到服务器的往返次数,降低网络通信量。尽管缓存可以提高性能,但它也增加了返回到应用程序的资源可能变得陈旧的风险。这意味着,返回的资源可能与假设没有使用缓存的情况下,服务器有可能发送的资源并不完全相同(即取得脏数据”)

 

业内最常用的有:
• Squid cache,Squid服务器群,把它作为web服务器端前置cache服务器缓存相关请求来提高web服务器速度。Squid将大部分静态资源(图片,js,css等)缓存起来,直接返回给访问者,减少应用服务器的负载。


• memcache,memcache服务器群,一款分布式缓存产品,很多大型网站在应用; 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。因为通常网站应用程序中最耗费时间的任务是数据在数据库的检索,而多个用户查询相同的SQL时,数据库压力会增大,而通过memcache的查询缓存命中,数据直接从memcache内存中取,每次缓存命中将替换到数据库服务器的一次往返,到达数据库服务器的请求更少,间接地提高了数据库服务器的性能,从而使应用程序运行得更快。它通过基于内存缓存对象来减少数据库查询的方式改善网站系统的反应,其最吸引人的一个特性就是支持分布式部署。

 

 

独立的图片服务器


无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。这几乎成为常识了。具备独立的图片服务器或者服务器集群后,在 Web 服务器上就可以有针对性的进行配置优化。


 

  • 大小: 72.8 KB
分享到:
评论

相关推荐

    高性能高并发服务器架构大全

     说说大型高并发高负载网站的系统架构 28  mixi技术架构 51 mixi.jp:使用开源软件搭建的可扩展SNS网站 51 总概关键点: 51 1,Mysql 切分,采用Innodb运行 52 2,动态Cache 服务器 -- 52 美国Facebok.com...

    Mysql高级性能优化思维导图

    表分区和分片:对于大型数据库,考虑使用表分区和分片技术,将数据分散到多个物理存储上,提高查询和处理性能。 查询缓存优化:根据具体情况考虑是否启用查询缓存,并设置合适的缓存失效策略,避免缓存膨胀和低效...

    大型分布式网站架构设计与实践.带目录书签.完整版.rar

    在大型网站架构的演变过程中,集中式的架构设计出于对系统的可扩展性、可维护性以及成本等多方面因素的考虑,逐渐被放弃,转而采用分布式的架构设计。分布式架构的核心思想是采用大量廉价的PC Server,构建一个低...

    服务器选项与性能估算.pdf

    1.3 应用级集群部署方案 应用服务器集群主要是解决在大规模并发处理情况下单机以及单实例的性能瓶 颈问题,以及满足客户对系统高可靠性的要求,EAS 实现了一种应用服务器无 关的高可用集群。 由于数据库服务器的...

    ORACLE9i_优化设计与系统调整

    §10.13 应用系统性能优化原则 123 §10.13.1 分而治之 123 §10.13.2 预分配,预支取,预编译 123 §10.13.3 筛选 124 §10.13.4 大量(bluk),块和批处理 124 §10.13.5 对应用适当的分段 124 §10.13.6 优化目标 ...

    数据库管理系统DBMS在企业管理中的应用.doc

    [正文] 数据库管理系统的定义 数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称dbm s。它对数据库进行统一的管理和控制,以保证数据库的安全性和...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。...

    基于J2EE框架的个人博客系统项目毕业设计论...

    为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。...

    平台设计方案.doc

    数据库系统结构设计 根据本系统的结构和应用服务,同时考虑到整个系统的一体化方案、功能扩展和灵 活性,数据库将按以下原则采用主备的方式,数据备份实行实时备份的方式,并考虑采 用数据集群进行扩展。...

    大型网站架构系列:负载均衡详解

    海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高...

    数据库服务器选型原则及实例解说.doc

    )可靠性原则 可靠性原则是所有选择设备和系统中首要考虑的,尤其是在大型的、有大量处理要 求的、需要长期运行的系统。考虑服务器系统的可靠性,不仅要考虑服务器单个节点的 可靠性或稳定性,而且要考虑服务器与...

    大型互联网架构—深入剖析负载均衡终极解决方案

    海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高...

    ebsite for net4.0网站建设系统 v3.0 正式版.zip

    16.增加线程监视功能,为了提高性能,给用户一个更好的使用体验,ebsite将很多非即时任务(也就是不用即时反馈给用户的任务)交给线程池中来处理,你可以在后台查看当前处理的任务数,及设置任务的处理并发线程。...

    详解Linux服务器集群.docx

    虽然发展速度很快,但建设和维护大型网络服务依然是一项挑战性的任务,因为系统必须是高性能的、高可靠的,尤其当访问负载不断增 长时,系统必须能被扩展来满足不断增长的性能需求。由于缺少建立可伸缩网络服务的...

    服务器运维工程师的主要职责.docx

    1、确立,评估和实施相应的IT项目,以确保和完善系统的性能,稳定性,可扩展性以及低成本的运行,带领团队安装和配置系统的软硬件,以满足业务发展的需求。 服务器运维工程师的主要职责全文共4页,当前为第3页。 ...

    SQL Server数据库查询速度慢原因及优化方法

    这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件''分区视图'') a、在实现分区视图之前,...

    go语言圣经 .pdf

    在Go语言里再也不用担心,也不用考虑delete或者free,系统自动会回收。 2.函数可以返回多个值  这个很神奇,大多数语言只能返回一个值,Go语言可以返回多个值。这个功能使得开发者再不用绞尽脑汁的想到底怎么...

Global site tag (gtag.js) - Google Analytics