`

百万用户规模的系统如何扩展

 
阅读更多

系统扩展一直是个让人头疼的事情,MatinKleppmann通过本文分享了他自己的6条经验,外加网友的一条建议,这些经验对于扩展Twitter这样规模的系统或许帮助不大,但是对于百万用户级别的系统扩展就另当别论了。

【编者按】面对系统扩展的难题,我们做过不少的经验分享,学习别人的系统扩展经验可以让我们少走很多弯路,今天给大家介绍的这篇文章来自High Scalability网站,MatinKleppmann针对百万用户级别的系统扩展,总结了几条有用的经验,当然这些经验对于像Twitter这样规模的系统就不一定有用了。

系统扩展一直是个让人头疼的事情,但系统扩展过程中你是不是也经常会产生一些新的想法?同样,别人扩展系统的经验也一定会给你带来很多帮助,MatinKleppmann通过本文分享了他自己的一些经验。

这些经验对于扩展Twitter这样规模的系统或许没有什么帮助,但是针对百万用户级别系统的扩展(很多项目面临这样的难题),MatinKleppmann的经验无疑会带来很多帮助:

构建可扩展系统没有什么乐趣可言,这是一个枯燥而又繁琐的任务。虽然大量的工具已经预先准备好了,可现有的那些开源解决方案有着各种各样缺点(当然你自己的方案也不一定有多好,但至少能够帮你解决特定的问题)。
在这里,MatinKleppmann分享了他的6个重要的系统扩展经验(外加网友的一条有用评论):

1. 实际工作中的负载测试非常困难

负载测试需要让系统承担不同的工作量,有些工作量甚至超出了你现有的数据量水平,通过负载测试,评估系统在不同工作量条件下的性能,以及持续常态运行的能力。具体还需要测试出系统的响应速率、事务处理速率等参数。然而测试一个大型分布式系统和做科学实验不同,科学实验可以在理想条件下进行,而负载测试则要难得多了,这对于搞计算机科学的人来说可能很难接受。你很难知道你实际访问的是怎样的模式,很难测试比你实际拥有数据更大的综合数据集,很难将旧系统与新系统进行比较,所以为防新代码出现错误,你要随时准备好回滚。

2. 数据演变(data evolution)很困难

想象一下,你的机房被数据“淹没”的情形,到处都是数据——数据库中、日志中,以及一系列二进制数据块中。这时候如果要更新数据格式,你就需要改变一个巨大的时槽,而大公司在这些处理的自动化和优化上有着丰富的经验,可以适当借鉴大公司的数据演变经验,节约数据演变的时间成本。

3. 数据库连接是一个瓶颈

当系统在服务和节点数增加时,数据库连接数以难以置信的速度增加。每个连接都会消耗资源,不仅仅是机器资源,还有人力资源,因为你的开发人员需要去弄明白怎样解决这些问题。通过使用连接池或者编写数据访问层,你可以通过API进行数据库访问。

4. 读取副本是一步痛苦的操作

但读取副本从主服务器中解除数据库访问也是一种常用的扩展策略。同样,这也需要花费大量的精力来建立和维护这些系统,毕竟故障处理是一个始终存在的问题。

5. 考虑内存效率

峰值延迟通常是由内存问题引起的,想要更有效地利用RAM可能很困难,因为你很难判断出RAM的实际使用情况。通过购买更多的RAM可以解决很多性能问题,如果可能的话,可以在RAM中加入索引,注意是对字符串的哈希表建立索引,而不是针对字符串本身。

6. 更改捕获(change capture)是一个有效的方法

比如更改系统中的数据,这样的更改必须通过许多服务,比如数据库、搜索索引、图、索引、副本读取、缓存无效化。你可能认为可以每次在应用更新时将其写到多个位置,但实际上很少这样做。你也许认为可以通过应用程序读取数据库日志,但这对于有些系统是不可行的。更改捕获系统是一个不错的解决方案,该系统捕获所有写操作并将它们存储到数据库中。应用程序可以实时接收这些更新,它们会形成更改的历史记录。该方法的好处是将数据生产者和消费者分开,这为你进行实验提供了很大的方便,而不用去担心对主要站点造成影响。

7. 针对高速缓存和缓存无效化(cache invalidation)

Mysteriousllama的一篇文章评论为我们提供了额外的经验:如果没有正确地缓存,又没有有效的缓存失效策略,那数据库就危险了。使用Redis和Memcache来缓存可能出现的一切,而且要切记:不到万不得已,不要连接数据库。确保你可以轻松使任何缓存无效化,保持事务原子性,避免系统在紊乱状态下运行。通过锁定,以确保当缓存无效时,数据库不会堆满同一查询的多个副本。你或许会认为选择数据库中的查询缓存可能同样有效,但相信我,这不太可能。当然,除了缓存简单的查询,你还可以缓存更高级别的对象。

根据你对可靠性的要求,你还可能会考虑将缓存用作回写和数据库后台的批处理写入。由于多种因素的影响,这一般都要比单个写入效率更高,许多大型网站都将这作为它们进行系统扩展的常用策略。

原文链接: Six Lessons Learned The Hard Way About Scaling A Million User System  (翻译/毛梦琪 责编/魏伟)

以“ 云计算大数据 推动智慧中国 ”为主题的 第六届中国云计算大会 将于5月20-23日在北京国家会议中心隆重举办。产业观察、技术培训、主题论坛、行业研讨,内容丰富,干货十足。票价折扣还剩最后5天,过后将恢复原价,需要购买的朋友,请抓住这最后的机会,点击报名!

 

分享到:
评论

相关推荐

    基于Jsp的用户管理系统+论文.rar

    随着科学的发展社会的进步学校的规模也得到了扩大,学生人数也越来越多,信息量增大,信息管理也越来越困难。传统的低效率学生管理办法已经不能满足于当下大量信息快速处理的要求。同时计算机与网络技术的发展使电脑...

    基于Django+MySQL的先进用户管理系统源码

    项目名称:基于Django和MySQL的先进用户管理系统 技术栈:主要采用Python语言,结合JavaScript、HTML和CSS技术。 项目规模:包含163个文件,具体分布如下: - JavaScript文件:91个 - Python文件:23个 - HTML模板...

    高私密性的消息通讯系统 Vuvuzela.zip

     Vuvuzela 是第一个在百万用户规模下,提供强大的元数据私密性的系统。之前的系统使用 Tor (例如 Pond)隐藏了元数据,但容易引来流量分析攻击。而使用 DC-nets 和 PIR 技术加密元数据的系统,规模不能扩展到数千...

    LAXCUS分布式操作系统6.0版本简明使用手册

    Laxcus是一个开源、容错、高扩展、多人共享、多机协同分布运行的操作系统,通过分布式应用软件,聚合数据、算力、机器算法,处理大规模、超大规模的分布式存储和分布式计算业务。着力为用户打造一站式的云端超级...

    网上购物系统 jsp mysql (系统+论文)

    它不但可以扩大商家的规模和市场影响力,而且可以减少企业的经营成本,提高工作效率。 本文首先介绍了网上购物系统的现状及开发背景,然后论述了系统的设计目标,系统需求和总体设计方案,较详细的论述了系统的详细...

    图书销售管理系统数据库设计.docx

    随着计算机的普及书店规模的不断扩大,传统的图书销售管理方法,都是通过人工统计和计算的管理方式进行的。这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的...

    快速邮(Ksemail) 邮件系统 v5.1(IIS-Sql Server)

    支持大规模用户数,可支持百万级用户,理论上可支持千万级用户 高可用性,系统可以提供一年365天,一天24小时不间断服务 良好的可管理性,为维护人员提供基于浏览器的管理与检测界面,支持远程管理 支持...

    大规模天线专题组技术报告

    大规模天线阵列(Massive Multiple Input and Multiple Output, ...大规模天线阵列系统中,基站侧配置大规模的天线阵列(从几十至上千),利用 空分多址(SDMA)技术,可以在相同时频资源上同时服务多个用户

    新源人力资源管理系统网络版人事管理系统

    01.可以支持单机、网络、远程:我们是做在同一个平台里面的,所以用户可以比较方便的从单机升级为网络,网络升级为远程,这一个过程不会影响到任何数据信息,以方便用户随着业务的扩大而对系统的进一步升级要求;...

    基于SSM+mysql的电影视频在线点播系统设计与实现(源码+部署说明+视频演示).zip

    扩展性强:系统采用模块化设计,方便进行功能扩展和系统升级,满足不同用户需求和电影库规模的要求。 总之,基于SSM+MySQL的电影视频在线点播系统具有技术稳定性高、电影分类浏览和搜索功能完善、用户友好、数据库...

    论文研究-基于DSMI算法和GPU加速的大规模视频检索系统.pdf

    本视频检索系统围绕如何处理大规模数据和在线实时检索来展开研究。基于互信息量的镜头边界检测算法检索性能较好,...同时GPU加速使用户在线检索时间成功达到20倍加速比,满足了项目的实时性要求,具有较高的可扩展性。

    学生信息管理系统设计与实现大学论文.pdf

    随着学校的规模不断扩大,学生数量急剧增长,需要管理的各种信息也成倍增加,所以设计了该系统。 本系统主要实现了对高校从学生学籍信息录入、到学生成绩管理。其主要描述系统主界面的设计、主菜单的设计、用户验证...

    快速邮(Ksemail) 邮件系统 v6.0 build 060630(Apache-MySQL)

    通过增加计算机的数量,动态扩展系统多进程/多线程编程技术,可以在最短的时间内响应大量用户的并发访问,同时降低对系统资源的占用支持大规模用户数,可支持百万级用户,理论上可支持千万级用户高可用性,系统可以...

    Java网上购物系统设计

    它不但可以扩大商家的规模和市场影响力,而且可以减少企业的经营成本,提高工作效率。 本文首先介绍了网上购物系统的现状及开发背景,然后论述了系统的设计目标,系统需求和总体设计方案,较详细的论述了系统的详细...

    LAXCUS分布式操作系统FRONT节点命令手册

    Laxcus是一个开源、容错、高扩展、多人共享、多机协同分布运行的操作系统,通过分布式应用软件,聚合数据、算力、机器算法,处理大规模、超大规模的分布式存储和分布式计算业务。目前企业版计算机集群规模可达百万级...

    图书管理系统可行性分析报告

     鉴于原有系统的技术性含量比较低,故不需要多少高技术人员的操作,只是由于数据量的日益扩大,所需要的操作人员数量不断增大。这一点已不再适应目前信息化时代的步伐。  设备的科技含量也比较低,没有达到大量的...

    springboot+vue选课排课管理系统(源码+说明文档).zip

    随着高校规模逐渐扩大,学生数量增多,人为课程管理任务繁重,工作繁多。课程管理系统成为学生以及老师和学校必备的系统,主要完成教师发布课程、上传成绩,学生选课、查看成绩以及生成课表的全过程。 因高校人数...

    java分布式秒杀系统源码.zip

    业务特点 瞬间高并发、电脑旁边的小哥哥、小姐姐们如超市哄抢的大妈一般,疯狂的点着鼠标 库存少、便宜、稀缺...搞活动就意味着人多,接入SLB,对多台云服务器进行流量分发,可以通过流量分发扩展应用系统对外的服务

    LAXCUS分布式操作系统WATCH节点命令手册

    目前企业版计算机集群规模可达百万级节点,亿级用户在线,着力为用户打造一站式的云端超级计算机。 相比传统的单机操作系统,Laxcus分布式操作系统以多机协同分布运行为特点,基于Laxcus分布式操作系统的分布应用...

    基于javaWeb实现学生选课管理系统程序设计源码+数据库文件+文档说明分享

    随着学校的招生规模的不断扩大,许多高校出现了许多个校区并存的局面,并且校区之间的地理位置跨度非常大,给高校选课带来了很大的不方便。高校选课系统就是为了解决这个问题而产生的,它利用高校现有的网络资源使...

Global site tag (gtag.js) - Google Analytics