为什么工作三年的程序员还不懂APM与调用链技术?
服务调用链技术
服务调用链技术是微服务架构中对服务进行监控的重要环节,它可以帮助我们清晰地了解当前系统的运行情况,同时帮助我们定位问题,解决分布式网络下服务交互追踪的问题。
APM与调用链技术
在单体应用架构拆分为微服务架构后,一个用户请求会跨网络依次调用不同的服务节点进行分布式交互处理,最后将结果汇总处理,再将结果返回给用户。那么在整个处理的链条中,如果有任何一个节点出现了延迟或者超时等问题,都有可能导致最终结果出现异常。在很多场景下,一个功能可能需要多个技术团队、多种技术栈、多个跨地域网络中的不同服务协调完成。我们想要排查出链条中具体哪个服务节点出了问题,其实并不容易。所以微服务架构的一大挑战就是分布式网络交互带来的固有复杂性。
谈到分布式网络环境下的应用交互,就不得不提到分布式计算的八大误区,这些误区无疑都与我们对应用构架所在的基础设施——网络认识不足有关。下面我们将这些误区从应用使用网络的视角,按照正确的理解总结如下:
网络是不可靠的,我们的应用可以随时发现网络的异常,并适应网络的不可靠。
网络存在延迟,应用系统需要通过网络监控工具了解网络状况,避免系统的异常行为。
带宽是有限的,应用的传输数据在逐渐增大,尽管应用系统无法控制生产环境下的网络带宽,但是我们需要模拟网络,监控并控制应用数据的传输上限。
网络是不安全的,应用需要在早期就将安全因素考虑到设计方案中。
网络的拓扑是变化的,网络设备(例如DNS)、存储资源的迁移都需要在应用架构层面尽量做到对用户无感知。
系统存在多个管理员,应用需要向不同管理员提供可视化的应用管理界面,并帮助他们去管理应用。
数据传输是需要成本的,应用在网络上传播,无论如何都会耗费额外资源。数据序列化会耗费计算资源、网络传输上的延迟,这些都是数据传输的成本,都要求应用使用更加经济高效的解决方案。
网络是异构的,应用之间可能采用不同的网络协议,应用集成交互时最好采用通用协议。
总结来看,这些问题都是分布式网络下的陷阱。在微服务架构下,由于服务之间的交互对网络有如此强的依赖,我们需要时刻了解请求耗时、网络延迟、业务吞吐、系统运行等情况,所以,我们需要一个系统来分析当前系统的瓶颈,解决系统问题。而一套APM系统和调用链技术就可以帮助我们了解当前应用的状态。
APM与调用链的概念
APM是一种应用性能管理/监控技术架构,用以将应用运行过程中的函数调用、网络调用等时间和性能进行指标化及可视化展现。
而调用链技术可以说是APM应用性能管理的子集。通过跟踪一次业务调用请求,记录业务在进程内部及进程之间的调用关系(调用信息包括时间、接口、结果)到日志中,然后根据日志信息进行分析处理,掌握分布式网络环境下请求的全链路跟踪还原及展示的技术。调用链技术综合了数据埋点、采集、数据聚合、数据展示等多项技术,可以根据不同层次和维护的分析,标识出服务调用异常,快速定位问题,从微观层面监控系统的运行状态,是一种细粒度的服务监控模式。
调用链技术的作用
快速定位问题:业务全链路监控就是要从业务的视角出发,监控整个业务流程的健康状况,无须多个系统切换,直观看到全局和上下游,方便快速发现、定位问题。这个作用前面一直在讲,在微服务架构下,问题定位就变得非常复杂了,一个请求可能会经过多个服务节点,使用调用链技术能让开发人员快速地定位到问题和问题所在的相应模块。
拓扑关系:当微服务拆分后,服务之间的调用关系也随之变得复杂,而调用链技术可以帮助我们准确地掌握服务之间的调用关系,并清晰地表现为网络拓扑图。
优化系统:优化系统也是调用链技术很重要的一个功能。因为我们记录了请求在调用链上每一个环节的信息,就可以通过这个来找出系统的瓶颈,做出针对性的优化。还可以分析调用链是否合理,是否调用了不必要的服务节点,是否有更近、响应更快的服务节点。通过对调用链的分析,我们就可以找出最优的调用路径,从而提高系统的性能。
本文给大家讲解的内容是服务监控治理,服务调用链技术,APM与调用链技术
- 下篇文章给大家讲解的内容是服务监控治理,服务调用链技术,Dapper与分布式跟踪原理
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持!
为什么工作三年的程序员还不懂APM与调用链技术?相关推荐
- 毕业两年,工作三年Java程序员的一点点体会与建议
一.步入职业生涯从捡芝麻开始 都说现在找工作难,我认为,是真的难.钱多活少离家近,大部分人的梦想,这样的工作确实很难找. 我于2016年来到上海,那时我还没毕业,只不过因为觉得学校的生活足够的无聊与迷 ...
- 面试感悟----一名3年工作经验的程序员应该具备的技能,对于一些入门或者还在面试阶段的人有着很大的启发...
前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Ja ...
- 裸辞三个月后,哭诉亲身经历,建议还想换工作的Java程序员不要辞职
本文转载自:裸辞三个月后,哭诉亲身经历,建议还想换工作的Java程序员不要辞职 有位朋友私信我: 我从事Java工作,今年受了很大的影响,我们公司采取了节源措施,给在岗的每位员工只发底薪.底薪太少了, ...
- 身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图!
身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图! 一,UML类图示例图 二,UML类图图例 三,分步解析说明 3.1 类图: 3.2 接口: 3.3 实现继承 3.4 实现接口: 3. ...
- 面试感悟-------一名3年工作经验的程序员应该具备的技能
转载: 面试感悟-------一名3年工作经验的程序员应该具备的技能 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当 ...
- 面试感悟—-一名3年工作经验的程序员应该具备的技能
文章来自:五月的仓颉 五月的仓颉 是一位非常优秀,乐于分享的大神,目前就职阿里 原文链接:https://www.cnblogs.com/xrq730/p/5260294.html 前言 因为和同事有 ...
- 一名3年工作经验的程序员应该具备的技能
本文转自:https://m.imooc.com/article/details?article_id=7557 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这 ...
- 一名3年工作经验的程序员应该具备的技能 !
前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Ja ...
- 有学历的程序员永远不懂没学历的痛,就像白天不懂夜的黑
大神可能看标题都不屑一看,我确实没有学历,也经受了没有学历的痛,但我不是来发牢骚牢骚的,只是阐述这样一种事实的存在:以及原因.影响.解决与对待. 做为一个程序员,你有没有经历学历之痛? 有学历的程序员 ...
最新文章
- 展望未来:使用 PostCSS 和 cssnext 书写 CSS
- 33:把数组排成最小的数
- Google IO 谈 AI First,我们却发现了更多
- 对我影响最大的三个老师
- RHEL/CentOS/Fedora各种源
- Apache 2.0性能优化—MPM的选择与配置
- CAP带你轻松玩转ASP.NETCore消息队列
- python网络爬虫_python小知识,基于Python 的网络爬虫技术分析
- Docker 第四章 访问容器
- asp.net用户注销或者关闭网页时清除用户Cookie
- infobright与mysql_infobright与mysql常规引擎使用对比
- matlab动态电路仿真,matlab电路仿真教程
- 快速修改Windows系统字体样式
- linux rman备份与恢复,RMAN备份与恢复 —— 完全恢复与不完全恢复
- ZZULIOJ 1030~1039(oj入门题)
- 人工智能AI伪原创一键生成文章
- android桌面 vulkan,Vulkan 设计指南
- 大鱼吃小鱼小游戏(Java版代码,JavaSwing+多线程+接口)
- 4/17 腾讯广州微信客户端开发一面
- 微软的现实困难:产品需要再次变“酷”