BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Daniel Bryant 关注 636 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2016年2月16日. 估计阅读时间: 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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT