张天星 2023-01-13 17:30 采纳率: 0%
浏览 18

如何评估不同中间件不同的操作,对性能的影响?

其实主要想问的是,我们应该去怎么评估一个业务,选择不同的实现对性能的影响?

两种选择甚至可能对实现的方式都完全不同,那么性能应该如何评估呢?

……

今天主要是遇到了一个问题,我要写一个系统日志监控预警的服务。

首先,有一个日志预警配置,里面针对不同的应用(不同Web、不同控制台等,都算一个应用),有一个预警配置,比如2分钟内30个Error通知手机,1个Fatal通知手机这样的。

1、最开始想的是,写一个Serilog.Sinks.SysMonitor 服务,每个应用启动的时候,都通过这个服务,额外将Error以上级别的日志推送到MQ队列中。

然后另起一个消费控制台,将这些日志全部消费下来,然后根据不同的应用配置,去判断是否触发预警,问题就是,所有的Error日志,都需要从RabbitMQ走一圈。

2、但后来,还有了另一个想法,就是将日志预警配置直接获取下来,然后多线程启动应用,每个应用间隔60秒,去查询一次Elasticsearch,查询最近2分钟内的Error和Fatal的数量,来判断是否触发预警。

……

我最后决定使用1的想法,因为感觉Error数量不会太多,通知也会更及时一点,感觉会比较好。(但这也是个拍脑袋的想法)

但我又衍生想到,两种想法之间,对系统性能的影响是多少呢?怎么评估他们之间哪个方案更优?

或者其他类似的情况,我们要怎么去评估业务设计最后的性能?应该怎么做?

他们不是RabbitMQ与Kafka这样同类中间件的比较,而是完全不同的两种设计逻辑,互相间应该怎么评估?

能提供一个思路就好。

  • 写回答

1条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2023-01-13 17:37
    关注

    需要这么复杂吗,你日志监控服务应该是个独立单体服务,可以监控很多系统,结合定时任务,配置好每个应用的访问接口(健康地址)。然后就是定时去访问接口了,每访问一次记录下来log。比如访问成功 code 返回200,访问超时,你就返回500之类的。然后根据log来告警。条件你可以自己设置。如果你监测服务多,搞个线程池就足以。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月13日

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配