BT

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

请关注于进程,而非单独的微服务

| 作者 Jan Stenberg 关注 34 他的粉丝 ,译者 刘嘉洋 关注 0 他的粉丝 发布于 2016年12月28日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

当使用基于分布式系统的微服务时,成功的关键是关注于分布式进程作为一个整体,而不是关注于微服务本身。Eric Ess在最近的微服务伦敦大会上发表了有关如何在jet.com监控分布式进程的演说,他指出这些服务是最不重要的部分。

在Jet,由用户发起的进程至少需要几个微服务来完成,这被称为是分布式进程。工程总监Ess解释说这是他们在查看系统如何执行用户请求时的一个重要术语。

Jet如今的生产中有大约800个微服务,这是非常复杂的通信拓扑。由于这种复杂性,任何团队都不知道在其范围之外发生了什么,任何个人都不能完全理解系统架构。尽管有这样的复杂性,对于生产中碰到的问题也必须要弄清楚是什么原因导致的,以及它起源于哪个服务之上。

为了克服这个挑战,他们需要完成两个关键任务:

  • 了解单个进程的行为,了解它使用了什么微服务,了解它正在做什么。通过相互交互的微服务,实现对于在系统中不同类型的进程的追踪。
  • 通过明确某个进程的预期工作流来验证进程,然后验证它在执行的时候是否遵循该路径。Ess注意到即使一个进程没有产生任何错误,仍然不能正确地执行。举个例子来说就是A/B测试中的错误,导致进程以错误的方式路由,从而引起了测试数据的缺陷。

Ess注意到如果关注于分布式进程作为一个整体,而不是关注于微服务本身,他们可以忽略服务。这是将进程推向下一服务,并进一步完成进程的一种方式。他们关注的是进程的当前状态和进程发生了什么。

要实现这个必须要改变心态,工程师需要专注于系统中进程的表现,而不是微服务以及当接收消息时应该做出什么反应。团队不应该构建单独的微服务,而是能与其他服务交互的微服务。

有很多可以评估微服务和系统的工具,但不会评估执行的进程或是进程的行为。此外,Jet正在使用F#,由于很难找到合适的针对F#的工具,他们创建了自己的工具箱。

为了提供正在运行的系统及其进程的视图,他们创建了一个通信协议(Dr Orpheus),它提供了一组会进入每条消息的头部元数据,以及当接收到带有元数据消息的时候微服务必须遵守的一些规范。他们还在搭建遥感处理/数据流引擎(XRay),处理一些基本的复杂事件处理(CEP),收集每个微服务在处理消息时发出的数据。工程师和商务人士现在可以监视所有的进程,并且当其偏离设定,不遵循预定义流程,进展过慢或是在某些服务中阻塞的时候做出恰当处理。

明年的微服务伦敦大会预计会在2017年11月6日、7日召开。

查看英文原文Focus on the Process, Not on Individual 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