架构实战案例解析
王庆友
前1号店首席架构师
立即订阅
2742 人已学习
课程目录
已完结 23 讲
0/4登录后,你可以任选4讲全文学习。
概述篇 (2讲)
开篇词 | 想吃透架构?你得看看真实、接地气的架构案例
免费
01 | 架构的本质:如何打造一个有序的系统?
业务架构篇 (9讲)
02 | 业务架构:作为开发,你真的了解业务吗?
03 | 可扩展架构:如何打造一个善变的柔性系统?
04 | 可扩展架构案例(一):电商平台架构是如何演变的?
05 | 可扩展架构案例(二):App服务端架构是如何升级的?
06 | 可扩展架构案例(三):你真的需要一个中台吗?
07 | 可复用架构:如何实现高层次的复用?
08 | 可复用架构案例(一):如何设计一个基础服务?
09 | 可复用架构案例(二):如何对现有系统做微服务改造?
10 | 可复用架构案例(三):中台是如何炼成的?
技术架构篇 (9讲)
11 | 技术架构:作为开发,你真的了解系统吗?
12 | 高可用架构:如何让你的系统不掉链子?
13 | 高可用架构案例(一):如何实现O2O平台日订单500万?
14 | 高可用架构案例(二):如何第一时间知道系统哪里有问题?
15 | 高可用架构案例(三):如何打造一体化的监控系统?
16 | 高性能和可伸缩架构:业务增长,能不能加台机器就搞定?
17 | 高性能架构案例:如何设计一个秒杀系统?
18 | 可伸缩架构案例:数据太多,如何无限扩展你的数据库?
19 | 综合案例:电商平台技术架构是如何演变的?
总结篇 (2讲)
20 | 从务实的角度,给你架构设计的重点知识和学习路径
结束语 | 和你聊聊我的架构心路历程
结课测试 (1讲)
结课测试 | “架构实战案例解析”100分试卷等你来挑战!
架构实战案例解析
15
15
1.0x
00:00/00:00
登录|注册

15 | 高可用架构案例(三):如何打造一体化的监控系统?

王庆友 2020-03-25
你好,我是王庆友。
上一讲,我与你介绍了整体化监控系统的设计方案,今天我就带你深入它的内部设计,让你可以了解它具体是如何落地的。
这个监控系统主要分为 4 大部分:节点信息采集、节点接入、数据上报和前端展示。下面,我就来为你具体展开介绍。

节点信息采集

在上一讲中,我提到过,Agent 负责采集节点的健康数据,每隔 3s,主动访问一次;然后,Agent 会根据这些数据,结合相应的规则,来判断节点的健康状态。最终的健康状态有三种,分别是错误、警告和正常,这三种状态也对应了 Dashboard 中节点的红黄绿三种颜色。
节点分为 4 类:Web 应用、Redis、MQ 和数据库。下面我就来具体讲一下,系统是如何对它们进行监控的。
对于 Redis 节点,Agent 通过 Jredis API,尝试连接 Redis 实例并进行简单的读写。如果这个操作没有问题,就表明 Redis 当前的健康状态是正常的,否则就是错误的。
对于 MQ 节点,Agent 是通过 MQ API,来检测 MQ 节点是否有活跃的消费者在连接,同时检测队列积压的消息数量。如果没有活跃的消费者,或者未消费的消息超过了预设的值,就表明当前的 MQ 节点的健康状态是错误的,否则它就是正常的。
对于数据库节点,Agent 是通过 JDBC 去连接数据库,并对表进行简单的读写。如果操作成功,表明数据库的健康状态是正常的,否则就是错误的。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《架构实战案例解析》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(19)

  • 正在减肥的胖籽。
    老师您好。有参考的代码吗?我主要的困境是代码如何落地。
    2020-03-25
    5
  • Geek_kevin
    请教老师,那个页面的动态布局设计,避免了前端的定制化,这里有没有再具体一点的信息可供参考的?

    作者回复: 这个说起来有点话长,你可以参考下HTML的table语法。在table里的每个cell单元,它的rowspan表明跨多少行,colspan表明跨多少列。

    每个cell里放一个应用,包括它的各个app节点,redis节点,db节点等。
    如果两个应用是并列关系,我们把它放同一水平位置(或者说同一行),如果是上下游调用关系,把应用上下放置。
    这里,布局在后台指定,前端负责统一解释布局,并按照cell的定义,把应用放在table里的相应位置。

    如果你想落类似的监控系统,前端一开始可以定制化。

    2020-03-30
    1
    1
  • 夜空中最亮的星(华仔)
    这个是自己开发的?有开源软件的参考吗?

    作者回复: 自己开发

    2020-03-25
    1
  • Geek_fd81b3
    有个疑问请教一下哈:一整个链路下来,某个服务往外提供的接口肯定会有很多,那我根据这个服务的哪个接口来判断我这个服务是否正常呢?举个例子,订单服务可能提供了下单接口,按用户查订单接口,按id查订单接口,订单修改接口等等……老师上边提到提供一个接口,返回这个服务的健康状态,那是否我这个接口里要去通过大量的逻辑,来判断我这个服务是否正常呢?

    作者回复: 这是个好问题,一般是在你认为重要的接口里埋点,比如选择10个重要接口,每个接口是单独评估它的性能和出错情况,根据单个接口给出监控状况,然后服务的健康状况是根据最差的接口得出,比如A接口是警告,B接口是错误,那么服务的健康状况就是错误状态。

    2020-05-28
  • 丁丁历险记
    两个挑战,技术栈选择,与如何吃掉需求。
    2020-05-04
  • 丁丁历险记
    前端至少用个bootstrap 美化一点吧,用yablw 太粗糙了。
    2020-05-04
  • Robin康F
    模块边界划分不清晰,技术栈不能完整保证幂等性
    2020-04-30
  • Geek_c19d96
    老师您好,想问下这个系统服务间的依赖关系是通过手动维护的还是通过中间件的数据自动绘制的呢?

    作者回复: 子系统的上下游依赖关系事先就知道,通过布局来体现关系,布局是手工定的

    2020-04-10
  • jun
    有效的监控可以及时发现问题并解决,不过目前很多公司对监控这块并不是很重视,而且考虑人员时间成本,可能根本就不会去认真的做监控这块的东西,后续市面上应该会有专业的监控商业软件来满足这块的需求;
    2020-04-10
  • 雨霖铃声声慢
    架构设计中最大的挑战是如何控制好平衡性,既不过度设计又能满足将来扩展的需求,这个度很难把控。
    2020-04-05
  • Minasix
    以前总是很局限的看项目,业务功能为主,看了老师的课程,发现架构整体层面和监控如此重要,学到了,感谢
    2020-03-29
  • 孙同学
    https://www.processon.com/view/link/5e51378ce4b0c037b5f9d1e3 整理学习更新 感觉架构设计要对整体把握性很强,设计缩放自如,发现自己道行很浅,需要加油补充各方面知识呀
    2020-03-28
  • 蓝天
    1,最大的挑战是过度设计,总觉得流量要大到不行,其实并没有
    2,我们还在使用rmi调用,虽然性能够用,但扩展性差,个人感觉不适合微服务治理等,但在公司使用较长,有些根深蒂固的,架构师们也不推,不知道是否我的看法不对,老师有啥好的建议呢?

    作者回复: rmi确实有点老,netty,dubbo,spring cloud都可以试试,找1-2个非核心系统试试,感觉早晚要升级

    2020-03-26
  • starj
    感觉这个系统很复杂啊,对于我们人员缺少的小公司很难花时间去实现
    2020-03-25
  • Better me
    老师这里对应用的监控是通过agent每3s请求接口得到相关信息,然后取最差接口,这里是否会影响到接口的性能,应该如何平衡

    作者回复: 性能不会有问题,3秒调用一次,每次耗时不到1ms

    2020-03-25
  • Alex
    监控系统有两条线一条是预警一条是排障。预警就是针对关键指标设阀值主动提醒。排障以业务异常为主线,实现统一日志,纵通过以traceid 看调用链信息,横向看错误时间点附近资源是否异常。我原来按这个思路做的监控。
    2020-03-25
  • Jxin
    感觉这个监控应该要包含全链路监控的职能。这样子全链路监控除了定时采样外,还能记录 上述监控异常场景时的调用链路信息。便于定位问题。
    2020-03-25
  • tt
    我觉得难点就在于这一句话“用 20% 的成本,实现了 80% 的效果”。

    最近设计的一个系统,目标就是满足业务用最小的代价能最快速地上线新的业务,这样,即使错了,也没有什么损失。

    运行了一阵,觉得产品是可以自己生长的,设计之初不用过度设计,让业务去快速使用,然后再来调整系统的设计,帮它更好地生长。
    2020-03-25
  • 老姜
    利用现有的监控的API可以实现吗?不是开源的开发成本不小,还有集成的成本。
    2020-03-25
收起评论
19
返回
顶部