前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >应用监控系列之谁开发谁运行谁监控

应用监控系列之谁开发谁运行谁监控

作者头像
用户4361942
发布2019-05-24 17:02:14
8840
发布2019-05-24 17:02:14
举报
文章被收录于专栏:java程序员思维java程序员思维

目录

1、谁开发

2、谁运行

3、谁监控

4、监控图片示例展示

1、谁开发

开发很好理解,程序员的主要本质工作,通过代码的方式去实现业务需求。开发过程中也是很有讲究的,选用什么语言,java、python、还是go,需要根据实际的情况,选择一个最适合的。比如一个团队5个人,只有1个人会使用go,5个人都会java,如果go和java都能实现业务需求,这时候使用java开发会是一个比较好的选择,因为使用go,维护成本会比较高,需要其他成员去学习相关语言。

语言确定好之后,需要对业务分析和设计,又可以分为数据驱动设计和领域驱动设计,数据驱动设计是指,根据具体的功能,第一想到的是如何设计表结构,要存哪些数据,有哪些model类,每个model类中有很多的set、get方法,大多数程序员采用的是数据驱动的设计方式。另外一种领域驱动设计,需要划分领域,确定限界上下文、以及他们之间的关系,确定哪些是聚合根、哪些是值对象等等,也就是所谓的战略和战术的设计。

设计好之后,下一个步骤就是开发阶段了,开发阶段也面临着不同的选择,如何存储数据,mysql、redis、mongo等等。mysql一般适合存储结构性相对稳定的数据,redis适合那些经常被访问又不经常变化的数据,因为数据存放内存中,读取速度快,有助于性能的提升。mongo适合数据结构复杂,如商品属性,每个商品的属性个数是不一样的。写代码过程中,可能还需要使用一些设计模式,提高代码的复用性、扩展性。同时需要遵循一些原则,如开闭原则、单一职责原则等。代码编写过程中也需要遵循一些代码规范,包名小写,变量名使用名词,方法名使用动词等等,推荐使用阿里的一个代码规范插件。如果不符合规范会给出响应的提示,点击更多还给出了相应的示例。

开发过程中,经常涉及一个博弈的过程,一方面是项目进度,一方面是代码质量。以前我觉得项目进度的重要程度高于代码质量,随着时间的推移,系统越来越复杂,代码质量的问题越来越明显,可以通过代码review来改善这个问题,代码review有以下好处。杜绝不好的代码,将好的代码“发扬光大”,提高团队的整体水平,改善代码水平参差不齐的情况,最重要的是降低维护成本。当然也有不好的地方,code review比较耗时,但我相信磨刀不误砍柴工。

以上只是开发的一小部分,还有很多需要注意的地方,需要合理的做出取舍。

2、谁运行

大部分公司都有运维,开发人员开发完程序之后,就通过邮件或者钉钉等其他方式,通知运维,需要部署哪个应用服务,开发人员不需要关心发布部署的具体细节。其实作为开发人员有必要了解一下运维部署相关的工作,应用程序如何部署,是通过tomcat还是jar的方式启动,如果使用tomcat启动,如何设置参数。这些都是手动部署的方式,还有一些自动化的部署方式,通过jenkins + 脚本,jenkins提供了很多很棒的功能,比如jenkins可以配合git,只要有代码有push,通过webhook自动触发jenkins的部署。

kubenets和docker部署,让应用部署更便捷,但是相对来说比较复杂,需要安装相应的环境,还需要编写对应的docker file,门槛相对比较高。但这个肯定是趋势,随着技术的进步,不断的完善,以后可能会越来越简单,就像人工智能一样,现在也越来越多的机器学习相关的框架,对算法内部实现进行了封装,使用算法,就像方法调用一样简单,降低了门槛。

3、谁监控

程序开发完、部署好之后,还需要对应用进行监控,很大部分程序员会觉得监控是运维的工作,开发人员不需要关心监控。其实开发、部署只是开始,监控是至关重要的部分,监控能帮助我们发现问题,定位问题,改善问题。

监控的内容,主要分为机器的监控,调用链监控、jvm的监控、业务指标的监控。机器监控主要包括cpu、内存、磁盘等。调用链监控,在微服务的时代,调用链监控是非常重要的,通过分析调用链可以知道服务之间的调用关系,方便定位是否存在互相调用,或者调用不合理的情况,一般原则是下游依赖上游的接口,上游不能直接调用下游的方法。调用链还有一个最大的好处是能分析每个接口方法,调用了哪些方法,每个方法消耗了多长时间,方便对接口进行优化。接口优化的原则最好找那些经常调用,并且调用时间比较长的方法进行优化,这样的性价比最高。性能优化是一个长期的过程,不断的优化,给用户更好的体验。

jvm监控,主要监控应用程序,堆栈、垃圾回收等情况,一个应用程序如果经常发生gc,因为“stop the world”导致性能的损耗,遇到这种情况需要排查定位问题,确定是YGC还是FGC,调整jvm参数,改善虚拟机的垃圾回收垃圾回收,提高应用的性能。

业务指标的监控,比如说接口请求次数,pv、uv等业务相关指标,可以通过相应的埋码,通过一些时间序列工具,如prometheus,进行收集和处理。关于prometheus的使用后续文章会做相应的讲解,这里先不做展开。

4、监控图片示例展示

jvm监控图片

调用链监控图

接口调用统计图

spring boot监控图

jvm统计图

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java程序员思维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档