报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

生产环境中保持微服务井然有序的五大措施

  • 2016-06-22
  • 本文字数:1569 字

    阅读完需:约 5 分钟

本月初,Takipi 公司的 Alex Zhitnitsky 撰写了生产环境中保持微服务井然有序的五大措施一文(好吧,“井然有序”这个词并非他的原话)。他结合我们几个月前报道过的小组讨论成果与用户反馈,向大家介绍了在生产环境中使用微服务可能遇到的主要问题以及这些问题的解决方法。这些内容的侧重点在于分布式调试,以及为了使其成为一种易于驾驭的方式所能采取的方法。他谈到的第一个问题是监控:

监控是一种明智的做法。系统会逐渐变得高度碎片化,为了对系统的运行状况获得更全面的了解,人们对集中式监控和日志会产生越来越高的需求。

Alex 谈到了在最新一期播客节目中所涉及的一个场景,这个场景中需要对有问题的版本进行回滚,这就要确定相应的微服务,并确定进行回滚可能会对其他服务产生的影响。他认为:

结论 1:如果你认为对单层(Monolith)体系结构进行监控已经很困难,微服务的监控要比这个难十倍,需要事先做好极为充分的规划和更大的投入。

对于第二个问题,Alex 谈到了我们已经从 Sam Newman Adrian Cockcroft 等人处多次听到的一种观点:

单层体系结构的日志文件很可能已经分散在不同位置,就算心里想着“单层”,但最终依然可能会使用多个不同技术层,并可能将日志保存在不同地方。微服务则会让日志进一步分散。现在如果需要调查有关某些用户事务的场景,为了理解实际发生的一切,你可能需要从不同位置获取所有服务的全部日志。

这就产生了他的下一个结论:

结论 2:微服务的目标就是将所有东西拆分为零散组件。但这种做法的副作用之一是运维规程和监控工作也需要分别应用给每个服务,进而导致无法发挥“整体系统”的强大之处。通过恰当的工具以统一方式管理这一切已成为此时最大的挑战。

第三个问题引述自 Leslie Lamport 对于分布式系统的定义中的一句话:“分布式系统是指某台我从未听说过的计算机也能导致我的程序崩溃的体系。”或者按照 Alex 的说法:“一个服务引发的问题,会造成其他地方出现连锁反应。”那么这个结论也就不言自明了:

结论 3:对于单层体系,遇到问题后通常你会知道需要调查哪些方面,微服务使得人们难以确定问题根源以及要从哪里拿到所需数据。

在分布式系统中,“确定问题根源”这一需求进一步产生了下个问题,此时日志可以提供一定的帮助,但日志只是解决方案的一部分:

大部分情况下,你寄希望于日志文件中获得的前几位变量数据,但这些可能根本无法解决你的问题。这些信息只能让你继续追查下一条线索,进而需要进一步深入这样的“魔法世界”,继续运行更多日志语句。随后部署改动,期待着问题能够重现或永不再现,因为… 有时候仅仅添加一条日志语句似乎就能解决问题。这类似于墨菲法则的一次糟糕的大逆转。

这也产生了我们的下一个结论:

结论 4:如果微服务中一个问题的根源涉及到多个服务,就很有必要使用一个集中的根源检测工具。

Alex 提到的最后一个问题是版本管理和服务之间的循环依赖。同时他也提到了在检查依赖性时需要注意的两个问题。

1,如果服务之间存在循环依赖,一旦某个事务卡在循环中,就很容易产生分布式堆栈溢出错误。2,如果两个服务共享同一个依赖项,并且使用会影响到这些服务的方式更新了其他服务的 API,那么就需要同时对这三个服务进行更新。这就造成了另一种问题,例如:要先更新哪个服务?如何确保所有服务能顺利地完成更新?

相互独立的服务越多意味着可移植性越高,不同服务可以使用互不干涉的发布周期,但同时这样做也会增加整个系统的复杂度,尤其是在可再生性(Reproducibility)方面。那么这就引出了我们的第五个,也是最后一个结论:

结论 5:在微服务体系结构中,更容易产生依赖性问题所导致的错误。

很高兴看到在生产环境中运用微服务的人就此展开的讨论,更让人高兴的是,很多人已经就其中的一些核心问题和解决这些问题的常见方法达成了一致。

查看英文原文 Five Ways to Not Mess up Microservices in Production

2016-06-22 19:002944
用户头像

发布了 283 篇内容, 共 112.3 次阅读, 收获喜欢 62 次。

关注

评论

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

如何成功养成一个TikTok账号?

Ogcloud

TikTok tiktok运营 TikTok养号 tiktok起号

Bartender 5 for Mac智能管理菜单栏的神器

小玖_苹果Mac软件

快速记笔记软件SideNotes for mac 1.4.15激活版

小玖_苹果Mac软件

鸿蒙Flutter性能调优之性能分析定界

flfljh

职场办公常用的5款AI软件,每一个都值得推荐!

职场工具箱

效率工具 办公软件 AI软件 AIGC AI生成PPT

HarmonyOS NEXT基础入门

flfljh

Ableton Live 11 Suite for Mac 强大的音乐创作与表演工具

小玖_苹果Mac软件

鸿蒙Flutter怎样调试dart代码

flfljh

不愧是字节跳动,今年这薪资...属实羡慕了!

程序员高级码农

Java 程序员 java面试 字节 Java面试题

【HarmonyOS NEXT】ArkTs数据类型解析与使用

冉冉同学

鸿蒙 HarmonyOS 鸿蒙应用开发 鸿蒙原生应用开发 HarmonyOS NEXT

鸿蒙Flutter环境相关问题解决方法

flfljh

鸿蒙基础入门01

flfljh

2024年用户喜爱的Top5云电脑排名!没想到黑马是这家

三掌柜

测评对比

江苏省推出人工智能通识课,和鲸Heywhale重磅上线课程+平台+资源一体化解决方案

ModelWhale

Python 人工智能 大数据 AI

【教程】任务管理(高级)打造完整的项目管理平台

NocoBase

开源 项目管理 低代码 教程 任务管理

被裁后,狂刷大牛分享的607页JUC源码分析笔记,立马拿蚂蚁offer

程序员高级码农

Java 源码 程序员 java面试 Java后端

火爆Boss直聘的百页SpringBoot原理实战+面试题助你狂拿千份offer

程序员高级码农

Java 编程 程序员 java面试 Java面试题

Capture One 23 Pro for Mac专业RAW照片处理利器

小玖_苹果Mac软件

出海电商的关键:原生IP的重要性解析

Ogcloud

海外原生IP 海外IP 海外直播IP 原生IP 海外IP代理

如何理解符号引用和直接引用?

王磊

鸿蒙+next+封装轻量级缓存工具PreferencesUtil

flfljh

CosyVoice 2.0 支持双向流式语音合成;无问芯穹开源全模态理解端侧模型丨RTE 开发者日报

声网

【HarmonyOS NEXT】ArkTs函数、类、接口、泛型、装饰器解析与使用

冉冉同学

鸿蒙 HarmonyOS 鸿蒙应用开发 鸿蒙原生应用开发 HarmonyOS NEXT

非凸科技荣获2024“创·在上海”国际创新创业大赛优胜企业奖

非凸科技

优化永不止步:TinyVue v3.20.0 正式发布,更美观的官网UI,更友好的文档搜索,更强大的主题配置能力~

OpenTiny社区

组件库 OpenTiny 前端开源

观测云亮相 Doris Summit,展示流式聚合创新技术

观测云

数据库性能优化

产品经理怎么进行用户画像分析?这10个模板案例别错过!

职场工具箱

产品经理 办公软件 AIGC 用户画像分析 绘图软件

关键帧动画

flfljh

生产环境中保持微服务井然有序的五大措施_DevOps & 平台工程_Mark Little_InfoQ精选文章