阅读更多

1顶
0踩

互联网
【编者按】当开发者从微服务架构获得敏捷时,观测整个系统的运行情况成为最大的痛点。在本文,IBM Research展示了如何用Spark对微服务性能进行分析和统计,由OneAPM工程师翻译。

以下为译文

作为一种灵活性极强的构架风格,时下微服务在各种开发项目中日益普及。在这种架构中,应用程序被按照功能分解成一组松耦合的服务,它们通过REST APIs相互协作。通过这个设计原则,开发团队可以快速地不断迭代各个独立的微服务。同时,基于这些特性,很多机构可以数倍地提升自己的部署能力。

然而凡事都有两面性,当开发者从微服务架构获得敏捷时,观测整个系统的运行情况成为最大的痛点。如图1所示,多个服务工作联合对用户请求产生响应;在生产环境中,应用程序执行过程中端到端的视图对快速诊断并解决性能退化问题至关重要的,而应用中多达数十的微服务(每个还对应数百个实例)使得理解这点变得非常困难。信息是如何在服务中穿梭流动的?哪里是瓶颈点?如何确定用户体验的延迟是由网络还是调用链中的微服务引起?



与此同时,在云环境下,企业对基于微服务应用的性能分析工具的需求与日俱增,因此IBM Research正在尝试构建基于平台的实时的性能分析工具,它的性质类似于自动缩放和负载平衡等服务。通过捕获和分析应用中微服务的网络通信,服务按非侵入式的方式进行。在云环境中,服务分析需要处理海量来自实时租户应用的通信追踪,进一步发现应用程序拓扑结构,跟踪当服务通过网络微服务时的单个请求等。由于需要运行批处理和实时分析应用,所以Spark被采用。



图2所示,这里设置了一个简单实验来描述如何利用Spark进行操作分析。整体的环境是一个OpenStack云,一组基于微服务的应用程序运行在不同租户的网络中,还有一个小型Spark集群。在每个Nova计算主机上安装的软件网络tap来捕获通过租户网络内的网络数据包。从租户网络中捕获的Wire-data被投入Kafka bus。同时,在Spark应用中编写连接器,获取Kafka的包并对其进行实时分析。

因此,Spark应用被编写试图来回答下列问题:

1. 对终端用户的请求响应时,信息流是如何通过服务的?在IT Operational Analytics领域,这种分析操作通常被称为“事务跟踪”。

2. 在给定时间窗中,应用中各种微服务之间的调用/被调用关系是什么?

3. 在给定时间口中,应用中各种微服务的响应时间是多少?

根据以上问题,这里开发了2个Spark应用程序:1个实时事务跟踪的应用程序和1个批量分析应用来生成应用的通信图和延迟统计。前者基于Spark流抽象,后者则是一组由Spark作业服务器管理的批处理作业。

跟踪不同微服务之间的事务(或请求流)需要根据应用程序中不同微服务之间的请求-响应对创建因果关系。为了完全不受应用程序,这里将该应用当作一个黑盒。因此不妨认为应用程序中没有利用任何全局唯一请求标识符来跟踪跨微服务的用户请求。

为了追踪上文所提的因果关系,这里采用了Aguilera等人在2003 SOSP论文中提出的一种对黑盒分布式系统进行性能分析的方法,并做细微的修改。对于同步的网络服务,论文提出了一种nesting algorithm,将分布式应用程序表示为一个图,各条边代表节点之间的相互作用。这个nesting algorithm会检查服务之间的调用时间戳,进一步推断其因果关系。简单地说,如果服务A调用服务B,而A在返回响应之前会和服务C通信,那么服务B呼叫C被认为是由A调用B引起的。通过分析一大组消息,这里可以得到服务间有统计性置信度的调用链,并消除可能性较小的选项。论文发表的原始算法旨在离线方式下操作大型的跟踪集。这个用例会修改该算法来操作数据包流的移动窗口,并慢慢逐步完善的拓扑结构推断。

图3显示了事务跟踪应用中作业的部分工作流程。图4显示了在一个租户应用中的事务跟踪,由Spark应用推导。Packet流到达块中,以PCAP格式封装。个体流从Packet流中提取并按滑动窗口分组,即dstreams。在给定的时间窗口内,HTTP请求和请求响应通过对比标准的5个tuple 提取(src_ip、src_port、dest_ip、dest_port, protocol),组成下一个DStream,然后到nesting algorithm中实现的其余处理管道(未在图中显示)。事务跟踪应用输出结果会存储到时间序列数据存储区中(InfluxDB)。



第二个Spark应用是一个标准批量分析应用程序,在给定的时间窗口产生服务调用图以及调用延迟统计。应用作为标准批处理作业被提交到Spark作业服务器。如图5所示,批量分析应用从InfluxDB分离出独立事务跟踪,并将每个独立事务跟踪转换为<vertex,edge>对的列表。列表被聚集成两个RDDS,一个包含顶点列表,而另一个为边列表。顶点列表根据顶点名称进一步解析。最后,应用程序的调用图在有向图中计算,以及图中每条边延迟时间的统计数据。该图是应用程序时间演变图的一个实例,表示给定时间内的状态。图6和7显示调用图和租户应用延迟时间的统计数据,作为该批次的分析作业输出。









通过Spark平台,各种不同类型的分析应用可以同时操作,如利用一个统一的大数据平台进行批量处理、流和图形处理。下一步则是研究系统的可扩展性方面,如通过增加主机线性提升数据提取速度,并同时处理成千上万租户的应用踪迹。后续会继续汇报这方面的进展情况。

原文链接:Real-time Performance Profiling & Analytics for Microservices using Spark(责编/仲浩)
  • 大小: 9.1 KB
  • 大小: 25.6 KB
  • 大小: 22.4 KB
  • 大小: 19.7 KB
  • 大小: 12.7 KB
  • 大小: 14 KB
来自: OneAPM
1
0
评论 共 2 条 请登录后发表评论
2 楼 田梦桦 2015-11-21 14:48
小弟学士不够,看的好累,看不懂
1 楼 mangguo 2015-11-20 15:10
推荐大家一本书,机械工业出版社出版的经典《spark大数据处理》:http://www.hubwiz.com/books

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 使用 Spark 进行微服务的实时性能分析

    在本文,IBM Research 展示了如何用 Spark 对微服务性能进行分析和统计,由 OneAPM 工程师编译整理。作为一种灵活性极强的构架风格,时下微服务在各种开发项目中日益普及。在这种架构中,应用程序被按照功能分解成一...

  • 怎么实现微服务的实时性能分析?

    在本文,IBM Research 展示了如何用 Spark 对微服务性能进行分析和统计,由 Cloudinsight 工程师编译整理。引言作为一种灵活性极强的构架风格,时下微服务在各种开发项目中日益普及。在这种架构中,应用程序被按照...

  • [Spark]二Spark性能调优|Spark任务监控|程序调优|资源调优

    SparkUI使用在运行Spark应用程序时,默认会在Driver节点的4040端口启动WebUI服务,通过此WebUI可对Spark的应用程序的Job划分、Stage划分、Task执行缓存的使用等各个方面进行了监控。在执行Shuffle操作时,Map端使用...

  • 使用 OpenCV、Kafka 和 Spark 技术进行视频流分析

    本文中的示例应用使用开源的技术来构建这样的系统,这些技术包括 OpenCV、Kafka 和 Spark。另外,还可以使用 Amazon S3 或 HDFS 进行存储; 该系统包含了三个主要的组件:视频流收集器(Video Stream...

  • 【微服务】springboot整合kafka-stream使用详解

    kafka stream使用详解

  • 微服务架构下服务注册与发现与治理机制

    实时收集服务调用日志,分析、汇总、存储和展示,方便开发和运维人员进行实时诊断; 执行服务运行时治理方案,包括限流降级、路由、统一配置等在线调整。 参考书籍、文献和资料: 【1】郑天民. 微服务设计原理与...

  • 微服务架构组件分析

    微服务架构组件 1、 如何发布和引用服务 服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。 RESTful API 主要被用作 HTTP 或者 HTTPS 协议...

  • Spark on Kubernetes 与 Spark on Yarn 不完全对比分析

    它擅长于批处理和实时流处理,并支持机器学习、人工智能、自然语言处理和数据分析应用。随着 Spark 越来越受欢迎,使用量越来越大,狭义上的 Hadoop (MR) 技术栈正在收缩。另外,普遍的观点和实践经验证明,除了...

  • 重新定义分析 - EventBridge 实时事件分析平台发布

    EventBridge 实时事件分析平台依托基于事件的实时处理引擎,提供数值检索、可视化分析、多组态分析、事件轨迹、事件溯源和 Schema 管理等能力。EventBridge 实时事件分析平台具有无入侵、无需数据上报,低成本,操作...

  • 流式数据处理中的微服务架构:使用Kubernetes和ApacheFlink

    作者:禅与计算机程序设计艺术 随着业务数据的海量增长、各种新型设备、软件和互联网应用...如何在大数据平台上部署分布式、弹性的微服务架构,成为关键。本文将介绍基于Kubernetes和Apache Flink的微服务架构。 Apa

  • 微服务必备的调用链分析,2w字长文解析技术细节!

    很多同学表示,对于微服务中常用的调用链功能的原理,感觉很模糊。本文将真正的从零开始,介绍调用链客户端开发的一些要点。让你瞬间拥有APM开发经验。随着微服务架构的流行,一次请求往往需要涉及...

  • Netflix云原生微服务设计分析

    为了控制它的级联故障,每个微服务都使用Hystrix进行熔断,由Hystrix将其与调用进程隔离。调用结果可以缓存在本地内存中,以保证那些关键的低延迟请求。 微服务可以保存获取的数据。 微服务可以将用于跟踪用户活动或...

  • 微服务划分及部分解读

    与传统的单体式架构不同,微服务架构提倡将一个单一的应用程序拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间使用轻量级通信机制通常是 HTTP RESTFUL API)进行通讯。通常情况下,这些小型...

  • 基于S7-200 PLC与MCGS组态的洗衣机控制系统设计与实现

    内容概要:本文详细介绍了利用西门子S7-200 PLC和MCGS组态软件构建洗衣机控制系统的全过程。首先阐述了IO分配规则,明确各输入输出点的功能,如水位检测、温度测量、电机控制等。接着展示了梯形图编程的具体方法,解释了如何通过梯形图实现洗衣机的基本操作流程,包括启动、停止、水位控制、正反转洗涤、排水和脱水等功能。此外,文中还讨论了接线图的设计要点,强调了硬件连接的安全性和可靠性。最后,介绍了MCGS组态画面的设计,包括动态效果展示、报警机制以及人机交互界面的优化。 适合人群:对PLC编程和工业自动化感兴趣的工程师和技术人员,尤其是希望深入了解S7-200 PLC和MCGS组态软件的实际应用者。 使用场景及目标:适用于需要设计和实施小型家电或类似设备自动化控制系统的场合。目标是帮助读者掌握PLC编程技巧,理解工业自动化控制系统的构建过程,提高实际项目开发能力。 其他说明:文中提供了丰富的调试经验和常见问题解决方案,有助于读者在实践中少走弯路。同时,通过具体的案例分析,使理论知识更加贴近实际应用。

  • COMSOL中基于保角变换的自聚焦光束与Talbot效应的光学仿真研究

    内容概要:本文详细介绍了如何利用COMSOL进行光学仿真,重点探讨了保角变换在操控光路方面的应用,特别是自聚焦光束和Talbot效应的建模。文中首先解释了保角变换的基本概念及其物理意义,然后通过具体实例展示了如何在COMSOL中设置保角变换、定义材料参数以及配置边界条件。对于自聚焦光束,作者强调了非线性材料模块的应用,特别是在处理强光引起的折射率变化时的关键步骤。而对于Talbot效应,则着重讨论了周期性边界条件的设置和后处理分析方法。此外,文章还分享了一些实用技巧,如参数化扫描、网格优化和MATLAB联动分析等。 适合人群:具有一定光学仿真基础的研究人员和技术人员,尤其是对COMSOL软件有一定了解并希望深入探索非线性光学现象的用户。 使用场景及目标:① 使用COMSOL进行自聚焦光束和Talbot效应的建模与仿真;② 掌握保角变换在光学仿真中的应用技巧;③ 提升对非线性光学现象的理解和仿真能力。 其他说明:本文不仅提供了详细的建模指导,还包括了许多实用的调试技巧和注意事项,帮助读者更好地理解和应用相关技术。

  • 产品PRD需求文档模板

    产品PRD需求文档模板

  • COMSOL模拟针尖刺穿表皮细胞:探究电穿孔技术中的电场与物质传输机制

    内容概要:本文详细介绍了使用COMSOL软件进行针尖刺穿表皮细胞的数值模拟,探讨了电穿孔技术中电场分布与物质传输的关系。首先,通过参数化建模构建了圆锥形针尖和细胞结构,确保针尖能够有效穿透细胞膜。然后,设置了多物理场耦合,包括电流传导和稀物质传递,使电场和浓度场相互作用。文中特别强调了细胞膜的薄层边界条件和电场增强扩散系数的设定,以及如何通过边界条件模拟电穿孔过程。此外,还讨论了求解器配置、网格划分和结果后处理方法,展示了电场流线和浓度云图的可视化结果。最终,验证了模型的可靠性,并提出了进一步的研究方向,如加入温度场和针尖振动参数。 适合人群:从事生物医学工程、电穿孔技术和药物递送系统研究的专业人士,尤其是有一定COMSOL使用经验和数值模拟基础的研究人员。 使用场景及目标:适用于希望深入了解电穿孔技术中电场与物质传输机制的研究人员,帮助他们优化微针给药系统的参数设计,提高药物递送效率。 其他说明:本文提供了详细的建模步骤和技术细节,有助于读者快速掌握COMSOL在生物电穿孔领域的应用。同时,文中提到的一些技巧和注意事项可以避免常见的数值模拟错误,提高模拟精度。

  • MATLAB实现冷热电气多能互补微能源网的鲁棒优化调度模型

    内容概要:本文详细探讨了基于MATLAB的冷热电气多能互补微能源网的鲁棒优化调度模型。首先介绍了多能耦合元件(如风电、光伏、P2G、燃气轮机等)的运行特性模型,展示了如何通过MATLAB代码模拟这些元件的实际运行情况。接着阐述了电、热、冷、气四者的稳态能流模型及其相互关系,特别是热电联产过程中能量的转化和分配。核心部分在于构建了考虑经济成本和碳排放的优化调度模型,利用MATLAB优化工具箱求解多目标优化问题,确保系统在经济性和环保性之间达到最佳平衡。此外,文中还讨论了处理风光出力预测误差的方法,采用了鲁棒优化策略应对不确定性,并通过实例验证了模型的有效性。 适合人群:从事能源系统研究、优化调度领域的科研人员和技术开发者,尤其是熟悉MATLAB编程并关注低碳发展的专业人士。 使用场景及目标:适用于希望深入了解综合能源系统优化调度机制的研究者,旨在帮助他们掌握如何在MATLAB环境下构建和求解复杂的多能互补优化调度模型,以实现节能减排和经济效益的最大化。 其他说明:文章不仅提供了详细的理论推导和代码实现,还分享了许多实践经验,如非线性约束处理、多能流耦合约束的建模技巧等,对于实际工程应用具有重要指导意义。

  • STM32 Nucleo-64 开发板用户手册

    STM32 Nucleo-64 开发板用户手册

Global site tag (gtag.js) - Google Analytics