11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

Adrian Cockcroft 谈分析微服务的响应时间分布

  • 2016-02-15
  • 本文字数:1808 字

    阅读完需:约 6 分钟

在德国柏林举办的 microXchg 大会上,Adrian Cockcroft 进行了一场名为“分析微服务的响应时间分布”的演讲,他为听众展现了如何结合使用由他设计的Spigo 微服务架构模拟工具以及在线的Guesstimate Monte Carlo 方法工具,实验性地模拟复杂的微服务系统的请求响应时间,并以可视化的方式进行展现。

Cockcroft 是来自 Battery Ventures 的一位 technology fellow,他在这次演讲的开场部分讲述了微服务平台当前所面对的挑战,包括对大规模服务的管理,以及分析(并理解)跨服务的请求与数据流。随后,他为听众展示了“使用 Go 语言编写的模拟协议交互”工具(即 Spigo ),这一工具可实现基于微服务的数据流的建模工作以及可视化展现。

Spigo 可用于对复杂的架构进行模拟,可在构建该架构之前或之后使用。通过一个表现系统特性的 JSON 文件(Spigo 以一种较松散的方式遵循 Netflix 所创建的 OSS 框架与工具),可以将被模拟的架构加载到工具中。模拟过程是通过一个基于 Go 语言的应用实现的,而最终的架构将通过 D3.js 这个 JavaScript 库展现在一个 web 页面中,以达到可视化的目的。服务之间的通信是通过 Go管道(channel)模拟的,最终的流量跟踪信息将被记录保存下来以用于分析。Cockcroft 表示,Spigo 的目标是最终实现对真实的监控工具与日志记录工具进行压力测试。

系统中产生的流量追踪信息将以一种可兼容 Zipkin 的格式进行记录。Zipkin 是一种数据流可视化与调式工具,它最初由 Twitter 工程团队所开发,如今已被 Adrian Cole 迁移为“ Open Zipkin ”项目,成为一种追踪信息注解的通用格式。Zipkin 不仅能够以图形方式展现架构中的服务与通信的依赖关系,还能够展现每个访问的数据流。

Cockcroft 为参加 microXchg 的听众现场展示了一系列架构示例在 Spigo 中的可视化展现,这其中包括了一个受到 Netflix 启发的“单一区域的 Riak IoT 实现”,以及“多区域的 Riak IoT”的模拟,通过它建模得到的架构能够从物联网(IoT)设备中获取数据、以流的方式提供处理后的数据、并提供一个用于分析的终结点。

Cockcroft 提到,许多微服务架构的开发者会经常对于请求的响应时间进行预测,这些请求将通过多个服务以及网络连接,才能够生成响应,并最终将数据返回给用户。通常来说,独立服务的响应时间是可以确定的,但由于每个服务的时间会存在一些随机的变数,因此很难有效地计算多个服务的总体响应时间,并将结果限定在一个可接受的公差之内。在具有极高复杂度的系统中,这一点显得尤其困难,即使以最小及最大响应时间表示结果,也会因为变数太大,而使得结果没有实际意义。

在某些其他领域中,例如机械工程及金融领域已经通过 Monte Carlo 方法解决了这种“公差叠加”问题。Cockcroft 为听众讲解了他通过在线的 Guesstimate 工具,为一个简单的存储功能的后端 web 服务生成一种 Monte Carlo 模拟的过程,该 web 服务使用了 memcached、Apache Web 服务器以及 MySQL。系统中每个服务的响应时间范围(以及常用的分布参数)都可以进行更改,让建模过程能够应对例外情况的发生。比方说,该模型能够模拟出 memcached 缓存是否命中,也能够模拟让 MySQL 必须访问磁盘以响应某个查询的情形。

演讲的下半部分对于 Spigo 工具近期发布的 beta 版本的功能进行了分析,新功能允许导出服务的响应时间分布结果,并将结果用于一个经过修改的 Guesstimate 的 alpha 版本中。 goguestimate 工具之前已经开发了某些功能,能够生成可上传至 Guesstimate 的分布结果,Spigo 的新功能就是基于这一点所创建的。Spigo 还引入了监控点功能(它使用了由 Peter Bourgon 开发的 go-kit 指标框架),它能够获取必要的数据,从而对于真实系统中的服务的响应时间分布进行建模。Cockcroft 最后提醒听众,Spigo 近期所做的工作是基于听众在大会上的反馈而计划的,它还需要进一步的改进才能够进行广泛的应用与扩展。

Cockcroft 在演讲的结尾部分进行了几个现场展示。他表示:对于微服务架构、以及服务间的访问流的模拟对于复杂系统的设计、调试以及优化能够起到很大作用。

Spigo 工具很快就将被重命名为“simianviz”,如果读者有兴趣学习基于这一项目的开发,可以关注 Spigo 的 Github 库,以及 simianviz 的 Twitter 帐号。可以在 microXchg 的 Youtube 频道上找到 Adrian 的演讲“分析微服务的响应时间分布”的视频,也可以在SlideShare 上找到该演讲的幻灯片

查看英文原文: Adrian Cockcroft on Analyzing Response Time Distributions for Microservices

2016-02-15 18:001952
用户头像

发布了 428 篇内容, 共 162.7 次阅读, 收获喜欢 33 次。

关注

评论

发布
暂无评论
发现更多内容

MySQL next-key lock 加锁范围是什么?

程序员小航

MySQL 索引 数据库锁 主键

架构实战营 - 模块 5- 作业

请弄脏我的身体

架构实战营

设计微博系统中”微博评论“的高性能高可用计算架构

Vincent

架构训练营

架构实战营 - 模块5- 作业

笑春风

Kubernetes手记(3)- 核心组件/附件

雪雷

k8s 6月日更

模块五作业 - ”微博评论“的高性能高可用计算架构

张大彪

微服务架构实施原理详解

xcbeyond

微服务 6月日更

记一次 go-micro 服务异常退出问题的根因分析

ccx

【Flutter 专题】111 图解关乎 SQL 数据库的二三事 (二) 之【小封装】

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

公司如何做计划?

石云升

创业 职场经验 6月日更

使用 Docker 安装并连接 MySQL

程序员小航

MySQL Docker

大数据分析与运营(一)

soho

架构实战营 - 模块 05 作业

架构实战营

网络攻防学习笔记 Day37

穿过生命散发芬芳

网络攻防 6月日更

区块链拓宽实验艺术边界 新技术如何重塑现代美学想象?

CECBC

我不信有Java程序员没犯过这10个SQL错误

北游学Java

Java sql

大数据分析与运营(二)

soho

揭秘苹果应用审核团队(史上最全版)

37手游iOS技术运营团队

ios apple Apple Developer iOS Developer 苹果退款

Crontab中文表达式解析

Java crontab

3种面向“对象”编程,你是哪一种?

凌晞

架构 研发管理

架构实战营 模块五:课后作业

Ahu

架构实战营

区块链应用操作员国标出台 相关课程及教材正在编制中

CECBC

【LeetCode】左旋转字符串Java题解

Albert

算法 LeetCode 6月日更

架构训练营作业5

梦寐凯旋

架构训练营

用实例带你了解 MySQL 全局锁

架构精进之路

MySQL 锁机制 6月日更

微博评论高性能高可用计算架构设计

Hesher

架构 Architecture 架构实战营

中小银行数字化转型的路径和建议

CECBC

web ssh解决方案——WGCLOUD

王逅逅

zabbix linux运维 运维监控

看来,MySQL next-key lock 的 bug 并没有被修复!

程序员小航

MySQL 数据库锁

MySQL普通索引的加锁

程序员小航

MySQL 数据库锁

架构训练营模块5作业

Neil43

架构训练营

Adrian Cockcroft谈分析微服务的响应时间分布_DevOps_Daniel Bryant_InfoQ精选文章