张天星 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日

悬赏问题

  • ¥20 unity实习让我做一个程序
  • ¥15 idea tomcat和sql驱动不匹配吗
  • ¥15 如何查看h3c 5130s-28f-si交换机配置 及更改网口
  • ¥15 HFSS仿真喇叭天线阵列方向图出现异常
  • ¥15 blender自发光强度
  • ¥15 FIR滤波器算法设计与实现(利用库函数firdec()
  • ¥15 利用单片机产生正弦信号,来测量差分放大电路放大倍数和共模放大倍数的思路和仿真
  • ¥60 关于mavlink的论文咨询
  • ¥66 定制开发肯德基自动化网站下单软件
  • ¥15 中科院研发的TextMind(文心)