架构实战案例解析
王庆友
前1号店首席架构师
立即订阅
2156 人已学习
课程目录
已完结 22 讲
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 | 从务实的角度,给你架构设计的重点知识和学习路径
结束语 | 和你聊聊我的架构心路历程
架构实战案例解析
登录|注册

14 | 高可用架构案例(二):如何第一时间知道系统哪里有问题?

王庆友 2020-03-23
你好,我是王庆友。
在前面两讲中,我与你介绍了系统的高可用都有哪些设计原则和具体手段。其中我也特别提到,要想保证系统的高可用,我们还需要对系统进行全面有效的监控
监控是系统的眼睛,无监控,不运维。今天我们就从监控的角度来聊聊如何保证系统的高可用。
在开发软件时,我们经常强调一个业务功能的可测性,甚至有一种说法是测试驱动开发。在开发之前,我们会先设计测试用例,再去考虑如何实现功能。同样,当我们对系统作了很多加固,也是希望能保证它的稳定可用。
但我们怎么判断系统的各个节点当前是否正常呢?这个就对应了节点的可监控性,如果你事先想好了系统应该如何监控,如何判断每个节点是否正常,那你就会更清楚应该采取什么样的措施。很多时候,我们可以从监控的角度来倒推系统的可用性设计。

监控的分类

第 11 讲中,我和你介绍了系统的组成,它包括接入层、应用系统、中间件、基础设施这几个部分,那我们的监控也是针对这些部分来实施的。一般来说,监控可以分为 5 个层次,如下图所示:
从上到下,分别为用户体验监控、业务监控、应用监控、中间件监控、基础平台监控。
用户体验监控:指的是从前端用户的访问速度出发,来监测系统的可用性,包括页面能否打开、关键接口的响应时间等等,用户体验监控一般结合前端的埋点来实现。
业务监控:它是从业务结果的角度来看,比如说订单数、交易金额等等,业务监控也是最直观的,我们知道,如果业务数据没问题,系统整体也就没有问题。对于业务监控,我们一般是从数据库里定时拉取业务数据,然后以曲线的方式展示业务指标随着时间的变化过程。除了当前的曲线,一般还有同比和环比曲线。同比是和前一天的数据进行比较,环比是和一周前的数据进行比较,两方面结合起来,我们就能知道当前的业务指标有没有问题。
应用监控:指的是对自己开发的代码进行监控,比如接口在一段时间内的调用次数、响应时间、出错次数等等。更深入一点的应用监控还包含了调用链监控,我们知道,一个外部请求的处理过程包含了很多环节,比如说网关、应用、服务、缓存和数据库,我们可以通过调用链监控把这些环节串起来,当系统有问题时,我们可以一步步地排查。有很多 APM 工具可以实现调用链监控,如 CAT、SkyWalking 等等。
中间件监控:指的是对标准中间件进行监控,它是第三方开发的代码,比如数据库、缓存、Tomcat 等等,这些组件对应的是系统的 PaaS 层。这些中间件往往带有配套的监控系统,比如,RabbitMQ 就有自带的监控后台。
基础平台监控:指的是对系统底层资源进行监控,如操作系统、硬件设备等等,这个层次的监控对应的是系统的 IaaS 层。Zabbix 就是典型的基础设施监控工具,它可以监控 CPU、内存和磁盘的使用情况。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《架构实战案例解析》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • GEEKBANG_6638780 置顶
    你好,老师,问个问题。jdbc监控那块,是不是通过简单的表查询作用不是很大。就拿文中的列子来说,是因为慢查询导致的问题。假如我的数据库连接还没被慢查询占满,这个时候jdbc监控就不会有问题。如果想实现,慢查询监控,是不是要对mysql本身做更细致化的监控了,而不是等连接被打满以后才去解决问题。

    作者回复: 很好的问题,你看的很细。
    这里的监控不追求很精确,保证80-90%的问题能监控到就可以,这肯定比不上中间件专门的管理后台。以你说的为例,如果数据库有慢查询,通过连接数据库和读写简单表可能检测不出来,但使用数据的应用或服务节点会提示性能和功能问题,它们会被检测到。
    下一讲有针对这一点的说明。

    2020-03-23
    3
  • 每天晒白牙
    服务器节点的监控由公司运维平台监控,当cpu,内存使用过高都会发报警短信,带上ip信息,收到后可以登录服务器去排查,但业务报警主要通过 Prometheus 埋点实现的,有的时候流量抖动也会触发报警,因为业务流程比较长,业务相对复杂些,加上节点多,日志少,在高度紧张的情况下,排查问题还是挺难的

    我们也正在弄监控报警这一块,想把监控报警弄的智能一些,实现自己简单的分析系统,期待老师下一篇细节篇
    2020-03-23
    5
  • 一步
    现在应用监控的工具比如skywalking 是可以直接监控中间件或者数据库的,有的还能监控到基础设施
    2020-04-01
  • 孙同学
    https://www.processon.com/view/link/5e51378ce4b0c037b5f9d1e3 整理总结更新 我所在的项目只有业务监控和基础平台监控,感觉效果一般,往往是前场发现问题,才去监控系统看数据是否异常。遇到线上事故一般都是看日志,然后根据报错看代码,最怕代码还不熟悉,短时间理一遍复杂逻辑还是压力挺大
    2020-03-28
  • 约书亚
    确实如您所说,我们的监控就各有个的dashboard,零零散散不在一起,找问题时候很麻烦。而且很多没有一个明确的健康与否定义。现在监控相关的插件中间件非常非常多,引入系统还是相对简单的,我们要做的就是最后集成到一起。
    这次课非常有实际指导意义。
    2020-03-26
  • 夜空中最亮的星(华仔)
    期待老师的监控实例内容
    2020-03-25
  • 滕建兴
    老师问一下,这个是针对某个业务场景的整体化监控,但是一个系统很多场景,那不是要绘制很多这样的监控图

    作者回复: 前端一套代码就可以,下一讲会具体介绍

    2020-03-24
  • tt
    我们的监控难点在于,有很多服务是面向强势对公客户的,经常需要满足它们提出的所有要求,做好服务,不论是谁的问题,都是我们来解决。
    2020-03-23
  • Jeff.Smile
    之前公司做的比较简单,无非是针对重点业务做email或者短信告警,系统层面用zabbix但一般是事后观察。
    2020-03-23
收起评论
9
返回
顶部