作为数据分析师的您如何跟踪微服务?
来源:CPDA数据分析师网 / 作者:数据君 / 时间:2021-05-11
跟踪微服务是一项艰巨的任务
但并非不可克服,让我们看一下全面的技术,以全面了解您的微服务,微服务带来的新挑战,在微服务架构中,需要跟踪一些新的指标和行为,让我们从查看整体应用程序开始,并查看一些可操作的指标,整体应用程序通常是单个实例(或多个相同的实例),这意味着我们可以将整个“系统”视为包装在该框中,仅遵循一组RAM,CPU和磁盘空间指标。当我们转向微服务架构时,必须同时跟踪许多框。
但是也有一些新的行为
微服务架构的一个共同特征是单个动作可以跨越多个服务,例如,网站上的“付款”按钮可能首先需要授权,然后是审核,然后是库存管理,是付款,微服务哲学主张将这些责任分解为自己的服务,现在,我们不仅要查看实例的运行状况,还需要查看部署的实际运行行为。这意味着在请求遍历各种实例时跟踪它们。这项新技术称为跟踪。
事情会变得有些混乱
引发可观察性挑战的另一个新概念是现代软件系统中的新功能-混乱,混乱描述了系统中定期消失,断开连接或暂时性故障或组件,同样在整体式架构中并未对此进行深入探讨,因为更改很少发生,微服务方法的强大功能之一是能够进行许多并行更改,而这些更改不会相互干扰,一次发生如此多的事情,混乱就成为任何系统的自然属性,如此之多,就产生了一个适当命名的工程实践-混沌工程-鼓励工程师定期将故障注入他们的软件系统。
混乱的服务有些难以监控
如果它消失30秒钟,则该节点是否消失了,或者该进程只是简单地死掉并且在重新启动过程中?网络链接是否已断开?您的可观察性堆栈需要能够对此进行跟踪,那么,您从哪里开始呢?控制微服务的步是数据的表面化和聚合,您需要一种机制来自动开始从系统中捕获指标,而不是抓取单个节点,即使新节点出现或消失也是如此。
标准化实例的创建
首先,您需要创建一个标准的过程,通过该过程可以创建新的虚拟机,一个简单的选择是创建一个机器映像,并将其作为实例的基础,在此计算机映像中,您可以安装日志记录和指标代理,以显示跟踪微服务所需的重要测量,一个更复杂的选项是实施一个平台,在该平台上可以部署所有软件,例如一个集群这种提高的一致性意味着您的系统将形成潜在的一致性,可以在此基础上构建新的自动化功能,这种一致性意味着您始终具有的可见性,并且程度地减少了工程团队偏离其目标的机会。
为所有这些数据创建一个地方
一旦您的应用程序显示了所有这些信息,您就可以开始收获,这意味着将所有数据都放在一个地方。这个地方需要具有一些核心功能:
能够处理缩放的数据量
使用户能够根据自己的喜好动态查询数据
使运营团队能够在图表中可视化此数据
允许工程师根据此数据设置警报
收集和利用所有这些数据的过程称为聚合
聚合说起来容易做起来难–这项服务必须具有极强的弹性,如果由于某种原因导致服务中断,则您的服务基本上已经不可用了,您需要确定如何重新打开灯,但是您如何看待服务之间的连接?体系结构中的每个服务都定期与其他服务进行通信,我们如何去创建这种能力呢?好吧,有很多选择。
您可以通过单个代理路由所有流量
过去,一种选择是为所有服务创建一个API层,该API层可以跟踪谁在系统中请求什么。然后可以公开和汇总这些指标,这使您对服务有了基本的了解,但不一定使您能够通过系统跟踪单个事务的进度。这项工作仍在您前面,更不用说使用单个代理的风险!
如果您的API层将停止处理流量,你只是失去了访问所有服务
尽管基础服务运行正常,但您的应用程序都配置为通过一个点,我们需要的是一组分布式代理,但是是一种配置它们的集中式方法,这将是一项巨大的工程工作,对吗?幸运的是,没有。
引入服务网格
服务网格初有点奇怪,服务网格并没有创建所有流量流经的单一故障点,而是包含了微服务架构的现实,您的每个应用程序都具有自己的代理实例,该代理实例捕获此应用程序的所有入站和出站流量,它可以捕获延迟指标,检测错误,权限失败,突然的流量高峰等。
您可以在服务网格中配置其他规则吗?
是的!服务网格的另一部分称为“控制平面”,这是每个服务代理的中央配置存储库,您可以阻止或重新路由流量,如果您希望能够模拟软件中的错误以测试弹性,甚至可以执行故障注入或延迟注入(还记得以前的混乱工程吗?)。
服务网格会跟踪单个请求吗?
虽然服务网格的功能在提供程序之间有所不同,但服务网格在每个请求上都包含会话ID和事务ID是很常见的,这使系统能够将多个不同的请求绑定到一个事务中,服务网格附带之类的工具,这些工具可以自动可视化这些交易并提供软件的实时体系结构图。
如何普遍地实现服务网格?
但并非不可克服,让我们看一下全面的技术,以全面了解您的微服务,微服务带来的新挑战,在微服务架构中,需要跟踪一些新的指标和行为,让我们从查看整体应用程序开始,并查看一些可操作的指标,整体应用程序通常是单个实例(或多个相同的实例),这意味着我们可以将整个“系统”视为包装在该框中,仅遵循一组RAM,CPU和磁盘空间指标。当我们转向微服务架构时,必须同时跟踪许多框。
但是也有一些新的行为
微服务架构的一个共同特征是单个动作可以跨越多个服务,例如,网站上的“付款”按钮可能首先需要授权,然后是审核,然后是库存管理,是付款,微服务哲学主张将这些责任分解为自己的服务,现在,我们不仅要查看实例的运行状况,还需要查看部署的实际运行行为。这意味着在请求遍历各种实例时跟踪它们。这项新技术称为跟踪。
事情会变得有些混乱
引发可观察性挑战的另一个新概念是现代软件系统中的新功能-混乱,混乱描述了系统中定期消失,断开连接或暂时性故障或组件,同样在整体式架构中并未对此进行深入探讨,因为更改很少发生,微服务方法的强大功能之一是能够进行许多并行更改,而这些更改不会相互干扰,一次发生如此多的事情,混乱就成为任何系统的自然属性,如此之多,就产生了一个适当命名的工程实践-混沌工程-鼓励工程师定期将故障注入他们的软件系统。
混乱的服务有些难以监控
如果它消失30秒钟,则该节点是否消失了,或者该进程只是简单地死掉并且在重新启动过程中?网络链接是否已断开?您的可观察性堆栈需要能够对此进行跟踪,那么,您从哪里开始呢?控制微服务的步是数据的表面化和聚合,您需要一种机制来自动开始从系统中捕获指标,而不是抓取单个节点,即使新节点出现或消失也是如此。
标准化实例的创建
首先,您需要创建一个标准的过程,通过该过程可以创建新的虚拟机,一个简单的选择是创建一个机器映像,并将其作为实例的基础,在此计算机映像中,您可以安装日志记录和指标代理,以显示跟踪微服务所需的重要测量,一个更复杂的选项是实施一个平台,在该平台上可以部署所有软件,例如一个集群这种提高的一致性意味着您的系统将形成潜在的一致性,可以在此基础上构建新的自动化功能,这种一致性意味着您始终具有的可见性,并且程度地减少了工程团队偏离其目标的机会。
为所有这些数据创建一个地方
一旦您的应用程序显示了所有这些信息,您就可以开始收获,这意味着将所有数据都放在一个地方。这个地方需要具有一些核心功能:
能够处理缩放的数据量
使用户能够根据自己的喜好动态查询数据
使运营团队能够在图表中可视化此数据
允许工程师根据此数据设置警报
收集和利用所有这些数据的过程称为聚合
聚合说起来容易做起来难–这项服务必须具有极强的弹性,如果由于某种原因导致服务中断,则您的服务基本上已经不可用了,您需要确定如何重新打开灯,但是您如何看待服务之间的连接?体系结构中的每个服务都定期与其他服务进行通信,我们如何去创建这种能力呢?好吧,有很多选择。
您可以通过单个代理路由所有流量
过去,一种选择是为所有服务创建一个API层,该API层可以跟踪谁在系统中请求什么。然后可以公开和汇总这些指标,这使您对服务有了基本的了解,但不一定使您能够通过系统跟踪单个事务的进度。这项工作仍在您前面,更不用说使用单个代理的风险!
如果您的API层将停止处理流量,你只是失去了访问所有服务
尽管基础服务运行正常,但您的应用程序都配置为通过一个点,我们需要的是一组分布式代理,但是是一种配置它们的集中式方法,这将是一项巨大的工程工作,对吗?幸运的是,没有。
引入服务网格
服务网格初有点奇怪,服务网格并没有创建所有流量流经的单一故障点,而是包含了微服务架构的现实,您的每个应用程序都具有自己的代理实例,该代理实例捕获此应用程序的所有入站和出站流量,它可以捕获延迟指标,检测错误,权限失败,突然的流量高峰等。
您可以在服务网格中配置其他规则吗?
是的!服务网格的另一部分称为“控制平面”,这是每个服务代理的中央配置存储库,您可以阻止或重新路由流量,如果您希望能够模拟软件中的错误以测试弹性,甚至可以执行故障注入或延迟注入(还记得以前的混乱工程吗?)。
服务网格会跟踪单个请求吗?
虽然服务网格的功能在提供程序之间有所不同,但服务网格在每个请求上都包含会话ID和事务ID是很常见的,这使系统能够将多个不同的请求绑定到一个事务中,服务网格附带之类的工具,这些工具可以自动可视化这些交易并提供软件的实时体系结构图。
如何普遍地实现服务网格?
今天使用的常见的服务网格在集群中运行,大多数服务网格实现已针对一起使用进行了优化,尽管其中许多确实声称也可以在集群之外工作。
商业联合会数据分析专业委员会