张天星 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 eclipse无法正常运行
    • ¥15 定义了函数,但是无法根据函数定义触发器
    • ¥20 5变量卡诺图化简得出与非门电路图
    • ¥20 位置依赖的碱基序列独热编码
    • ¥15 Python爬取交通拥堵指数数据
    • ¥15 使用vba抓取重定向网页问题
    • ¥20 付费需求测试程序(细谈)。
    • ¥15 为什么这段c++代码会报这么多语法错误?
    • ¥20 如何利用C语言实现用最小二乘法选配两个经验公式
    • ¥50 vue-codemirror如何对指定行 指定位置的 字符进行背景颜色或者字体颜色的修改?