知名网站分享: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 (编译/仲浩 审校/周小璐)

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

CMS steht für Content Management System. Es handelt sich um eine Softwareanwendung oder Plattform, die es Benutzern ermöglicht, digitale Inhalte zu erstellen, zu verwalten und zu ändern, ohne dass dafür fortgeschrittene technische Kenntnisse erforderlich sind. CMS ermöglicht Benutzern das einfache Erstellen und Organisieren von Inhalten

Probleme und Lösungen, die beim Kompilieren und Installieren von Redis auf Apple M1 Chip Mac auftreten, können viele Benutzer ...
