Java 业务开发常见错误 100 例
朱晔
贝壳金服资深架构师
52944 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
代码篇 (23讲)
Java 业务开发常见错误 100 例
15
15
1.0x
00:00/00:00
登录|注册

24 | 业务代码写完,就意味着生产就绪了?

绘制各种趋势图表
对关键信息做定期统计
暴露重要组件信息,如线程池、内存队列
需要提供专有的监控检测接口
传统的ping方式不准确
应用投产前的生产就绪工作
在Grafana中配置应用监控面板
自定义端点的区别和开发方法
Spring Boot Actuator提供了大量内置端点
完善的监控体系三者缺一不可
追踪通过全链路追踪实现
完善的监控体系包括日志Logging、指标Metrics和追踪Tracing
使用Grafana配置监控面板
配置指标输出到InfluxDB
包括gauge、counter、timer等类型的指标
使用Micrometer框架实现指标的收集
通过HTTP端点和JMX MBean方式查看状态数据
使用InfoContributor功能
可以监控数据库、InfluxDB、Elasticsearch、Redis、RabbitMQ等三方系统的健康状态
通过自动配置生效
Spring Boot Actuator预先实现了健康检测指示器HealthIndicator
需要引入并配置
封装了生产就绪的功能
Spring Boot Actuator模块
建立应用指标Metrics监控
暴露应用内部信息
提供健康检测接口
需要额外做一些工作
应用开发完成要投入生产环境
思考与讨论
重点回顾
指标Metrics是快速定位问题的“金钥匙”
对外暴露应用内部重要组件的状态
健康检测需要触达关键组件
准备工作:配置Spring Boot Actuator
生产就绪需要做的工作
生产就绪(Production-ready)
Java业务代码写完,就意味着生产就绪了?

该思维导图由 AI 生成,仅供参考

你好,我是朱晔。今天,我们来聊聊业务代码写完,是不是就意味着生产就绪,可以直接投产了。
所谓生产就绪(Production-ready),是指应用开发完成要投入生产环境,开发层面需要额外做的一些工作。在我看来,如果应用只是开发完成了功能代码,然后就直接投产,那意味着应用其实在裸奔。在这种情况下,遇到问题因为缺乏有效的监控导致无法排查定位问题,同时很可能遇到问题我们自己都不知道,需要依靠用户反馈才知道应用出了问题。
那么,生产就绪需要做哪些工作呢?我认为,以下三方面的工作最重要。
第一,提供健康检测接口。传统采用 ping 的方式对应用进行探活检测并不准确。有的时候,应用的关键内部或外部依赖已经离线,导致其根本无法正常工作,但其对外的 Web 端口或管理端口是可以 ping 通的。我们应该提供一个专有的监控检测接口,并尽可能触达一些内部组件。
第二,暴露应用内部信息应用内部诸如线程池、内存队列等组件,往往在应用内部扮演了重要的角色,如果应用或应用框架可以对外暴露这些重要信息,并加以监控,那么就有可能在诸如 OOM 等重大问题暴露之前发现蛛丝马迹,避免出现更大的问题。
第三,建立应用指标 Metrics 监控。Metrics 可以翻译为度量或者指标,指的是对于一些关键信息以可聚合的、数值的形式做定期统计,并绘制出各种趋势图表。这里的指标监控,包括两个方面:一是,应用内部重要组件的指标监控,比如 JVM 的一些指标、接口的 QPS 等;二是,应用的业务数据的监控,比如电商订单量、游戏在线人数等。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Spring Boot Actuator是一个强大的模块,可以帮助Java开发者快速实现生产就绪的工作。本文介绍了如何配置Actuator来实现健康检测、应用内部信息和Metrics指标等功能。通过添加依赖和配置管理端口、端点暴露等,读者可以轻松实现这些功能。文章通过实际案例演示了如何配置Actuator,为读者提供了快速了解和实践的指导。此外,还介绍了如何通过自定义HealthContributor和CompositeHealthContributor,实现监控检测触达程序内部诸如三方服务、线程池等关键组件。另外,通过Micrometer框架实现了指标的收集,以及将指标数据保存到InfluxDB。最后,通过Grafana配置了监控面板,展示了下单和配送操作的次数和性能。整体而言,本文为读者提供了实用的技术指导,帮助他们快速了解并实践Spring Boot Actuator的配置和使用。 文章重点介绍了Spring Boot Actuator的配置和使用,包括健康检测、应用内部信息和Metrics指标等功能。通过添加依赖和配置管理端口、端点暴露等,读者可以轻松实现这些功能。此外,还介绍了如何通过自定义HealthContributor和CompositeHealthContributor,实现监控检测触达程序内部诸如三方服务、线程池等关键组件。另外,通过Micrometer框架实现了指标的收集,以及将指标数据保存到InfluxDB。最后,通过Grafana配置了监控面板,展示了下单和配送操作的次数和性能。整体而言,本文为读者提供了实用的技术指导,帮助他们快速了解并实践Spring Boot Actuator的配置和使用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Java 业务开发常见错误 100 例》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • winner_0715
    我是贝壳找房的,所以看到老师的课程感觉很亲切,有个问题就是,在向第三方提供接口的时候,是提供RPC(如Dubbo),还是HTTP呢,需要考虑哪些因素呢

    作者回复: 一般给三方接口都是通用协议 http更好,内部使用追求极致性能才考虑rpc over tcp

    2020-05-10
    4
    16
  • Darren
    第一个问题: 端点与@RestController: @Endpoint相当于@WebEndpoint和@JmxEndpoint的整合。web和jmx方式都支持 @WebEndpoint 就相当于声明成一个@RestController的控制类 请求方法分别被下面注解代替: @ReadOperation等同于GET @WriteOperation等同于 POST @DeleteOperation等同于DELETE 第二个问题就不回答了,Prometheus+Grafana暂时还未入门

    作者回复: 不错

    2020-05-11
    8
  • 终结者999号
    另外请问老师,下单的metric现在是同步到InfluxDb的,应该也可以同步到Prometheus吧

    作者回复: 完全可以,我们因为比较喜欢推而不是拉选择了InfluxDb,这2个产品都不错

    2020-05-17
    6
  • hellojd
    投产前也要容量评估,做好流量确认,加上限流模块。

    作者回复: 是

    2020-05-09
    6
  • 终结者999号
    我是作为一个央企关键部门的开发人员,对老师的这节课程感觉受益匪浅,每次出现问题都是客户报给我们故障,我们的zabbix不能完成metric的工作,所以也想引入Prometheus.

    作者回复: 可以的

    2020-05-17
    2
    4
  • 君子意如何
    老师这节课非常接地气!监控系统也会占用部分系统资源,比如我们的客户觉得自己很懂软件,给我们指定了硬件配置,跑正常的业务系统都捉襟见肘,加监控后性能有明显的下降,真是痛苦。

    作者回复: 在目前硬件这么便宜的情况下(相比人力),降低硬件配置带来潜在的系统不稳定和性能下降不太值得。。。

    2021-01-27
    3
  • 老师,指标收集的代码一般放在哪一层比较合适?

    作者回复: 框架收集一部分应用的基本信息,业务监控需要业务代码里埋点

    2020-09-08
    2
  • Michael
    老师,你好! OrderController 中的业务代码中涉及大量的指标注入代码会不会侵入性太强了,若是需要监控的业务指标很多,代码中涉及大量的这种Metrics.timer("deliverOrder.success").record(Duration.between(begin, Instant.now()));采集代码,觉得有点不太好,还有其他的方法嘛?

    作者回复: 这些是有业务属性的埋点,只能写代码(或者就是通过大数据从数据库层面来做业务监控) 或者可以默认把所有Controller和Service方法的执行全部自定埋点,然后用这个来配置业务监控,缺点是粒度会比较细,埋点数据量会很大

    2020-06-24
    2
    2
  • 程序员小跃
    我的天,这篇对于刚入后端不久的我来说,简直了,打开新世界的大门一样。

    作者回复: 哈哈

    2020-10-24
    1
  • Seven.Lin澤耿
    终于越来越明白Spring Cloud为啥叫Cloud了,强大
    2020-05-12
    1
    6
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部