知名网站分享:PHP代替Perl,Redis置换MySQL,日处理过亿PV
导读:你要相信,技术是不带有任何歧视色彩的,即使你从事着一个饱受争议的业务,也不能抹杀技术对于创新的贡献。 早先(2012年)我们有报道过 著名成人网站Youporn的IT主管Eric Pickup在Google Groups中的发言,Youporn现在是100%的Redis的基础,每天处理1
导读:你要相信,技术是不带有任何歧视色彩的,即使你从事着一个饱受争议的业务,也不能抹杀技术对于创新的贡献。早先(2012年)我们有报道过著名成人网站Youporn的IT主管Eric Pickup在Google Groups中的发言,Youporn现在是100%的Redis的基础,每天处理1亿PV,每秒处理30万次请求。而近日Eric接受了Justin Mares的采访,分享了Redis在Youporn的最佳实践。
以下为采访译文:
Justin:可以说说你们迁往Redis的时间和原因吗?
Eric:大约两年前我加入了这个网站。当时网站使用的是Perl,这也是我加入YouPorn的一个理由。尽管我在Perl上有丰富的工作经验,但是很快就发现如果继续使用Perl,网站将很难得到发展,因为公司缺乏开发者——特别是强大的高级开发者。而网站的停滞不前显然不是我们想看到的。
我们很快的做出了决定并寻找其它的替代技术,那时候的第一直觉就是PHP;然而我们并不想再次受到限制,所以我们开始关注基于Java的解决方案。但是经过一系列的研究和观察后,我们仍然选用了PHP。
在决定使用Redis之前,我们有尝试过Redis、Varnish以及其它的一些技术。有一些网站内部已经开始使用Redis,大多数用例都是缓存解决方案,但是我们想知道它究竟可不可以做为一个真实的数据储存。
我们做了一些早期的测试,并将性能作为主要考虑因素,因为这个问题一直困扰着我们。我们很震惊于Redis的测试结果,在一些讨论后,我们决定使用Redis作为我们网站的主数据库。
之前网站使用的一直是传统的LAMP堆栈。网站由Linux、Perl、MySQL及Memcached组成,同样我们也担心过网站的过渡期,我们使用了一个折中方案,在整个系统中保留了MySQL,现在看来这个方案确实非常的明智。我们不通过网站读取MySQL,但是我们使用它来填充新的列表或者哈希表,用以处理无法预计的突发状况。我们使用MySQL做一些特殊的查询,使用Redis作为网站的数据库。
在方案投入建设后,我们很快就发现这是一个多么英明的决定;时间检验了这个解决方案确实非常适合我们的用例,网站的性能也得到了颠覆性的提升。
Justin:你从什么方面进行了评估并认定这是一个很好的解决方案?
Eric:易于开发占了很大的部分,特别是像我们这样重写整个项目的情况。幸运的是,Redis的数据结构非常匹配我们的业务。
YouPorn的主要任务还是关于视频和对象列表,这些对象可能是评论、收藏等等。最受好评的视频,或者是观看最多的视频。基本是都是关于列表和对象,而这些都可以很好的映射到哈希表。我们也尝试了一些其它数据类型,但是90%情况都陷入排序或者是哈希上的困境。
Justin:在决定使用Redis后,花费了多长的时间去实现并且运行?
Eric:公正的说,回溯那个阶段,我们团队的产能提升得很大。就像我刚说的,这是一个全新的项目,而在初期阶段大部分都是我和另外一个同事完成。
我曾今说过,4周左右我们完成了网站原型的一大部分。我们拥有首页、所有主页并完成了大部分的视频页面;尽管不可以添加,但是你可以查看评论。然而我们只有两个人,只用了四周的时间!这些时间还包括了学习一门新的框架(那个时候使用的是Symfony),所以生产效率确实太快了。
Justin:你们使用了多少个实例?
Eric:少于10个。
Justin:令人震惊的数字,你的团队是如何操作以达到这一效果的?
Eric:随着功能的增加,实例的数量也随之增加,但是通常情况下我们使用Redis做大量的缓存。在网站第一次发布时,我们没有任何缓存,我们只是依赖Redis。
经过一段时间,我们发现服务器过热,所以我们加入了不同级别的缓存。我们添加了Redis的第二个节点,并为一些人气页面建立短时间的缓存。还有一点需要注意的是,我们使用了Varnish,这样许多页面就不需要通过Redis来缓存。
Justin:你什么时候开始做架构决策,可以说说你们在什么地方使用了Redis,以及发展至今都有什么改变?
Eric:我想说的是Redis只是第一个我们准备使用的技术。Varnish则是我们之前制定的决策。这两个技术的测试结果让我们非常满意,就像我所说的,在决定重写网站之前,公司就有使用过这两个技术,所以对我们来说并不陌生。
迄今为止我们所做改变中最大的应该就是添加了二级Redis缓存层,这个措施切实的减少了服务器上每秒的查询次数,并且提升了网站的安全性。
Justin:你觉得网站重写以后最大的收益是什么?
Eric:如果只有一个的话,我认为是使用了Redis以后可以快速添加新特性。当然不仅仅是Redis,而是整个堆栈。我们编写了一个非常有用的库,基于Redis库,它让我们可以快速的整合新特性。
Justin:这一转变中遇到过什么障碍及困难,是否根据自己的情况做了一些定制?
Eric:让我回忆一下。实现缓存层耗费了一些时间。就像我说的,服务器运行得越来越热,我们也不想靠不停的投入服务器去解决这个状况,所以制定解决方案需要不短的时间。
另一个耗费时间的是弄清问题发生的原因。那个时代,多数使用Linux系统搭建的网站都会选择MySQL作为数据库。MySQL确实有着巨大的优势,因为这里存在很多技术文献。如果出现问题,有很大的可能已经被别人解决过,你将在大把的网站上发现信息及建议。Redis还没有这样的社区,因此在问题发生后可用的信息非常之少。
因为对比MySQL缺少了这些技术文献,所以制定问题解决方案,或者类似备份到磁盘设置的简单操作都将花费更多的时间。然而随着Redis变的愈来愈流行,这个方面逐渐得到了完善。
Justin:有可以和读者分享的技巧和秘诀吗?
Eric:我就说说最有价值的一个吧,这方面我了解的也不是很多,因为我主要负责的不是系统,而这些都是系统相关知识。我想说的是磁盘备份时容易被忽视的一个点,在拥有一个主节点、N个从节点的集群中,要确定给备份留有足够的时间,这样就不会出现几个操作同时对磁盘写入的情况。
这一点非常容易被忽视。默认设置在只有一台服务器的情况下运行良好,然而随着我们不定期的加入服务器,错误也随之产生。
更多消息:据@developerWorks得知,YouPorn有超过100TB的情色资料,每天数据传输量950TB。而Redis为了处理用户登录、观看记录等操作,每小时记录数据更多达8-15GB。
更多内容请关注CSDN云计算频道 及@CSDN云计算微博
: How YouPorn Uses Redis: SFW Edition (编译/仲浩 审校/周小璐)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

Docker 환경을 사용할 때 Docker 환경에 Extensions를 설치하기 위해 PECL을 사용하여 오류의 원인 및 솔루션. 종종 일부 두통이 발생합니다 ...

CMS는 콘텐츠 관리 시스템을 의미합니다. 사용자가 고급 기술 지식 없이도 디지털 콘텐츠를 생성, 관리 및 수정할 수 있는 소프트웨어 애플리케이션 또는 플랫폼입니다. CMS를 사용하면 사용자가 콘텐츠를 쉽게 생성하고 구성할 수 있습니다.

Apple M1 Chip Mac에서 Redis를 컴파일하고 설치할 때 문제와 솔루션이 발생하면 많은 사용자가 ...
