使用 HAProxy, PHP, Redis 和 MySQL 轻松构建每周上亿请(3)

我们将日志分成不同的文档(在Monolog库中他们被称为“通道”)。主日志文件用于存储所有应用范围的错误信息以及特定通道中的短日志信息。我们将来自不同通道中的详细日志信息保存在不同的文件中。

可扩展性

扩展平台上的应用层级并不是件难事。 HAProxy的性能并不会被常时间的消耗,我们只需要考虑避免单点故障(SPoF) 所需的冗余。

在此模式下只需要增加其他应用节点即可。

数据层

我们使用Redis和MySQL存储所有的数据。当Redis做为主数据存储时,MySQL则用于第三层的缓存存储。

Redis

当设计我们的系统时,我们需要考虑选择一个能够满足我们设定要求的数据库:

存储大量数据时(约2.5亿记录)不能降低性能

主要使用基于特定资源标识符的简单GETs(没有查找或复杂的SELECTs)

能够在单个请求中获取大量的资源以最小化延迟

经过一些调查,我们决定使用Redis。

我们进行的所有操作的复杂度为 O(1) 或 O(N),N代表我们检索的主键数目。这意味着主键空间的大小不会影响到性能。

一次检索的主键数目大于100时我们大多使用MGET命令,与在一次回路中使用多个GETs相比,那样可以忽略网络延迟。

最近我们在主从复制模式下运行了两台Redis服务器。每个的配置为: Xeon E5-2650v2@2.60GHz, 128GB, SSD. 内存限制在100GB...内存经常被占满 :-)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11d225e14f24aa864e1fb91f3336f7d7.html