dot Redis 8 来了 - 而且是开源的

了解更多

HotelTonight 如何处理即时预订和入住的需求

最初发表于 fastcolabs.com

HotelTonight 应用程序围绕最后一分钟酒店预订而构建。 用户依靠该应用程序快速提供房价和空房信息,尤其是在他们的手机信号不稳定且正值繁忙的节假日周末时。

“我们可能会遇到站在酒店外面预订房间,然后走进去,希望能够办理入住的顾客,”HotelTonight 联合创始人兼首席架构师 Chris Bailey 说。

Bailey 说,该应用程序的后端需要能够快速地将预订和空房信息与一系列 酒店预订系统以及用户的手机和平板电脑同步,这样它才不会错过显示划算的交易,或者更糟糕的是,给某人预订一个已经被占用的房间。 该应用程序的黑色星期五流量达到正常负载水平的八倍,7 美元的特价房间在不到七分钟内售罄

“从历史上看,人们并没有那么多最后一分钟预订,但由于 移动设备,这种情况确实发生了转变,”他说。“他们可能在出租车的后座上; 他们可能在酒吧里; 也许他们正在参加一个聚会,然后决定,‘嘿,我今晚不想开车回家。’”

为了即使在重负载下也能保持数据 实时更新,该公司使用了快速的 Redis,这是一个开源数据结构服务器,目前由 Pivotal 赞助。 Bailey 说,它还有助于工程师快速添加和调整新功能,并记录新的统计数据,而无需费力地构建传统的数据库表。

“我们最初并没有从 Redis 开始,但我们很快就发现了对它的需求,”他说,并解释说该公司仍然使用 MySQL 来支持其部分基础设施。 “所有这些事情,你心想,好吧,我真的不想把它写入 MySQL——这似乎有很多开销,我必须创建一个表并管理一个模式,并且有很多开销——现在我只需将它写入 Redis。”

Bailey 说,该数据库系统还有助于解决 HotelTonight 的一个常见问题:处理与客户设备和第三方服务(如预订 API)通信中的网络超时和其他错误。

Redis 包括原子计数器——即可以在单个操作中递增的变量,因此即使在多个进程访问时,它们也能报告和存储一致的值——这有助于跟踪 API 调用或其他操作失败的频率。

部分原因是避免过多地关注 Redis 和其他核心服务的正常运行时间和扩展,HotelTonight 依赖于云提供商,包括 Amazon Web Services 和来自 Redis 的托管,他说。

“这使我们不必拥有太多的内部专业知识,而是依靠这些技术领域的真正专家,例如 Redis 或我们使用的其他一些服务,”他说。

Bailey 说,而且,可以存储在 Redis 中的数据类型的灵活性使得构建自定义逻辑来跟踪和处理不同类型的操作失败变得容易,从快速安排重试到故障转移到替代提供商。

“真正好的是,从客户的角度来看,我们可以避免向他们提供错误消息,”他说。“客户没有错误; 他们得到了他们想要的。”

使用 Redis 还使得数据库更改更加轻松,因为工程师可以有效地调整存储在数据库中的内容,而无需重建正式指定的 SQL 表,这过去需要停机时间,他说。

“不要误会我的意思——在某些时候你会有模式,可以这么说,”他说。“更多的是关于它的官方定义程度。”