像许多现代应用程序一样,作为当前应用程序的一部分,我有几个动人之处:
要正确管理我的应用程序,我想跟踪各种与应用程序相关的任意指标,例如:
我很难为此提出一个逻辑模型,然后再提出一个实际的实现。我正在努力的一些事情:
我的一部分感觉这是一个已解决的问题,应该采用或重用某种体系结构或模式。
我故意问这个问题,而没有提及我的应用程序正在使用的特定技术,因为我的直觉告诉我这对模式并不重要。
有想法吗?
答案 0 :(得分:1)
以下是每个问题的指针
这些计算如何进行?通过相同的过程 我正在测量的东西?通过单独的过程?
绝对不是通过相同的过程。原因是,如果将这些计算绑定到不完全用于此目的的任何进程,则会导致整个服务的逻辑分散,最终将变得难以维护。有一个集中的地方可以执行所有计算。让您的每个架构通过某种不可知的传输(例如REST)(或者,如果您每秒有数百个,例如您提到的消息队列,则更快)来发送其有效负载。
这些计算何时进行?当然,计算不应该 与应用程序流程保持同步。
这取决于您的用例。如果您不需要实时执行所有计算,则可以有一个静态组件来接收来自其他参与者的所有传入数据流,然后将其临时存储(稍后再介绍),以及另一个遍历所有组件的组件。新获取的数据(或全部数据)以进行计算。后者可以由诸如Celery之类的库调度,也可以使用标准的cron作业。
如何存储这些计算的结果?有没有 数据库架构可以存储这样的指标吗?
标准SQL几乎可以用于任何实现。现在,如果您的指标主要是带有时间戳或时序数据,则可以看看Time Series Databases (TSDB)。