写点什么

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

2016 年 12 月 27 日

当使用基于分布式系统的微服务时,成功的关键是关注于分布式进程作为一个整体,而不是关注于微服务本身。 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

2016 年 12 月 27 日 18:001024
用户头像

发布了 217 篇内容, 共 52.4 次阅读, 收获喜欢 70 次。

关注

评论

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

C++ 流插入和流提取运算符的重载

小林coding

c++ 编程

央行发行的数字货币会带来哪些变化?

石云升

区块链 数字货币 DECP

Go语言专家测试,80%的人第一题就挂了!

博文视点Broadview

go 云原生 评测

C++ 赋值运算符‘=‘的重载(浅拷贝、深拷贝)

小林coding

c++ 编程 浅拷贝和深拷贝

SpringCloud(Netflix)-技术专题-Ribbon的基本使用

李浩宇/Alex

Java 技术 SpringCloud

高效程序员的45个习惯:敏捷开发修炼之道(2)

石云升

读书笔记 敏捷开发 对事不对人 欲速则不达

最佳实践:使用阿里云CDN加速OSS访问

阿里云Edge Plus

CDN

C++ 运算符重载的基本概念

小林coding

c++ 编程

云计算的可信新边界:边缘计算与协同未来——【两万五千字长文】

华为云开发者社区

云计算 云原生 5G 边缘计算 云服务

使用 Golang 和 HTML5 开发一个 MacOS App

郭旭东

go macos

区块链:在发展的同时,准备好你的产品。

石云升

区块链 DCEP 创新

微服务-技术专题-初步介绍服务发现

李浩宇/Alex

Java 技术 微服务

排序算法一(冒泡排序、选择排序、插入排序)

xcbeyond

Java 算法 冒泡排序 选择排序 插入排序

微服务-技术专题-使用 API 网关构建微服务

李浩宇/Alex

微服务

C++ 自增、自减运算符的重载和性能分析

小林coding

c++ 编程 运算符

2. 整体把握 CocoaPods 核心组件

Edmond

ruby ios swift CocoaPods 包管理工具

知识点梳理:聊聊iOS SDK数据采集那点事儿

易观大数据

职教黄金时代,河南如何继续“乘风破浪”?

InfoQ_967a83c6d0d7

排序算法二(归并排序、快速排序、希尔排序)

xcbeyond

Java 算法 快速排序 归并排序 希尔排序

SpringMVC-技术专题-支持可版本管理的Restful接口

李浩宇/Alex

springmvc

Linux 平均负载高了怎么办?

小林coding

Linux 问题处理 linux命令

经济优势再显,江苏如何通过职教打造人才高地?

InfoQ_967a83c6d0d7

Volcano:带你体验容器与批量计算的碰撞的火花

华为云开发者社区

Kubernetes 容器 分布式 Volcano 批量计算

Java NIO 是 NIO么?

soolaugust

Java io nio

微服务架构的整套解决方案

xcbeyond

架构 微服务 IT建设

白鹭引擎助力《迷你世界》研发团队开发3D小游戏版

DT极客

C++ 手把手教你实现可变长的数组

小林coding

c++ 编程 数组

C++ 模板常见特性(函数模板、类模板)

小林coding

c++ 编程 模板方法

Java-技术专题-final关键字

李浩宇/Alex

企业应用开发或迎新趋势 “低代码平台”备受追捧

爱极客侠

C++ static 与 const 的认识

小林coding

c++ 编程 static关键字

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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