Web Service Architecture:Redis(作为缓存)和PostgreSQL for persistence



我正在开发一个Java REST API,它使用来自postgreSQL数据库的客户端数据。

数字:. 一开始大概有600个客户. 其中一些每隔几秒就做一次请求

因为客户端按请求付费,我们需要控制他们的成功请求数量是否达到限制,并且在每次请求后查询postgresql数据(更新'hitsCounter'字段的值)在性能方面是不好的,我们正在考虑实现一个缓存系统与redis。

: 在客户端完成第一个请求后,我们从postgresql中检索他的数据并将其存储到redis缓存中。然后处理这个缓存数据,例如增加'hitsCounter'键值,直到客户端停止做请求。在并行的情况下,每隔几分钟就有一个后台进程将redis缓存中的数据持久化到db表中,所以最后我们将更新的数据返回到postgresql,我们可以在将来处理它们。

我认为它明显提高了性能,但我不确定这个"后台进程"。一个选项是检查缓存元素的TTL,如果它小于某个值(这意味着客户端已经完成了请求),则保留数据。

我很想听听你对这个问题的看法。这是个好主意吗?你知道更好的选择吗?

完全合理的想法,但是您没有提到您所做的任何测量。在您的目标事务级别中,您的目标硬件中的瓶颈是什么?不知道,你不能说。

您也许可以使用未记录的表。只需在每个查询中插入一行,然后每5分钟总结一次,清除旧数据。然后,对于HOT更新,假设75%的填充因子可能更新更有效。我不知道(你也不知道),我们还没有测量过。

不够吗?把它放在ssd上自己的表空间

不够吗?把它放在自己的vm/机器上。

不够吗?只要把这些该死的东西写进每个前端盒子上的平面文件里,然后每分钟批处理一次数据到数据库里。

还有-他们每次查询支付多少钱?您是否关心电源故障并丢失五秒钟的查询日志?您是否需要能够复制每个查询的收据,并提供原始详细信息和时间戳?

最新更新